⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1602_8563.lis

📁 avr单片机的程序
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 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 + -