📄 main.lst
字号:
C51 COMPILER V6.02 MAIN 04/04/2001 08:36:59 PAGE 1
C51 COMPILER V6.02, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN C:\COMP5161\MAIN.OBJ
COMPILER INVOKED BY: C:\COMP5161\C51.EXE C:\COMP5161\MAIN.C DB OE LA CODE OT(5)
stmt level source
1 #include <absacc.h>
2 #include <reg51.h>
3
4 #define uchar unsigned char
5 #define uint unsigned int
6 #define LedPort XBYTE[0xC000]
7 #define SwitchPort XBYTE[0xC800]
8
9 bit fscf,crcf,tsn,rsn,tfs,rfs,wxyf,jscf,stno,secflg;
10 bit mute,sound,fireflag,startflag,faultflag,negs;
11 uchar data crc1,crc2,cfcs,dest,netno,
12 b2btime,wxycount,sectimer,bcount;
13
14 uchar data keynum,keyfirst,imgcode;
15
16 uint data rpt,spt,tpt,onlpt,onlrpt,rrpt;
17
18 uchar data month,day,hour,min,sec;
19
20 uchar xdata firenum=0,firefirst=0,firecur=0,faultnum=0,faultfirst=0,faultcur=0,startnum=0,startfirst=0,sta
-rtcur=0 ;
21
22 sbit WDT = P1^6; /*WDT复位线 */
23 sbit DRV485 = P1^4; /*485发送有郊控制线 */
24 sbit SpCtr = P1^5;
25 sbit BkLCtr = P1^7;
26
27 /*uchar xdata TrBuf[0x400];*/ /*发送缓冲区,1k个单元 */
28 /*uchar xdata ReBuf[0x400];*/ /*接收缓冲区,32个单元 */
29 uchar xdata KeyBuf[0x10]; /*键值缓冲区,16个单元 */
30 uchar xdata Fire[256][32];
31 uchar xdata Fault[256][32];
32 uchar xdata Start[256][32];
33
34 extern uchar data zkpb;
35
36 extern void RS485(void); /*485接收缓冲区处理子程序*/
37 /*extern void SW485(uchar,uchar);*/ /*向发送缓冲区装配信息帧*/
38 extern void SIOT(void); /*UART中断处理子程序*/
39 extern void Delay(uchar); /*延时子程序*/
40 extern void Clear(void);
41 extern void IntLcd(void);
42 extern void OutEvent(uchar xdata *);
43 extern void DispNoEvent(uchar);
44 extern void ShowStartImg(void);
45 extern void OutTNum(uchar,uchar);
46 extern void OutCur(uchar);
47 extern void INTLCD();
48 extern void CLEAR();
49
50 void KeyProc(void);
51 void OutSec(void);
52 void SelfTest(void);
53 void DispEvent(uchar,uchar);
54
C51 COMPILER V6.02 MAIN 04/04/2001 08:36:59 PAGE 2
55 void sint(void) interrupt 4 using 0 /*串行口中断程序,向量为4*/
56 {
57 1 WDT = ~WDT;
58 1 SIOT();
59 1 WDT = ~WDT;
60 1 }
61
62 void intx0(void) interrupt 0 using 3
63 {
64 1 uchar tmpkey,i,j;
65 1 tmpkey = P1 & 0x0F;
66 1 Delay(50);
67 1 if(tmpkey == ( P1 & 0xF ))
68 1 {
69 2 tmpkey = ~tmpkey;
70 2 for(i = 0,j = 1;i<4;i++)
71 2 {
72 3 if((j&tmpkey) == j)
73 3 {
74 4 if(keynum <0x10)
75 4 {
76 5 keynum += 1;
77 5 KeyBuf[ (keyfirst + keynum) & 0x0F ] = i;
78 5 }
79 4 else
80 4 {
81 5 KeyBuf[keyfirst] = i;
82 5 keyfirst = ( keyfirst +1 ) & 0x0F;
83 5 }
84 4 }
85 3 break;
86 3 }
87 2 }
88 1 }
89
90
91 void intt0(void) interrupt 1 using 3 /*50ms中断处理子程序,中断向量1,工作寄存器组3*/
92 {
93 1 TH0 = 0x87;
94 1 TL0 = 0xFF;
95 1
96 1 sectimer += 1;
97 1 if(sectimer == 20) { sectimer = 0; sec = (sec + 1) % 60 ; secflg = 1;}
98 1
99 1 if( wxycount != 0 ) /*wxycount每中断一次减1,当为0时置无响应标志位wxyf*/
100 1 {
101 2 wxycount = wxycount - 1;
102 2 if( wxycount == 0 ) wxyf = 1;
103 2 }
104 1 if( b2btime != 0 ) /*b2bcount每中断一次减1,当为0时置接收错标志位jscf*/
105 1 {
106 2 b2btime = b2btime - 1;
107 2 if ( b2btime == 0 ) jscf = 1;
108 2 }
109 1 }
110
111
112 void main(void)
113 {
114 1
115 1 PCON = 0x0;
116 1 SCON = 0xF0;
C51 COMPILER V6.02 MAIN 04/04/2001 08:36:59 PAGE 3
117 1 TMOD = 0x21;
118 1 TH0 = 0xFB;
119 1 TL0 = 0x32;
120 1 SM2 = 1;
121 1 netno = ( SwitchPort & 0x3F ) + 73; /*拔码开关数据低3位加73为本机号*/
122 1 stno = 1;
123 1 WDT = ~WDT;
124 1
125 1 if((SwitchPort & 0x80) == 0x80) { TH1 = TL1 = 0xFE; } /*拔码开关数据第四位为0时baud = 4800bps,为1时baud
-= 9600bps*/
126 1 else { TH1 = TL1 = 0xFC; }
127 1
128 1 SelfTest();
129 1 ET0 = 1;
130 1 TR0 = 1;
131 1 ES = 1;
132 1 PS = 1;
133 1 TR1 = 1;
134 1 EA = 1;
135 1 DRV485 = 0;
136 1 BkLCtr = 1;
137 1
138 1 INTLCD();
139 1 CLEAR();
140 1 ShowStartImg();
141 1
142 1 while (1)
143 1 {
144 2 if(keynum !=0) KeyProc();
145 2 if(secflg == 1) { OutSec(); secflg = 0;}
146 2 /*if(rpt != rrpt)*/ RS485();
147 2 if(fireflag == 1) {imgcode = 1; DispEvent( 0x01,firefirst + firecur ); fireflag = 0;}
148 2 if(startflag == 1) {imgcode = 2; DispEvent( 0x02,startfirst + startcur ); startflag = 0;}
149 2 if(faultflag == 1) {imgcode = 3; DispEvent( 0x03,faultfirst + faultcur ); faultflag = 0;}
150 2 }
151 1 }
152
153
154 void SelfTest(void)
155 {
156 1 uchar i;
157 1 zkpb = LedPort;
158 1 LedPort = LedPort | 0x0f;
159 1 for(i = 0;i<100;i++);
160 1 LedPort = zkpb;
161 1 }
162
163 void KeyProc(void)
164 {
165 1 switch(KeyBuf[keyfirst])
166 1 {
167 2 case 0x00:
168 2 {
169 3 switch(imgcode)
170 3 {
171 4 case 0x00 : break;
172 4 case 0x01 :
173 4 {
174 5
175 5 if(firecur > 0) firecur -= 1;
176 5 DispEvent( 0x01,firefirst + firecur );
177 5 break;
C51 COMPILER V6.02 MAIN 04/04/2001 08:36:59 PAGE 4
178 5 }
179 4 case 0x02 :
180 4 {
181 5 if(startcur >0) startcur -= 1;
182 5 DispEvent( 0x02,startfirst + startcur );
183 5 break;
184 5 }
185 4 case 0x03 :
186 4 {
187 5 if(faultcur >0) faultcur -= 1;
188 5 DispEvent( 0x03,faultfirst + faultcur );
189 5 break;
190 5 }
191 4 case 0x04 : break;
192 4 default : break;
193 4 }
194 3 }
195 2 case 0x01:
196 2 {
197 3 switch(imgcode)
198 3 {
199 4 case 0x00 : break;
200 4 case 0x01 :
201 4 {
202 5 if(firecur < (firenum - 1 )) firecur += 1;
203 5 DispEvent( 0x01,firefirst + firecur );
204 5 break;
205 5 }
206 4 case 0x02 :
207 4 {
208 5 if(startcur < (startnum - 1)) startcur += 1;
209 5 DispEvent( 0x02,startfirst + startcur );
210 5 break;
211 5 }
212 4 case 0x03 :
213 4 {
214 5 if(faultcur < (faultnum - 1)) faultcur += 1;
215 5 DispEvent( 0x03,faultfirst + faultcur );
216 5 break;
217 5 }
218 4 case 0x04 : break;
219 4 default : break;
220 4 }
221 3 }
222 2 case 0x02:
223 2 {
224 3 if(imgcode != 0) imgcode = ( imgcode & 0x03 ) + 1 ;
225 3 else break;
226 3
227 3 switch(imgcode)
228 3 {
229 4 case 0x01 :
230 4 {
231 5 if(firenum > 0)
232 5 {
233 6 DispEvent( 0x01,firefirst + firenum - 1 );
234 6 break;
235 6 }
236 5 else DispNoEvent( 0x01 );
237 5 break;
238 5 }
239 4 case 0x02 :
C51 COMPILER V6.02 MAIN 04/04/2001 08:36:59 PAGE 5
240 4 {
241 5 if( startnum > 0)
242 5 {
243 6 DispEvent( 0x02,startfirst + startnum - 1 );
244 6 break;
245 6 }
246 5 else DispNoEvent( 0x02 );
247 5 break;
248 5 }
249 4 case 0x03 :
250 4 {
251 5 if( faultnum > 0 )
252 5 {
253 6 DispEvent( 0x03,faultfirst + faultnum - 1 );
254 6 break;
255 6 }
256 5 else DispNoEvent( 0x03 );
257 5 break;
258 5 }
259 4 }
260 3 break;
261 3 }
262 2 case 0x03:
263 2 {
264 3 mute = 1;
265 3 sound = 0;
266 3 break;
267 3 }
268 2 }
269 1 keyfirst = ( keyfirst + 1 ) & 0x0F;
270 1 keynum -= 1;
271 1 }
272
273 void DispEvent(uchar type,uchar loc)
274 {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -