📄 1602_8563.lis
字号:
035A 86BF out 0x36,R24
035C .dbline 104
035C 01E0 ldi R16,1
035E .dbline -2
035E L83:
035E .dbline 0 ; func end
035E 0895 ret
0360 .dbend
0360 .dbfunc e start_timer _start_timer fc
.even
0360 _start_timer::
0360 .dbline -1
0360 .dbline 111
0360 .dbline 112
0360 84EA ldi R24,164
0362 86BF out 0x36,R24
0364 .dbline 113
0364 L96:
0364 .dbline 113
0364 L97:
0364 .dbline 113
0364 26B6 in R2,0x36
0366 27FE sbrs R2,7
0368 FDCF rjmp L96
036A .dbline 113
036A .dbline 113
036A .dbline 114
036A 81B1 in R24,0x1
036C 887F andi R24,248
036E 8830 cpi R24,8
0370 11F0 breq L99
0372 .dbline 114
0372 0027 clr R16
0374 09C0 xjmp L95
0376 L99:
0376 .dbline 115
0376 02EA ldi R16,162
0378 33DF xcall _write_tim
037A .dbline 116
037A 0027 clr R16
037C 31DF xcall _write_tim
037E .dbline 117
037E 0027 clr R16
0380 2FDF xcall _write_tim
0382 .dbline 118
0382 84E9 ldi R24,148
0384 86BF out 0x36,R24
0386 .dbline 119
0386 01E0 ldi R16,1
0388 .dbline -2
0388 L95:
0388 .dbline 0 ; func end
0388 0895 ret
038A .dbend
038A .dbfunc e timer_lcd _timer_lcd fV
.even
038A _timer_lcd::
038A .dbline -1
038A .dbline 126
038A .dbline 127
038A 24E0 ldi R18,4
038C 01E0 ldi R16,1
038E E5DE xcall _locate
0390 .dbline 129
0390 00910700 lds R16,_timer+7
0394 0295 swap R16
0396 0F70 andi R16,#0x0F
0398 005D subi R16,208 ; addi 48
039A 5EDE xcall _lcd_da
039C .dbline 130
039C 00910700 lds R16,_timer+7
03A0 0F70 andi R16,15
03A2 005D subi R16,208 ; addi 48
03A4 59DE xcall _lcd_da
03A6 .dbline 131
03A6 00910600 lds R16,_timer+6
03AA 0295 swap R16
03AC 0F70 andi R16,#0x0F
03AE 005D subi R16,208 ; addi 48
03B0 53DE xcall _lcd_da
03B2 .dbline 132
03B2 00910600 lds R16,_timer+6
03B6 0F70 andi R16,15
03B8 005D subi R16,208 ; addi 48
03BA 4EDE xcall _lcd_da
03BC .dbline 133
03BC 0FE2 ldi R16,47
03BE 4CDE xcall _lcd_da
03C0 .dbline 134
03C0 00910500 lds R16,_timer+5
03C4 0295 swap R16
03C6 0F70 andi R16,#0x0F
03C8 005D subi R16,208 ; addi 48
03CA 46DE xcall _lcd_da
03CC .dbline 135
03CC 00910500 lds R16,_timer+5
03D0 0F70 andi R16,15
03D2 005D subi R16,208 ; addi 48
03D4 41DE xcall _lcd_da
03D6 .dbline 136
03D6 0FE2 ldi R16,47
03D8 3FDE xcall _lcd_da
03DA .dbline 137
03DA 00910300 lds R16,_timer+3
03DE 0295 swap R16
03E0 0F70 andi R16,#0x0F
03E2 005D subi R16,208 ; addi 48
03E4 39DE xcall _lcd_da
03E6 .dbline 138
03E6 00910300 lds R16,_timer+3
03EA 0F70 andi R16,15
03EC 005D subi R16,208 ; addi 48
03EE 34DE xcall _lcd_da
03F0 .dbline 140
03F0 22E0 ldi R18,2
03F2 02E0 ldi R16,2
03F4 B2DE xcall _locate
03F6 .dbline 142
03F6 00910200 lds R16,_timer+2
03FA 0295 swap R16
03FC 0F70 andi R16,#0x0F
03FE 005D subi R16,208 ; addi 48
0400 2BDE xcall _lcd_da
0402 .dbline 143
0402 00910200 lds R16,_timer+2
0406 0F70 andi R16,15
0408 005D subi R16,208 ; addi 48
040A 26DE xcall _lcd_da
040C .dbline 144
040C 0AE3 ldi R16,58
040E 24DE xcall _lcd_da
0410 .dbline 145
0410 00910100 lds R16,_timer+1
0414 0295 swap R16
0416 0F70 andi R16,#0x0F
0418 005D subi R16,208 ; addi 48
041A 1EDE xcall _lcd_da
041C .dbline 146
041C 00910100 lds R16,_timer+1
0420 0F70 andi R16,15
0422 005D subi R16,208 ; addi 48
0424 19DE xcall _lcd_da
0426 .dbline 147
0426 0AE3 ldi R16,58
0428 17DE xcall _lcd_da
042A .dbline 148
042A 00910000 lds R16,_timer
042E 0295 swap R16
0430 0F70 andi R16,#0x0F
0432 005D subi R16,208 ; addi 48
0434 11DE xcall _lcd_da
0436 .dbline 149
0436 00910000 lds R16,_timer
043A 0F70 andi R16,15
043C 005D subi R16,208 ; addi 48
043E 0CDE xcall _lcd_da
0440 .dbline 151
0440 ;
0440 ; lcd_da(20); //时间与星期间留1空格
0440 04E1 ldi R16,20
0442 0ADE xcall _lcd_da
0444 .dbline 152
0444 ; lcd_da('W'); //星期的前导字
0444 07E5 ldi R16,87
0446 08DE xcall _lcd_da
0448 .dbline 153
0448 ; lcd_da('e');
0448 05E6 ldi R16,101
044A 06DE xcall _lcd_da
044C .dbline 154
044C ; lcd_da('e');
044C 05E6 ldi R16,101
044E 04DE xcall _lcd_da
0450 .dbline 155
0450 ; lcd_da('k');
0450 0BE6 ldi R16,107
0452 02DE xcall _lcd_da
0454 .dbline 156
0454 ; lcd_da((timer[4]&0x0f)+0x30); //星期数据
0454 00910400 lds R16,_timer+4
0458 0F70 andi R16,15
045A 005D subi R16,208 ; addi 48
045C FDDD xcall _lcd_da
045E .dbline -2
045E L101:
045E .dbline 0 ; func end
045E 0895 ret
0460 .dbend
0460 .dbfunc e timer1_init _timer1_init fV
.even
0460 _timer1_init::
0460 .dbline -1
0460 .dbline 161
0460 ; }
0460 ;
0460 ; //定时器1:每秒从8563中读取4次数据,更新显示
0460 ; void timer1_init(void) //定时器1初始化:250毫秒定时,预分频256
0460 ; {
0460 .dbline 162
0460 ; TCCR1B = 0x00; //停止定时器
0460 2224 clr R2
0462 2EBC out 0x2e,R2
0464 .dbline 163
0464 ; TCNT1H = 0x8F; //初值高字节
0464 8FE8 ldi R24,143
0466 8DBD out 0x2d,R24
0468 .dbline 164
0468 ; TCNT1L = 0x81; //定时初值低字节
0468 81E8 ldi R24,129
046A 8CBD out 0x2c,R24
046C .dbline 165
046C ; TCCR1A = 0x00;
046C 2FBC out 0x2f,R2
046E .dbline 166
046E ; TCCR1B = 0x03; //启动定时器
046E 83E0 ldi R24,3
0470 8EBD out 0x2e,R24
0472 .dbline -2
0472 L115:
0472 .dbline 0 ; func end
0472 0895 ret
0474 .dbend
.area vector(rom, abs)
.org 32
0020 0C943A02 jmp _timer1_ovf_isr
.area text(rom, con, rel)
0474 .dbfile D:\PCF8563\1602_time\1602_8563.c
0474 .dbfunc e timer1_ovf_isr _timer1_ovf_isr fV
.even
0474 _timer1_ovf_isr::
0474 0E940000 xcall push_lset
0478 .dbline -1
0478 .dbline 171
0478 ; }
0478 ;
0478 ; #pragma interrupt_handler timer1_ovf_isr:9
0478 ; void timer1_ovf_isr(void) //定时器1中断入口:250MS中断一次
0478 ; {
0478 .dbline 172
0478 ; TCNT1H = 0x8F; //重装初值
0478 8FE8 ldi R24,143
047A 8DBD out 0x2d,R24
047C .dbline 173
047C ; TCNT1L = 0x81;
047C 81E8 ldi R24,129
047E 8CBD out 0x2c,R24
0480 .dbline 174
0480 ; read_timer(); //读出当前时钟
0480 F2DE xcall _read_timer
0482 .dbline 175
0482 ; timer_lcd(); //显示数据转换
0482 83DF xcall _timer_lcd
0484 .dbline -2
0484 L116:
0484 0E940000 xcall pop_lset
0488 .dbline 0 ; func end
0488 1895 reti
048A .dbend
048A .dbfunc e set_xs1 _set_xs1 fV
048A ; i -> R20
.even
048A _set_xs1::
048A 0E940000 xcall push_gset1
048E 402F mov R20,R16
0490 .dbline -1
0490 .dbline 182
0490 ; }
0490 ;
0490 ; /**********************************
0490 ; * 调整显示函数1 *
0490 ; **********************************/
0490 ; void set_xs1(uchar i)
0490 ; {
0490 .dbline 183
0490 ; lcd_da((timer[i]>>4)+0x30); //显示数据
0490 80E0 ldi R24,<_timer
0492 90E0 ldi R25,>_timer
0494 E42F mov R30,R20
0496 FF27 clr R31
0498 E80F add R30,R24
049A F91F adc R31,R25
049C 0081 ldd R16,z+0
049E 0295 swap R16
04A0 0F70 andi R16,#0x0F
04A2 005D subi R16,208 ; addi 48
04A4 D9DD xcall _lcd_da
04A6 .dbline 184
04A6 ; lcd_da((timer[i]&0x0f)+0x30);
04A6 80E0 ldi R24,<_timer
04A8 90E0 ldi R25,>_timer
04AA E42F mov R30,R20
04AC FF27 clr R31
04AE E80F add R30,R24
04B0 F91F adc R31,R25
04B2 0081 ldd R16,z+0
04B4 0F70 andi R16,15
04B6 005D subi R16,208 ; addi 48
04B8 CFDD xcall _lcd_da
04BA .dbline -2
04BA L117:
04BA 0E940000 xcall pop_gset1
04BE .dbline 0 ; func end
04BE 0895 ret
04C0 .dbsym r i 20 c
04C0 .dbend
04C0 .dbfunc e set_xs2 _set_xs2 fV
04C0 ; data -> R20
.even
04C0 _set_xs2::
04C0 0E940000 xcall push_gset1
04C4 402F mov R20,R16
04C6 .dbline -1
04C6 .dbline 191
04C6 ; }
04C6 ;
04C6 ; /**********************************
04C6 ; * 调整显示函数2 *
04C6 ; **********************************/
04C6 ; void set_xs2(uchar data)
04C6 ; {
04C6 .dbline 192
04C6 ; lcd_da((data>>4)+0x30); //显示数据
04C6 042F mov R16,R20
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -