📄 ds1203.lst
字号:
048D 8380 STD Z+0,R24
(0275) }
(0276) if(WriteTime[i]==0x79)
048E E687 LDI R24,0x67
048F E090 LDI R25,0
0490 01F8 MOVW R30,R16
0491 0FE8 ADD R30,R24
0492 1FF9 ADC R31,R25
0493 8180 LDD R24,Z+0
0494 3789 CPI R24,0x79
0495 F439 BNE 0x049D
(0277) {WriteTime[i]=0x7f;
0496 E687 LDI R24,0x67
0497 E090 LDI R25,0
0498 01F8 MOVW R30,R16
0499 0FE8 ADD R30,R24
049A 1FF9 ADC R31,R25
049B E78F LDI R24,0x7F
049C 8380 STD Z+0,R24
(0278) }
(0279) if(WriteTime[i]==0x89)
049D E687 LDI R24,0x67
049E E090 LDI R25,0
049F 01F8 MOVW R30,R16
04A0 0FE8 ADD R30,R24
04A1 1FF9 ADC R31,R25
04A2 8180 LDD R24,Z+0
04A3 3889 CPI R24,0x89
04A4 F439 BNE 0x04AC
(0280) {WriteTime[i]=0x8f;
04A5 E687 LDI R24,0x67
04A6 E090 LDI R25,0
04A7 01F8 MOVW R30,R16
04A8 0FE8 ADD R30,R24
04A9 1FF9 ADC R31,R25
04AA E88F LDI R24,0x8F
04AB 8380 STD Z+0,R24
(0281) }
(0282) if(WriteTime[i]==0x99)
04AC E687 LDI R24,0x67
04AD E090 LDI R25,0
04AE 01F8 MOVW R30,R16
04AF 0FE8 ADD R30,R24
04B0 1FF9 ADC R31,R25
04B1 8180 LDD R24,Z+0
04B2 3989 CPI R24,0x99
04B3 F441 BNE 0x04BC
(0283) {WriteTime[i]=0x00;
04B4 E687 LDI R24,0x67
04B5 E090 LDI R25,0
04B6 01F8 MOVW R30,R16
04B7 0FE8 ADD R30,R24
04B8 1FF9 ADC R31,R25
04B9 2422 CLR R2
04BA 8220 STD Z+0,R2
(0284) }
04BB C009 RJMP 0x04C5
(0285) else
(0286) WriteTime[i]=WriteTime[i]+1;
04BC E687 LDI R24,0x67
04BD E090 LDI R25,0
04BE 0118 MOVW R2,R16
04BF 0E28 ADD R2,R24
04C0 1E39 ADC R3,R25
04C1 01F1 MOVW R30,R2
04C2 8180 LDD R24,Z+0
04C3 5F8F SUBI R24,0xFF
04C4 8380 STD Z+0,R24
04C5 9508 RET
(0287)
(0288) }
(0289) //减
(0290) void SubYear(int i)
(0291) {
(0292) if(WriteTime[i]==0x00)
_SubYear:
i --> R16
04C6 E687 LDI R24,0x67
04C7 E090 LDI R25,0
04C8 01F8 MOVW R30,R16
04C9 0FE8 ADD R30,R24
04CA 1FF9 ADC R31,R25
04CB 8020 LDD R2,Z+0
04CC 2022 TST R2
04CD F429 BNE 0x04D3
(0293) { WriteTime[i]=0x5a;
04CE 01F8 MOVW R30,R16
04CF 0FE8 ADD R30,R24
04D0 1FF9 ADC R31,R25
04D1 E58A LDI R24,0x5A
04D2 8380 STD Z+0,R24
(0294) }
(0295) if(WriteTime[i]==0x10)
04D3 E687 LDI R24,0x67
04D4 E090 LDI R25,0
04D5 01F8 MOVW R30,R16
04D6 0FE8 ADD R30,R24
04D7 1FF9 ADC R31,R25
04D8 8180 LDD R24,Z+0
04D9 3180 CPI R24,0x10
04DA F439 BNE 0x04E2
(0296) {WriteTime[i]=0x0a;
04DB E687 LDI R24,0x67
04DC E090 LDI R25,0
04DD 01F8 MOVW R30,R16
04DE 0FE8 ADD R30,R24
04DF 1FF9 ADC R31,R25
04E0 E08A LDI R24,0xA
04E1 8380 STD Z+0,R24
(0297) }
(0298) if(WriteTime[i]==0x20)
04E2 E687 LDI R24,0x67
04E3 E090 LDI R25,0
04E4 01F8 MOVW R30,R16
04E5 0FE8 ADD R30,R24
04E6 1FF9 ADC R31,R25
04E7 8180 LDD R24,Z+0
04E8 3280 CPI R24,0x20
04E9 F439 BNE 0x04F1
(0299) {WriteTime[i]=0x1a;
04EA E687 LDI R24,0x67
04EB E090 LDI R25,0
04EC 01F8 MOVW R30,R16
04ED 0FE8 ADD R30,R24
04EE 1FF9 ADC R31,R25
04EF E18A LDI R24,0x1A
04F0 8380 STD Z+0,R24
(0300) }
(0301) if(WriteTime[i]==0x30)
04F1 E687 LDI R24,0x67
04F2 E090 LDI R25,0
04F3 01F8 MOVW R30,R16
04F4 0FE8 ADD R30,R24
04F5 1FF9 ADC R31,R25
04F6 8180 LDD R24,Z+0
04F7 3380 CPI R24,0x30
04F8 F439 BNE 0x0500
(0302) {WriteTime[i]=0x2a;
04F9 E687 LDI R24,0x67
04FA E090 LDI R25,0
04FB 01F8 MOVW R30,R16
04FC 0FE8 ADD R30,R24
04FD 1FF9 ADC R31,R25
04FE E28A LDI R24,0x2A
04FF 8380 STD Z+0,R24
(0303) }
(0304) if(WriteTime[i]==0x40)
0500 E687 LDI R24,0x67
0501 E090 LDI R25,0
0502 01F8 MOVW R30,R16
0503 0FE8 ADD R30,R24
0504 1FF9 ADC R31,R25
0505 8180 LDD R24,Z+0
0506 3480 CPI R24,0x40
0507 F439 BNE 0x050F
(0305) {WriteTime[i]=0x3a;
0508 E687 LDI R24,0x67
0509 E090 LDI R25,0
050A 01F8 MOVW R30,R16
050B 0FE8 ADD R30,R24
050C 1FF9 ADC R31,R25
050D E38A LDI R24,0x3A
050E 8380 STD Z+0,R24
(0306) }
(0307) if(WriteTime[i]==0x50)
050F E687 LDI R24,0x67
0510 E090 LDI R25,0
0511 01F8 MOVW R30,R16
0512 0FE8 ADD R30,R24
0513 1FF9 ADC R31,R25
0514 8180 LDD R24,Z+0
0515 3580 CPI R24,0x50
0516 F439 BNE 0x051E
(0308) {WriteTime[i]=0x4a;
0517 E687 LDI R24,0x67
0518 E090 LDI R25,0
0519 01F8 MOVW R30,R16
051A 0FE8 ADD R30,R24
051B 1FF9 ADC R31,R25
051C E48A LDI R24,0x4A
051D 8380 STD Z+0,R24
(0309) }
(0310) if(WriteTime[i]==0x60)
051E E687 LDI R24,0x67
051F E090 LDI R25,0
0520 01F8 MOVW R30,R16
0521 0FE8 ADD R30,R24
0522 1FF9 ADC R31,R25
0523 8180 LDD R24,Z+0
0524 3680 CPI R24,0x60
0525 F439 BNE 0x052D
(0311) {WriteTime[i]=0x5a;
0526 E687 LDI R24,0x67
0527 E090 LDI R25,0
0528 01F8 MOVW R30,R16
0529 0FE8 ADD R30,R24
052A 1FF9 ADC R31,R25
052B E58A LDI R24,0x5A
052C 8380 STD Z+0,R24
(0312) }
(0313) if(WriteTime[i]==0x70)
052D E687 LDI R24,0x67
052E E090 LDI R25,0
052F 01F8 MOVW R30,R16
0530 0FE8 ADD R30,R24
0531 1FF9 ADC R31,R25
0532 8180 LDD R24,Z+0
0533 3780 CPI R24,0x70
0534 F439 BNE 0x053C
(0314) {WriteTime[i]=0x6a;
0535 E687 LDI R24,0x67
0536 E090 LDI R25,0
0537 01F8 MOVW R30,R16
0538 0FE8 ADD R30,R24
0539 1FF9 ADC R31,R25
053A E68A LDI R24,0x6A
053B 8380 STD Z+0,R24
(0315) }
(0316) if(WriteTime[i]==0x80)
053C E687 LDI R24,0x67
053D E090 LDI R25,0
053E 01F8 MOVW R30,R16
053F 0FE8 ADD R30,R24
0540 1FF9 ADC R31,R25
0541 8180 LDD R24,Z+0
0542 3880 CPI R24,0x80
0543 F439 BNE 0x054B
(0317) {WriteTime[i]=0x7a;
0544 E687 LDI R24,0x67
0545 E090 LDI R25,0
0546 01F8 MOVW R30,R16
0547 0FE8 ADD R30,R24
0548 1FF9 ADC R31,R25
0549 E78A LDI R24,0x7A
054A 8380 STD Z+0,R24
(0318) }
(0319) if(WriteTime[i]==0x90)
054B E687 LDI R24,0x67
054C E090 LDI R25,0
054D 01F8 MOVW R30,R16
054E 0FE8 ADD R30,R24
054F 1FF9 ADC R31,R25
0550 8180 LDD R24,Z+0
0551 3980 CPI R24,0x90
0552 F441 BNE 0x055B
(0320) {WriteTime[i]=0x89;
0553 E687 LDI R24,0x67
0554 E090 LDI R25,0
0555 01F8 MOVW R30,R16
0556 0FE8 ADD R30,R24
0557 1FF9 ADC R31,R25
0558 E889 LDI R24,0x89
0559 8380 STD Z+0,R24
(0321) }
055A C009 RJMP 0x0564
(0322) else
(0323) WriteTime[i]=WriteTime[i]-1;
055B E687 LDI R24,0x67
055C E090 LDI R25,0
055D 0118 MOVW R2,R16
055E 0E28 ADD R2,R24
055F 1E39 ADC R3,R25
0560 01F1 MOVW R30,R2
0561 8180 LDD R24,Z+0
0562 5081 SUBI R24,1
0563 8380 STD Z+0,R24
0564 9508 RET
_keypress:
NoGong --> R20
move --> R22
0565 D295 RCALL push_gset2
0566 9721 SBIW R28,1
(0324) }
(0325) /*ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
(0326) 按键检测主程序
(0327) cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc*/
(0328) void keypress(void)//按键检测程序
(0329) {
(0330) if(!(PINC&0X08))
0567 999B SBIC 0x13,3
0568 C18A RJMP 0x06F3
(0331) {int NoGong=0,move=0;
0569 2744 CLR R20
056A 2755 CLR R21
056B 2766 CLR R22
056C 2777 CLR R23
(0332) while(!(PINC&0X08));//检测按键释放
056D 9B9B SBIS 0x13,3
056E CFFE RJMP 0x056D
(0333) NoGong=1;
056F E041 LDI R20,1
0570 E050 LDI R21,0
0571 C17C RJMP 0x06EE
(0334) while(NoGong==1)//功能键按下
(0335) {
(0336) black(13,0);//闪烁时的背景线
0572 2722 CLR R18
0573 2733 CLR R19
0574 E00D LDI R16,0xD
0575 E010 LDI R17,0
0576 DC8D RCALL _black
(0337) LCD_write_char(13,0,secondtl+48);//初始状态second闪烁
0577 918000CD LDS R24,secondtl
0579 5D80 SUBI R24,0xD0
057A 8388 STD Y+0,R24
057B 2722 CLR R18
057C E00D LDI R16,0xD
057D D269 RCALL _LCD_write_char
(0338) DS1302_ReadTime(); //读取当前时间
057E DB9A RCALL _DS1302_ReadTime
(0339) SendDataForDisplay();//显示设置
057F DC08 RCALL _SendDataForDisplay
(0340) //cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
(0341) if(!(PINC&0x20)) //检测加一按键
0580 999D SBIC 0x13,5
0581 C00B RJMP 0x058D
(0342) {delay_nus(30);
0582 E10E LDI R16,0x1E
0583 E010 LDI R17,0
0584 DBC5 RCALL _delay_nus
(0343) while(!(PINC&0X20));
0585 9B9D SBIS 0x13,5
0586 CFFE RJMP 0x0585
(0344) PlusForSET(5);//设置秒
0587 E005 LDI R16,5
0588 E010 LDI R17,0
0589 DC89 RCALL _PlusForSET
(0345) DS1302_WriteTime();
058A DBA8 RCALL _DS1302_WriteTime
(0346) DS1302_ReadTime(); //读取当前时间
058B DB8D RCALL _DS1302_ReadTime
(0347) SendDataForDisplay();//显示设置
058C DBFB RCALL _SendDataForDisplay
(0348) }
(0349) if(!(PINB&0x01))//检测减一按键
058D 99B0 SBIC 0x16,0
058E C008 RJMP 0x0597
(0350) {while(!(PINB&0X01));
058F 9BB0 SBIS 0x16,0
0590 CFFE RJMP 0x058F
(0351) SubForSET(5);//设置秒
0591 E005 LDI R16,5
0592 E010 LDI R17,0
0593 DCE4 RCALL _SubForSET
(0352) DS1302_WriteTime();
0594 DB9E RCALL _DS1302_WriteTime
(0353) DS1302_ReadTime(); //读取当前时间
0595 DB83 RCALL _DS1302_ReadTime
(0354) SendDataForDisplay();//显示设置
0596 DBF1 RCALL _SendDataForDisplay
(0355) }
(0356) //cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
(0357)
(0358) if(!(PINC&0x10))//检测移位按键
0597 999C SBIC 0x13,4
0598 C14F RJMP 0x06E8
(0359) {while(!(PINC&0X10));
0599 9B9C SBIS 0x13,4
059A CFFE RJMP 0x0599
(0360) move=1;
059B E061 LDI R22,1
059C E070 LDI R23,0
059D C145 RJMP 0x06E3
(0361) while(NoGong==1)
(0362) {
(0363)
(0364) DS1302_ReadTime(); //读取当前时间
059E DB7A RCALL _DS1302_ReadTime
(0365) SendDataForDisplay();//显示设置
059F DBE8 RCALL _SendDataForDisplay
05A0 C030 RJMP 0x05D1
(0366) //cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
(0367) while(move==1) //设置分钟位置
(0368) { black(10,0);
05A1 2722 CLR R18
05A2 2733 CLR R19
05A3 E00A LDI R16,0xA
05A4 E010 LDI R17,0
05A5 DC5E RCALL _black
(0369) LCD_write_char(10,0,minutetl+48);
05A6 918000CB LDS R24,minutetl
05A8 5D80 SUBI R24,0xD0
05A9 8388 STD Y+0,R24
05AA 2722 CLR R18
05AB E00A LDI R16,0xA
05AC D23A RCALL _LCD_write_char
(0370) DS1302_ReadTime(); //读取当前时间
05AD DB6B RCALL _DS1302_ReadTime
(0371) SendDataForDisplay();//显示设置
05AE DBD9 RCALL _SendDataForDisplay
(0372) //cccccccccccccccccccccccccccccccccccc
(0373) if(!(PINC&0x20)) //检测加一按键
05AF 999D SBIC 0x13,5
05B0 C008 RJMP 0x05B9
(0374) {while(!(PINC&0X20));
05B1 9B9D SBIS 0x13,5
05B2 CFFE RJMP 0x05B1
(0375) PlusForSET(4);//设置分钟
05B3 E004 LDI R16,4
05B4 E010 LDI
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -