📄 dispfinal.lst
字号:
1244 3 black2=!black2;
1245 3 }
1246 2 }
1247 1 }
1248
1249 //----------------------------------------------------------------------------
1250 //timer0 count 25ms,be used to speech output
1251 void timer0(void) interrupt 1
1252 {
1253 1 TL0=0x00;
1254 1 TH0=0xb2;
1255 1 if(++real_clock.microseconds>=100)
1256 1 {
1257 2 real_clock.microseconds=0;
1258 2 second=1;
1259 2 if(++real_clock.seconds>=60)
1260 2 {
1261 3 real_clock.seconds=0;
1262 3 if(++real_clock.minutes>=60)
1263 3 {
1264 4 real_clock.minutes=0;
1265 4 if(++real_clock.hours>=24)
1266 4 {
1267 5 real_clock.hours=0;
1268 5 oneday=1;
1269 5 if(leap)
1270 5 {
1271 6 if(++real_clock.dates>month2_dates[real_clock.months])
1272 6 {
1273 7 real_clock.dates=1;
1274 7 if(++real_clock.months>12)
1275 7 {
1276 8 real_clock.months=1;
1277 8 ++real_clock.years;
1278 8 leap=0;
1279 8 }
1280 7 }
1281 6 }
1282 5 else
1283 5 {
1284 6 if(++real_clock.dates>month1_dates[real_clock.months])
1285 6 {
1286 7 real_clock.dates=1;
1287 7 if(++real_clock.months>12)
1288 7 {
1289 8 real_clock.months=1;
1290 8 if(++real_clock.years%4==0&&real_clock.years%100!=0||real_clock.years%400==0)
1291 8 leap=1;
1292 8 }
1293 7 }
1294 6 }
1295 5 }
C51 COMPILER V6.12 DISPFINAL 09/08/2004 09:49:09 PAGE 22
1296 4 }
1297 3 }
1298 2 }
1299 1
1300 1 }
1301
1302 //-----------------------------------------------------------------------
1303 void receive_send() interrupt 4
1304 {
1305 1 ES=0;
1306 1 if(RI)
1307 1 {
1308 2 RI=0;
1309 2 if(command)
1310 2 {
1311 3 if(receive_count==REC_LENGTH)
1312 3 {
1313 4 if(SBUF==receive_bcc)
1314 4 {
1315 5 receive_flag=1;
1316 5 command=0;
1317 5 addr_mark=0;
1318 5 for(receive_count=0;receive_count<29;receive_count++)
1319 5 {
1320 6 receive_buf2[receive_count]=receive_buf1[receive_count];
1321 6 }
1322 5 }
1323 4 else
1324 4 {
1325 5 receive_flag=0;
1326 5 command=0;
1327 5 addr_mark=0;
1328 5 }
1329 4 }
1330 3 else
1331 3 {
1332 4 receive_buf1[receive_count++]=SBUF;
1333 4 receive_bcc=receive_bcc^SBUF;
1334 4 }
1335 3 }
1336 2 else
1337 2 {
1338 3 if(addr_mark)
1339 3 {
1340 4 addr_mark=0;
1341 4 if(SBUF==LOCAL_PORT)
1342 4 {
1343 5 command=1;
1344 5 receive_bcc=0;
1345 5 receive_count=0;
1346 5 }
1347 4 else
1348 4 {
1349 5 command=0;
1350 5 }
1351 4 }
1352 3 else
1353 3 {
1354 4 if(SBUF==0xff) addr_mark=1;
1355 4 else addr_mark=0;
1356 4 }
1357 3 }
C51 COMPILER V6.12 DISPFINAL 09/08/2004 09:49:09 PAGE 23
1358 2 }
1359 1 else if(TI)
1360 1 {
1361 2 TI=0;
1362 2 if(receive_count>=4);
1363 2 else
1364 2 {
1365 3 if(receive_count++==3)
1366 3 SBUF=receive_bcc;
1367 3 else
1368 3 SBUF=receive_buf[receive_count];
1369 3 }
1370 2 }
1371 1 ES=1;
1372 1 }
1373
1374 //----------------------------------------------------------------------------
1375 void extern_interrupt1() interrupt 2
1376 {
1377 1 // second=!second;
1378 1 ;
1379 1 }
1380
1381 //-----------------------------------------------------------------------------
1382
1383
1384
1385
1386
C51 COMPILER V6.12 DISPFINAL 09/08/2004 09:49:09 PAGE 24
ASSEMBLY LISTING OF GENERATED OBJECT CODE
; FUNCTION main (BEGIN)
; SOURCE LINE # 212
; SOURCE LINE # 213
; SOURCE LINE # 214
0000 C294 CLR osd_reset
; SOURCE LINE # 215
0002 7F14 MOV R7,#014H
0004 120000 R LCALL _delay
; SOURCE LINE # 216
0007 D294 SETB osd_reset
; SOURCE LINE # 217
0009 120000 R LCALL system_init
; SOURCE LINE # 218
000C 020000 R LJMP monitor
; FUNCTION main (END)
; FUNCTION _delay (BEGIN)
;---- Variable 'n' assigned to Register 'R1' ----
0000 A907 MOV R1,AR7
; SOURCE LINE # 221
; SOURCE LINE # 222
; SOURCE LINE # 224
;---- Variable 'i' assigned to Register 'R4/R5' ----
0002 E4 CLR A
0003 FD MOV R5,A
0004 FC MOV R4,A
0005 ?C0002:
0005 E9 MOV A,R1
0006 75F0C8 MOV B,#0C8H
0009 A4 MUL AB
000A FF MOV R7,A
000B C3 CLR C
000C ED MOV A,R5
000D 9F SUBB A,R7
000E EC MOV A,R4
000F 95F0 SUBB A,B
0011 5008 JNC ?C0005
; SOURCE LINE # 225
0013 00 NOP
0014 0D INC R5
0015 BD0001 CJNE R5,#00H,?C0541
0018 0C INC R4
0019 ?C0541:
0019 80EA SJMP ?C0002
; SOURCE LINE # 226
001B ?C0005:
001B 22 RET
; FUNCTION _delay (END)
; FUNCTION system_init (BEGIN)
; SOURCE LINE # 229
; SOURCE LINE # 230
; SOURCE LINE # 232
0000 758921 MOV TMOD,#021H
; SOURCE LINE # 234
0003 759850 MOV SCON,#050H
; SOURCE LINE # 235
0006 438780 ORL PCON,#080H
; SOURCE LINE # 236
C51 COMPILER V6.12 DISPFINAL 09/08/2004 09:49:09 PAGE 25
0009 D200 R SETB leap
; SOURCE LINE # 237
000B D28E SETB TR1
; SOURCE LINE # 238
000D 758BF3 MOV TL1,#0F3H
0010 758DF3 MOV TH1,#0F3H
; SOURCE LINE # 240
0013 758CF8 MOV TH0,#0F8H
; SOURCE LINE # 241
0016 758A30 MOV TL0,#030H
; SOURCE LINE # 242
0019 120000 R LCALL osd_control
; SOURCE LINE # 243
001C 120000 R LCALL clear_disp
; SOURCE LINE # 244
001F 75A892 MOV IE,#092H
; SOURCE LINE # 245
0022 D28C SETB TR0
; SOURCE LINE # 246
0024 22 RET
; FUNCTION system_init (END)
; FUNCTION monitor (BEGIN)
; SOURCE LINE # 248
; SOURCE LINE # 249
0000 ?C0007:
; SOURCE LINE # 250
; SOURCE LINE # 251
; SOURCE LINE # 252
0000 300003 R JNB receive_flag,?C0009
0003 120000 R LCALL detemine_command
0006 ?C0009:
; SOURCE LINE # 253
0006 20B206 JB sw1,?C0010
; SOURCE LINE # 254
; SOURCE LINE # 255
0009 C295 CLR k_4053c
; SOURCE LINE # 256
000B C297 CLR alarm
; SOURCE LINE # 257
000D 8007 SJMP ?C0011
000F ?C0010:
; SOURCE LINE # 259
; SOURCE LINE # 260
000F 20B304 JB sw2,?C0011
; SOURCE LINE # 261
; SOURCE LINE # 262
0012 D295 SETB k_4053c
; SOURCE LINE # 263
0014 C297 CLR alarm
; SOURCE LINE # 264
; SOURCE LINE # 265
0016 ?C0011:
; SOURCE LINE # 266
0016 300021 R JNB second,?C0013
; SOURCE LINE # 267
; SOURCE LINE # 268
0019 C200 R CLR second
; SOURCE LINE # 269
001B 300004 R JNB close1,?C0014
001E D293 SETB osd1_cs
0020 8002 SJMP ?C0015
C51 COMPILER V6.12 DISPFINAL 09/08/2004 09:49:09 PAGE 26
0022 ?C0014:
; SOURCE LINE # 270
0022 C293 CLR osd1_cs
0024 ?C0015:
; SOURCE LINE # 271
0024 300004 R JNB close2,?C0016
0027 D296 SETB osd2_cs
0029 8002 SJMP ?C0018
002B ?C0016:
; SOURCE LINE # 272
002B C296 CLR osd2_cs
002D ?C0018:
; SOURCE LINE # 273
002D 2090FD JB osd_busy,?C0018
0030 ?C0019:
; SOURCE LINE # 274
0030 120000 R LCALL write_osd_time
0033 ?C0020:
; SOURCE LINE # 275
0033 2090FD JB osd_busy,?C0020
0036 ?C0021:
; SOURCE LINE # 276
0036 D293 SETB osd1_cs
; SOURCE LINE # 277
0038 D296 SETB osd2_cs
; SOURCE LINE # 278
003A ?C0013:
; SOURCE LINE # 279
003A 3000C3 R JNB oneday,?C0007
; SOURCE LINE # 280
; SOURCE LINE # 281
003D C200 R CLR oneday
; SOURCE LINE # 282
003F 200009 R JB close1,?C0023
; SOURCE LINE # 283
; SOURCE LINE # 284
0042 300004 R JNB closedate1,?C0024
0045 D293 SETB osd1_cs
0047 8002 SJMP ?C0023
0049 ?C0024:
; SOURCE LINE # 285
0049 C293 CLR osd1_cs
;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -