?? main.lst
字號:
C51 COMPILER V7.20 MAIN 10/13/2008 13:13:43 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
line level source
1 //main.c 可能中文文件夾下有問題 //電機輸出應該屏蔽其他電機異動
2 //風扇 12v 0.37A 燈 12mA 12V 門磁 0.67A 24V
3 #include "AT89X51.h"
4 #include "main.h"
5 #include <intrins.h>
6 #include <absacc.h>
7 //#include <reg52.h>
8 #define uchar unsigned char
9 #define uint unsigned int
10
11 BYTE workState = HALT_STATUS; //工作狀態
12
13
14 //輸出數組
15 uchar ACK_BUF[LENMAX]; //Command in length=3 數據(命令) 接收 緩沖區
16 uchar DLE_BUF[DLELENMAX]; //state out length=3 數據(狀態) 發送 緩沖區
17 //uchar TRUE_LEN=0; //接收字符個數統計變量
18 uchar IN_LENGTH;
19 bit first_DLE=0;
20
21 uchar CMDIN[LENMAX]; //Command in length=3 數據(命令) 接收 緩沖區
22
23 uchar count=0; //接收字符個數統計變量
24 bit RECE_flag=0; //接收標志位(1=成功接收)
25 //bit RECE_bak=0; //接收標志位(1=成功接收) 長時間保留位
26 //bit SEND_flag=0; //發送標志位(1=一次發送完畢,接下去等待 成功接收了)
27 //bit timerOver; //=1:定時器時間到了 標志位
28 //uint timeCounter=0;
29
30 bit timerHap; //=1:定時器時間到了 標志位
31 uint counter=0; //定時器循環次數計數器
32
33
34 extern BYTE bdata outputByte2; //XBYTE[0x1000];
35 extern bit OLT8; //控制投幣口 開 關
36 extern bit OLT9; //控制維修燈 亮 滅
37 extern bit OLTA; //控制出卡處燈 亮 滅
38 //extern bit OLTB; //
39 extern bit OLTE; //控制fan1 亮 滅
40 extern bit OLTF; //控制fan2 亮 滅
41
42 uchar pwm1; //調制脈寬計數
43 bit fan1=0; //風扇1
44
45 uchar pwm2; //調制脈寬計數
46 bit fan2=0; //風扇2
47
48 uchar pwm3; //調制脈寬計數
49 bit cardlamp=0; //出票口燈
50
51 uchar pwm4; //調制脈寬計數
52 bit mainlamp=0; //維修處燈
53 //time0
54 #define RELOAD_HIGH 0xD8
55 #define RELOAD_LOW 0xF0
C51 COMPILER V7.20 MAIN 10/13/2008 13:13:43 PAGE 2
56 //time2
57 #define LD_T2H 0xFF
58 #define LD_T2L 0x9B
59 //FC17 1ms
60 //FE0C 0.5ms
61 //FFCD 50us
62 //FF9B 100us
63 /**********************************************************************
64 ** 函數名稱: init_time2
65 ** 功能描述: 初始化定時器2 Door
66 ** 輸 入: 無
67 ** 輸 出: 無
68 ** 全局變量: 無
69 ** 調用模塊: 無
70 ***********************************************************************/
71 void INIT_TIME2(void)
72 {
73 1 T2CON=0x00; //16位自動重載定時器
74 1 T2MOD=0x00; //DCEN=0,定時器向上計數
75 1 TH2=0xFF; //
76 1 TL2=0xFF; //上頂點,加計數到該點了 就溢出
77 1 RCAP2H=LD_T2H;//
78 1 RCAP2L=LD_T2L;//下位點,向上計數的開始點
79 1 ET2=1; //使能定時器2中斷
80 1 EA = 1;
81 1 TR2=1; //開始定時
82 1 }
83 /**********************************************************************
84 ** 函數名稱: init_time0
85 ** 功能描述: 初始化定時器0 com
86 ***********************************************************************/
87 void INIT_TIME0(void)
88 {
89 1 PX0=1; //
90 1 PX1=1; //外部中斷01位高于定時器0的中斷級別
91 1 TMOD=TMOD|0x01; //定時器0在模式1下工作
92 1 TL0=RELOAD_LOW;//0x00; //定時器每50ms產生一次溢出
93 1 TH0=RELOAD_HIGH;//0x4C; //自動重裝的值
94 1 ET0=1; //使能定時器0中斷
95 1 EA=1; //使能總中斷
96 1 TR0=1; //開始計時
97 1 }
98 void tick_int(void) interrupt 1 //using 0 //定時器
99 {
100 1 TR0=0; // 停止定時器
101 1
102 1 P2_0=!P2_0; //先不喂狗
103 1
104 1 if(counter > 0)
105 1 {
106 2 counter--;
107 2 if(counter == 0) timerHap=1;
108 2 }
109 1
110 1 TH0=RELOAD_HIGH; // 設置重裝值
111 1 TL0=RELOAD_LOW;
112 1 TR0=1; // 重新啟動定時器
113 1 }
114
115
116 /**********************************************************************
117 ** 函數名稱: TIME2 定時器中斷益處程序--
C51 COMPILER V7.20 MAIN 10/13/2008 13:13:43 PAGE 3
118 ** 全局變量:
119 ***********************************************************************/
120 void timer2 (void) interrupt 5
121 {
122 1 TR2=0; //關定時
123 1 P2_0=!P2_0; //先不喂狗
124 1
125 1 /*if(timeCounter > 0)
126 1 {
127 1 timeCounter--;
128 1 if(timeCounter == 0) timerOver=1;
129 1 }*/
130 1
131 1 if(fan1)
132 1 {
133 2 if(pwm1<=PWM50)//導通時間 1-8
134 2 {
135 3 OLTE = 0;
136 3 }//正方向 轉
137 2 else
138 2 {
139 3 if(pwm1<PWM100) //關斷時間 9-10
140 3 {
141 4 OLTE = 1;
142 4 }//停
143 3 else
144 3 { pwm1=0; }
145 3 }
146 2 pwm1++;
147 2 }
148 1 else { OLTE = 1; } //停
149 1
150 1 if(fan2)
151 1 {
152 2 if(pwm2<=PWM50)//導通時間 1-8
153 2 {
154 3 OLTF = 0;
155 3 }//正方向 轉
156 2 else
157 2 {
158 3 if(pwm2<PWM100) //關斷時間 9-10
159 3 {
160 4 OLTF = 1;
161 4 }//停
162 3 else
163 3 { pwm2=0; }
164 3 }
165 2 pwm2++;
166 2 }
167 1 else { OLTF = 1; } //停
168 1
169 1 /*if(mainlamp)
170 1 {
171 1 if(pwm4<=PWM50)//導通時間 1-8
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -