📄 wnl.lst
字号:
0394 3000 CPI R16,0
0395 0701 CPC R16,R17
0396 F411 BNE 0x0399
0397 E14D LDI R20,0x1D
0398 C001 RJMP 0x039A
0399 E14C LDI R20,0x1C
(0166) default:break;
(0167) }
(0168) return tian;
039A 2F04 MOV R16,R20
039B 940E067F CALL pop_gset1
039D 9508 RET
(0169) }
(0170) /**********************************************/
(0171) /* 定时器初始化 1秒*/
(0172) /**********************************************/
(0173) void timer0_init(void)
(0174) {
(0175) TCCR0 = 0x00; //stop
_timer0_init:
039E 2422 CLR R2
039F BE23 OUT 0x33,R2
(0176) ASSR = 0x08; //set async mode
03A0 E088 LDI R24,0x8
03A1 BF80 OUT 0x30,R24
(0177) TCNT0 = 0x00; //set count
03A2 BE22 OUT 0x32,R2
(0178) TCCR0 = 0x05; //start timer
03A3 E085 LDI R24,5
03A4 BF83 OUT 0x33,R24
03A5 9508 RET
_timer0_ovf_isr:
03A6 940E0693 CALL push_lset
(0179) }
(0180) /**********************************************/
(0181) /* 定时器中断服务程序*/
(0182) /**********************************************/
(0183) #pragma interrupt_handler timer0_ovf_isr:17
(0184) void timer0_ovf_isr(void)
(0185) {
(0186) second=second+1;
03A8 91800100 LDS R24,second
03AA 5F8F SUBI R24,0xFF
03AB 93800100 STS second,R24
(0187) if(second==60)
03AD 338C CPI R24,0x3C
03AE F009 BEQ 0x03B0
03AF C048 RJMP 0x03F8
(0188) {
(0189) second=0;
03B0 2422 CLR R2
03B1 92200100 STS second,R2
(0190) minute=minute+1;
03B3 91800101 LDS R24,minute
03B5 5F8F SUBI R24,0xFF
03B6 93800101 STS minute,R24
(0191) if(minute==60)
03B8 338C CPI R24,0x3C
03B9 F009 BEQ 0x03BB
03BA C03D RJMP 0x03F8
(0192) {
(0193) minute=0;
03BB 92200101 STS minute,R2
(0194) hour=hour+1;
03BD 91800102 LDS R24,hour
03BF 5F8F SUBI R24,0xFF
03C0 93800102 STS hour,R24
(0195) if(hour==24)
03C2 3188 CPI R24,0x18
03C3 F5A1 BNE 0x03F8
(0196) {
(0197) hour=0;
03C4 92200102 STS hour,R2
(0198) day=day+1;
03C6 91800103 LDS R24,day
03C8 5F8F SUBI R24,0xFF
03C9 93800103 STS day,R24
(0199) if(day>7)
03CB E087 LDI R24,7
03CC 90200103 LDS R2,day
03CE 1582 CP R24,R2
03CF F418 BCC 0x03D3
(0200) day=1;
03D0 E081 LDI R24,1
03D1 93800103 STS day,R24
(0201) days=days+1;
03D3 91800104 LDS R24,days
03D5 5F8F SUBI R24,0xFF
03D6 93800104 STS days,R24
(0202) if(days>get_days(month))
03D8 91000105 LDS R16,month
03DA DF64 RCALL _get_days
03DB 90200104 LDS R2,days
03DD 1502 CP R16,R2
03DE F4C8 BCC 0x03F8
(0203) {
(0204) days=1;
03DF E081 LDI R24,1
03E0 93800104 STS days,R24
(0205) month=month+1;
03E2 91800105 LDS R24,month
03E4 5F8F SUBI R24,0xFF
03E5 93800105 STS month,R24
(0206) if(month>12)
03E7 E08C LDI R24,0xC
03E8 90200105 LDS R2,month
03EA 1582 CP R24,R2
03EB F460 BCC 0x03F8
(0207) {
(0208) month=1;
03EC E081 LDI R24,1
03ED 93800105 STS month,R24
(0209) year=year+1;
03EF 91800106 LDS R24,year
03F1 91900107 LDS R25,year+1
03F3 9601 ADIW R24,1
03F4 93900107 STS year+1,R25
03F6 93800106 STS year,R24
(0210) }
(0211) }
(0212)
(0213) }
(0214) }
(0215) }
(0216) time_display();//显示小时,分钟
03F8 DD46 RCALL _time_display
(0217) if(flag==0) //与最后面相照应 //如果没有标志位就不能起缓冲作用,边化快
03F9 90200108 LDS R2,flag
03FB 2022 TST R2
03FC F409 BNE 0x03FE
(0218) {
(0219) day_display();//显示年月日
03FD DDEE RCALL _day_display
(0220) }
03FE 940E06AA CALL pop_lset
0400 9518 RETI
_lcd_time:
0401 9724 SBIW R28,4
(0221) }
(0222) /**********************************************/
(0223) /*写显示*/
(0224) /**********************************************/
(0225) void lcd_time(void)
(0226) {
(0227) write_ASCII(0xf9,4,0,table[lcd_buff[0]]);//小时高位
0402 EA84 LDI R24,0xA4
0403 E090 LDI R25,0
0404 91E00109 LDS R30,lcd_buff
0406 27FF CLR R31
0407 0FE8 ADD R30,R24
0408 1FF9 ADC R31,R25
0409 9024 LPM R2,0(Z)
040A 2433 CLR R3
040B 823B STD Y+3,R3
040C 822A STD Y+2,R2
040D 2422 CLR R2
040E 8239 STD Y+1,R3
040F 8228 STD Y+0,R2
0410 E024 LDI R18,4
0411 E030 LDI R19,0
0412 EF09 LDI R16,0xF9
0413 E010 LDI R17,0
0414 DC9D RCALL _write_ASCII
(0228) write_ASCII(0xf9,5,0,table[lcd_buff[1]]);//小时地位
0415 EA84 LDI R24,0xA4
0416 E090 LDI R25,0
0417 91E0010A LDS R30,lcd_buff+1
0419 27FF CLR R31
041A 0FE8 ADD R30,R24
041B 1FF9 ADC R31,R25
041C 9024 LPM R2,0(Z)
041D 2433 CLR R3
041E 823B STD Y+3,R3
041F 822A STD Y+2,R2
0420 2422 CLR R2
0421 8239 STD Y+1,R3
0422 8228 STD Y+0,R2
0423 E025 LDI R18,5
0424 E030 LDI R19,0
0425 EF09 LDI R16,0xF9
0426 E010 LDI R17,0
0427 DC8A RCALL _write_ASCII
(0229) write_ASCII(0xf9,6,0,58); //:
0428 E38A LDI R24,0x3A
0429 E090 LDI R25,0
042A 839B STD Y+3,R25
042B 838A STD Y+2,R24
042C 2422 CLR R2
042D 2433 CLR R3
042E 8239 STD Y+1,R3
042F 8228 STD Y+0,R2
0430 E026 LDI R18,6
0431 E030 LDI R19,0
0432 EF09 LDI R16,0xF9
0433 E010 LDI R17,0
0434 DC7D RCALL _write_ASCII
(0230) write_ASCII(0xf9,7,0,table[lcd_buff[2]]);//分钟高位
0435 EA84 LDI R24,0xA4
0436 E090 LDI R25,0
0437 91E0010B LDS R30,lcd_buff+2
0439 27FF CLR R31
043A 0FE8 ADD R30,R24
043B 1FF9 ADC R31,R25
043C 9024 LPM R2,0(Z)
043D 2433 CLR R3
043E 823B STD Y+3,R3
043F 822A STD Y+2,R2
0440 2422 CLR R2
0441 8239 STD Y+1,R3
0442 8228 STD Y+0,R2
0443 E027 LDI R18,7
0444 E030 LDI R19,0
0445 EF09 LDI R16,0xF9
0446 E010 LDI R17,0
0447 DC6A RCALL _write_ASCII
(0231) write_ASCII(0xf9,8,0,table[lcd_buff[3]]); //分钟地位
0448 EA84 LDI R24,0xA4
0449 E090 LDI R25,0
044A 91E0010C LDS R30,lcd_buff+3
044C 27FF CLR R31
044D 0FE8 ADD R30,R24
044E 1FF9 ADC R31,R25
044F 9024 LPM R2,0(Z)
0450 2433 CLR R3
0451 823B STD Y+3,R3
0452 822A STD Y+2,R2
0453 2422 CLR R2
0454 8239 STD Y+1,R3
0455 8228 STD Y+0,R2
0456 E028 LDI R18,0x8
0457 E030 LDI R19,0
0458 EF09 LDI R16,0xF9
0459 E010 LDI R17,0
045A DC57 RCALL _write_ASCII
(0232) write_ASCII(0xf9,10,0,48);// 0
045B E380 LDI R24,0x30
045C E090 LDI R25,0
045D 839B STD Y+3,R25
045E 838A STD Y+2,R24
045F 2422 CLR R2
0460 2433 CLR R3
0461 8239 STD Y+1,R3
0462 8228 STD Y+0,R2
0463 E02A LDI R18,0xA
0464 E030 LDI R19,0
0465 EF09 LDI R16,0xF9
0466 E010 LDI R17,0
0467 DC4A RCALL _write_ASCII
(0233) write_ASCII(0xf9,11,0,48);//0
0468 E380 LDI R24,0x30
0469 E090 LDI R25,0
046A 839B STD Y+3,R25
046B 838A STD Y+2,R24
046C 2422 CLR R2
046D 2433 CLR R3
046E 8239 STD Y+1,R3
046F 8228 STD Y+0,R2
0470 E02B LDI R18,0xB
0471 E030 LDI R19,0
0472 EF09 LDI R16,0xF9
0473 E010 LDI R17,0
0474 DC3D RCALL _write_ASCII
0475 9624 ADIW R28,4
0476 9508 RET
_lcd_time1:
0477 9724 SBIW R28,4
(0234) }
(0235) void lcd_time1(void)
(0236) {
(0237) write_hazi(9,0,biao1[lcd_buff1[8]-1],biao2[lcd_buff1[8]-1]);//一,二,三,四,五,六,日
0478 E987 LDI R24,0x97
0479 E090 LDI R25,0
047A 91E00115 LDS R30,0x115
047C 27FF CLR R31
047D 0FE8 ADD R30,R24
047E 1FF9 ADC R31,R25
047F 9024 LPM R2,0(Z)
0480 2433 CLR R3
0481 823B STD Y+3,R3
0482 822A STD Y+2,R2
0483 E88B LDI R24,0x8B
0484 E090 LDI R25,0
0485 91E00115 LDS R30,0x115
0487 27FF CLR R31
0488 0FE8 ADD R30,R24
0489 1FF9 ADC R31,R25
048A 9024 LPM R2,0(Z)
048B 2433 CLR R3
048C 8239 STD Y+1,R3
048D 8228 STD Y+0,R2
048E 2722 CLR R18
048F 2733 CLR R19
0490 E009 LDI R16,0x9
0491 E010 LDI R17,0
0492 DC30 RCALL _write_hazi
(0238) write_ASCII(0xf9,4,16,table[lcd_buff1[0]]);//年第四位
0493 EA84 LDI R24,0xA4
0494 E090 LDI R25,0
0495 91E0010D LDS R30,lcd_buff1
0497 27FF CLR R31
0498 0FE8 ADD R30,R24
0499 1FF9 ADC R31,R25
049A 9024 LPM R2,0(Z)
049B 2433 CLR R3
049C 823B STD Y+3,R3
049D 822A STD Y+2,R2
049E E180 LDI R24,0x10
049F E090 LDI R25,0
04A0 8399 STD Y+1,R25
04A1 8388 STD Y+0,R24
04A2 E024 LDI R18,4
04A3 E030 LDI R19,0
04A4 EF09 LDI R16,0xF9
04A5 E010 LDI R17,0
04A6 DC0B RCALL _write_ASCII
(0239) write_ASCII(0xf9,5,16,table[lcd_buff1[1]]);//年第三位
04A7 EA84 LDI R24,0xA4
04A8 E090 LDI R25,0
04A9 91E0010E LDS R30,lcd_buff1+1
04AB 27FF CLR R31
04AC 0FE8 ADD R30,R24
04AD 1FF9 ADC R31,R25
04AE 9024 LPM R2,0(Z)
04AF 2433 CLR R3
04B0 823B STD Y+3,R3
04B1 822A STD Y+2,R2
04B2 E180 LDI R24,0x10
04B3 E090 LDI R25,0
04B4 8399 STD Y+1,R25
04B5 8388 STD Y+0,R24
04B6 E025 LDI R18,5
04B7 E030 LDI R19,0
04B8 EF09 LDI R16,0xF9
04B9 E010 LDI R17,0
04BA DBF7 RCALL _write_ASCII
(0240) write_ASCII(0xf9,6,16,table[lcd_buff1[2]]);//年第二位
04BB EA84 LDI R24,0xA4
04BC E090 LDI R25,0
04BD 91E0010F LDS R30,lcd_buff1+2
04BF 27FF CLR R31
04C0 0FE8 ADD R30,R24
04C1 1FF9 ADC R31,R25
04C2 9024 LPM R2,0(Z)
04C3 2433 CLR R3
04C4 823B STD Y+3,R3
04C5 822A STD Y+2,R2
04C6 E180 LDI R24,0x10
04C7 E090 LDI R25,0
04C8 8399 STD Y+1,R25
04C9 8388 STD Y+0,R24
04CA E026 LDI R18,6
04CB E030 LDI R19,0
04CC EF09 LDI R16,0xF9
04CD E010 LDI R17,0
04CE DBE3 RCALL _write_ASCII
(0241) write_ASCII(0xf9,7,16,table[lcd_buff1[3]]);//年第一位
04CF EA84 LDI R24,0xA4
04D0 E090 LDI R25,0
04D1 91E00110 LDS R30,lcd_buff1+3
04D3 27FF CLR R31
04D4 0FE8 ADD R30,R24
04D5 1FF9 ADC R31,R25
04D6 9024 LPM R2,0(Z)
04D7 2433 CLR R3
04D8 823B STD Y+3,R3
04D9 822A STD Y+2,R2
04DA E180 LDI R24,0x10
04DB E090 LDI R25,0
04DC 8399 STD Y+1,R25
04DD 8388 STD Y+0,R24
04DE E027 LDI R18,7
04DF E030 LDI R19,0
04E0 EF09 LDI R16,0xF9
04E1 E010 LDI R17,0
04E2 DBCF RCALL _write_ASCII
(0242) write_ASCII(0xf9,10,16,table[lcd_buff1[4]]);//月份高位
04E3 EA84 LDI R24,0xA4
04E4 E090 LDI R25,0
04E5 91E00111 LDS R30,0x111
04E7 27FF CLR R31
04E8 0FE8 ADD R30,R24
04E9 1FF9 ADC R31,R25
04EA 9024 LPM R2,0(Z)
04EB 2433 CLR R3
04EC 823B STD Y+3,R3
04ED 822A STD Y+2,R2
04EE E180 LDI R24,0x10
04EF E090 LDI R25,0
04F0 8399 STD Y+1,R25
04F1 8388 STD Y+0,R24
04F2 E02A LDI R18,0xA
04F3 E030 LDI R19,0
04F4 EF09 LDI R16,0xF9
04F5 E010 LDI R17,0
04F6 DBBB RCALL _write_ASCII
(0243) write_ASCII(0xf9,11,16,table[lcd_buff1[5]]);//月份低位
04F7 EA84 LDI R24,0xA4
04F8 E090 LDI R25,0
04F9 91E00112 LDS R30,0x112
04FB 27FF CLR R31
04FC 0FE8 ADD R30,R24
04FD 1FF9 ADC R31,R25
04FE 9024 LPM R2,0(Z)
04FF 2433 CLR R3
0500 823B STD Y+3,R3
0501 822A STD Y+2,R2
0502 E180 LDI R24,0x10
0503 E090 LDI R25,0
0504 8399 STD Y+1,R25
0505 8388 STD Y+0,R24
0506 E02B LDI R18,0xB
0507 E030 LDI R19,0
0508 EF09 LDI R16,0xF9
0509 E010 LDI R17,0
050A DBA7 RCALL _write_ASCII
(0244) write_ASCII(0xf9,14,16,table[lcd_buff1[6]]);//日期高位
050B EA84 LDI R24,0xA4
050C E090 LDI R25,0
050D 91E00113 LDS R30,0x113
050F 27FF CLR R31
0510 0FE8 ADD R30,R24
0511 1FF9 ADC R31,R25
0512 9024 LPM R2,0(Z)
0513 2433 CLR R3
0514 823B STD Y+3,R3
0515 822A STD Y+2,R2
0516 E180 LDI R24,0x10
0517 E090 LDI R25,0
0518 8399 STD Y+1,R25
0519 8388 STD Y+0,R24
051A E02E LDI R18,0xE
051B E030 LDI R19,0
051C EF09 LDI R16,0xF9
051D E010 LDI R17,0
051E DB93 RCALL _write_ASCII
(0245) write_ASCII(0xf9,15,16,table[lcd_buff1[7]]);//日期低位
051F EA84 LDI R24,0xA4
0520 E090 LDI R25,0
0521 91E00114 LDS R30,0x114
0523 27FF CLR R31
0524 0FE8 ADD R30,R24
0525 1FF9 ADC R31,R25
0526 9024 LPM R2,0(Z)
0527 2433 CLR R3
0528 823B STD Y+3,R3
0529 822A STD Y+2,R2
052A E180 LDI R24,0x10
052B E090 LDI R25,0
052C 8399 STD Y+1,R25
052D 8388 STD Y+0,R24
052E E02F LDI R18,0xF
052F E030 LDI R19,0
0530 EF09 LDI R16,0xF9
0531 E010 LDI R17,0
0532 DB7F RCALL _write_ASCII
0533 9624 ADIW R28,4
0534 9508 RET
_ks:
m --> R20
j --> R22
0535 940E067A CALL push_gset2
(0246) }
(0247) /**********************************************/
(0248) /*查键盘*/
(0249) /**********************************************/
(0250) unsigned char ks(void)
(0251) {
(0252) unsigned char m,j;
(0253) DDRB=0x0f;
0537 E08F LDI R24,0xF
0538 BB87 OUT 0x17,R24
(0254) PORTB=0xff;
0539 EF8F LDI R24,0xFF
053A BB88 OUT 0x18,R24
(0255) for(j=0;j<4;j++)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -