📄 1602_8563.lis
字号:
04C8 0295 swap R16
04CA 0F70 andi R16,#0x0F
04CC 005D subi R16,208 ; addi 48
04CE C4DD xcall _lcd_da
04D0 .dbline 193
04D0 ; lcd_da((data&0x0f)+0x30);
04D0 042F mov R16,R20
04D2 0F70 andi R16,15
04D4 005D subi R16,208 ; addi 48
04D6 C0DD xcall _lcd_da
04D8 .dbline 194
04D8 ; lcd(0x20);
04D8 00E2 ldi R16,32
04DA 57DE xcall _lcd
04DC .dbline -2
04DC L118:
04DC 0E940000 xcall pop_gset1
04E0 .dbline 0 ; func end
04E0 0895 ret
04E2 .dbsym r data 20 c
04E2 .dbend
04E2 .dbfunc e main _main fV
04E2 ; set_time -> R22
04E2 ; set_bh -> y+2
04E2 ; set_flag -> y+1
04E2 ; a1 -> y+0
04E2 ; a -> R20
.even
04E2 _main::
04E2 2597 sbiw R28,5
04E4 .dbline -1
04E4 .dbline 201
04E4 ; }
04E4 ;
04E4 ; /**********************************
04E4 ; * 程序主函数 *
04E4 ; **********************************/
04E4 ; void main(void)
04E4 ; {
04E4 .dbline 202
04E4 ; uchar set_flag=0; //调整与正常工作标志
04E4 0024 clr R0
04E6 0982 std y+1,R0
04E8 .dbline 204
04E8 ; uchar set_time; //调整数据类型标志
04E8 ; uchar set_bh=0; //调整变化标志
04E8 0A82 std y+2,R0
04EA .dbline 207
04EA ; uchar a,a1;
04EA ;
04EA ; port_init();
04EA 8ADD xcall _port_init
04EC .dbline 208
04EC ; LED_ON; //开LCD背光
04EC C39A sbi 0x18,3
04EE .dbline 209
04EE ; lcd_init();
04EE 12DE xcall _lcd_init
04F0 .dbline 210
04F0 ; delay_ms(500);
04F0 04EF ldi R16,500
04F2 11E0 ldi R17,1
04F4 9EDD xcall _delay_ms
04F6 .dbline 211
04F6 ; tonghe();
04F6 61DE xcall _tonghe
04F8 .dbline 212
04F8 ; delay_ms(2000);
04F8 00ED ldi R16,2000
04FA 17E0 ldi R17,7
04FC 9ADD xcall _delay_ms
04FE .dbline 214
04FE ;
04FE ; Twi_Init();
04FE 6BDE xcall _Twi_Init
0500 .dbline 215
0500 ; delay_ms(100);
0500 04E6 ldi R16,100
0502 10E0 ldi R17,0
0504 96DD xcall _delay_ms
0506 .dbline 216
0506 ; CLI(); //关总中断
0506 F894 cli
0508 .dbline 217
0508 ; timer1_init(); //定时器1初始化
0508 ABDF xcall _timer1_init
050A .dbline 218
050A ; MCUCR = 0x00;
050A 2224 clr R2
050C 25BE out 0x35,R2
050E .dbline 219
050E ; GICR = 0x00;
050E 2BBE out 0x3b,R2
0510 .dbline 220
0510 ; TIMSK = 0x04; //开放定时器0中断和比较中断
0510 84E0 ldi R24,4
0512 89BF out 0x39,R24
0514 .dbline 221
0514 ; SEI(); //开总中断
0514 7894 sei
0516 .dbline 223
0516 ;
0516 ; cls();
0516 1BDE xcall _cls
0518 .dbline 224
0518 ; delay_ms(50);
0518 02E3 ldi R16,50
051A 10E0 ldi R17,0
051C 8ADD xcall _delay_ms
051E 1EC2 xjmp L121
0520 L120:
0520 .dbline 227
0520 ;
0520 ; while(1)
0520 ; {
0520 .dbline 228
0520 ; a=KEY_RD;
0520 83B3 in R24,0x13
0522 8695 lsr R24
0524 816F ori R24,241
0526 40B3 in R20,0x10
0528 4695 lsr R20
052A 4695 lsr R20
052C 4E6F ori R20,254
052E 4823 and R20,R24
0530 4095 com R20
0532 .dbline 229
0532 ; if(a!=0)
0532 09F4 brne X9
0534 13C2 xjmp L123
0536 X9:
0536 .dbline 230
0536 ; {
0536 .dbline 231
0536 ; delay_ms(20);
0536 04E1 ldi R16,20
0538 10E0 ldi R17,0
053A 7BDD xcall _delay_ms
053C .dbline 232
053C ; a1=KEY_RD;
053C 83B3 in R24,0x13
053E 8695 lsr R24
0540 816F ori R24,241
0542 90B3 in R25,0x10
0544 9695 lsr R25
0546 9695 lsr R25
0548 9E6F ori R25,254
054A 9823 and R25,R24
054C 9095 com R25
054E 9883 std y+0,R25
0550 .dbline 233
0550 ; if(a1==a)
0550 092E mov R0,R25
0552 9417 cp R25,R20
0554 09F0 breq X10
0556 00C2 xjmp L284
0558 X10:
0558 .dbline 234
0558 ; {
0558 .dbline 235
0558 ; switch(a)
0558 E42E mov R14,R20
055A FF24 clr R15
055C C701 movw R24,R14
055E 8130 cpi R24,1
0560 E0E0 ldi R30,0
0562 9E07 cpc R25,R30
0564 79F0 breq L130
0566 8230 cpi R24,2
0568 E0E0 ldi R30,0
056A 9E07 cpc R25,R30
056C 59F1 breq L136
056E 8430 cpi R24,4
0570 E0E0 ldi R30,0
0572 9E07 cpc R25,R30
0574 09F4 brne X11
0576 75C0 xjmp L154
0578 X11:
0578 8830 cpi R24,8
057A E0E0 ldi R30,0
057C 9E07 cpc R25,R30
057E 09F4 brne X12
0580 24C1 xjmp L216
0582 X12:
0582 EAC1 xjmp L284
0584 X4:
0584 .dbline 236
0584 ; {
0584 L130:
0584 .dbline 238
0584 ; case 0x01:
0584 ; spk(10,1);
0584 21E0 ldi R18,1
0586 0AE0 ldi R16,10
0588 46DE xcall _spk
058A .dbline 239
058A ; if(set_flag==0)
058A 0980 ldd R0,y+1
058C 0020 tst R0
058E 71F4 brne L131
0590 .dbline 240
0590 ; {
0590 .dbline 241
0590 ; TCCR1B=0x00;
0590 2224 clr R2
0592 2EBC out 0x2e,R2
0594 .dbline 242
0594 ; LED_ON;
0594 C39A sbi 0x18,3
0596 .dbline 243
0596 ; set_flag=1;
0596 0024 clr R0
0598 0394 inc R0
059A 0982 std y+1,R0
059C .dbline 244
059C ; cls();
059C D8DD xcall _cls
059E .dbline 245
059E ; locate(1,4); //显示“时间调整”
059E 24E0 ldi R18,4
05A0 01E0 ldi R16,1
05A2 DBDD xcall _locate
05A4 .dbline 246
05A4 ; xs_lcd("SET:");
05A4 00E0 ldi R16,<L133
05A6 10E0 ldi R17,>L133
05A8 F8DD xcall _xs_lcd
05AA .dbline 247
05AA ; }
05AA D6C1 xjmp L284
05AC L131:
05AC .dbline 249
05AC ; else
05AC ; {
05AC .dbline 250
05AC ; TCCR1B=0x04; //开启时钟
05AC 84E0 ldi R24,4
05AE 8EBD out 0x2e,R24
05B0 .dbline 251
05B0 ; set_flag=0;
05B0 0024 clr R0
05B2 0982 std y+1,R0
05B4 .dbline 252
05B4 ; if(set_bh==1)
05B4 8A81 ldd R24,y+2
05B6 8130 cpi R24,1
05B8 09F0 breq X13
05BA CEC1 xjmp L284
05BC X13:
05BC .dbline 253
05BC ; {
05BC .dbline 254
05BC ; write_timer(); //写入新时间
05BC A6DE xcall _write_timer
05BE .dbline 255
05BE ; set_bh=0;
05BE 0024 clr R0
05C0 0A82 std y+2,R0
05C2 .dbline 256
05C2 ; }
05C2 .dbline 257
05C2 ; }
05C2 .dbline 258
05C2 ; break;
05C2 CAC1 xjmp L284
05C4 L136:
05C4 .dbline 260
05C4 ; case 0x02:
05C4 ; if(set_flag==1)
05C4 8981 ldd R24,y+1
05C6 8130 cpi R24,1
05C8 09F0 breq X14
05CA C6C1 xjmp L284
05CC X14:
05CC .dbline 261
05CC ; {
05CC .dbline 262
05CC ; spk(10,1);
05CC 21E0 ldi R18,1
05CE 0AE0 ldi R16,10
05D0 22DE xcall _spk
05D2 .dbline 263
05D2 ; set_time++;
05D2 6395 inc R22
05D4 .dbline 264
05D4 ; locate(2,2); //显示待调整的数据
05D4 22E0 ldi R18,2
05D6 02E0 ldi R16,2
05D8 C0DD xcall _locate
05DA .dbline 265
05DA ; switch(set_time)
05DA 262E mov R2,R22
05DC 3324 clr R3
05DE 3C82 std y+4,R3
05E0 2B82 std y+3,R2
05E2 C101 movw R24,R2
05E4 8130 cpi R24,1
05E6 E0E0 ldi R30,0
05E8 9E07 cpc R25,R30
05EA A9F0 breq L142
05EC 8230 cpi R24,2
05EE E0E0 ldi R30,0
05F0 9E07 cpc R25,R30
05F2 B9F0 breq L144
05F4 8330 cpi R24,3
05F6 E0E0 ldi R30,0
05F8 9E07 cpc R25,R30
05FA C9F0 breq L146
05FC 8430 cpi R24,4
05FE E0E0 ldi R30,0
0600 9E07 cpc R25,R30
0602 D9F0 breq L148
0604 8530 cpi R24,5
0606 E0E0 ldi R30,0
0608 9E07 cpc R25,R30
060A E9F0 breq L150
060C 8630 cpi R24,6
060E E0E0 ldi R30,0
0610 9E07 cpc R25,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -