📄 rtc.lis
字号:
0266 ; putchar(minute%10+0x30);
0266 1AE0 ldi R17,10
0268 00910500 lds R16,_minute
026C 0E940000 xcall mod8u
0270 005D subi R16,208 ; addi 48
0272 C6DE xcall _putchar
0274 .dbline 119
0274 ; putchar(':');
0274 0AE3 ldi R16,58
0276 C4DE xcall _putchar
0278 .dbline 120
0278 ; putchar(second/10+0x30);
0278 1AE0 ldi R17,10
027A 00910400 lds R16,_second
027E 0E940000 xcall div8u
0282 005D subi R16,208 ; addi 48
0284 BDDE xcall _putchar
0286 .dbline 121
0286 ; putchar(second%10+0x30);
0286 1AE0 ldi R17,10
0288 00910400 lds R16,_second
028C 0E940000 xcall mod8u
0290 005D subi R16,208 ; addi 48
0292 B6DE xcall _putchar
0294 .dbline -2
0294 L38:
0294 .dbline 0 ; func end
0294 0895 ret
0296 .dbend
.area vector(rom, abs)
.org 44
002C 0C944B01 jmp _uart0_rx_isr
.area text(rom, con, rel)
0296 .dbfile G:\AVR系列\RTC\rtc.c
0296 .dbfunc e uart0_rx_isr _uart0_rx_isr fV
0296 ; i -> R20,R21
.even
0296 _uart0_rx_isr::
0296 0E940000 xcall push_lset
029A 0E940000 xcall push_gset1
029E .dbline -1
029E .dbline 126
029E .dbline 128
029E 4CB1 in R20,0xc
02A0 5527 clr R21
02A2 .dbline 129
02A2 4437 cpi R20,116
02A4 E0E0 ldi R30,0
02A6 5E07 cpc R21,R30
02A8 09F0 breq X8
02AA 7BC0 xjmp L40
02AC X8:
02AC .dbline 130
02AC .dbline 131
02AC ADDE xcall _getchar
02AE 202F mov R18,R16
02B0 3327 clr R19
02B2 08EE ldi R16,1000
02B4 13E0 ldi R17,3
02B6 0E940000 xcall empy16s
02BA C801 movw R24,R16
02BC 8058 subi R24,128
02BE 9B4B sbci R25,187
02C0 90930100 sts _year+1,R25
02C4 80930000 sts _year,R24
02C8 .dbline 132
02C8 9FDE xcall _getchar
02CA 84E6 ldi R24,100
02CC 809F mul R24,R16
02CE C001 movw R24,R0
02D0 805C subi R24,192
02D2 9241 sbci R25,18
02D4 90930100 sts _year+1,R25
02D8 80930000 sts _year,R24
02DC .dbline 133
02DC 95DE xcall _getchar
02DE 8AE0 ldi R24,10
02E0 809F mul R24,R16
02E2 C001 movw R24,R0
02E4 805E subi R24,224
02E6 9140 sbci R25,1
02E8 90930100 sts _year+1,R25
02EC 80930000 sts _year,R24
02F0 .dbline 134
02F0 8BDE xcall _getchar
02F2 802F mov R24,R16
02F4 9927 clr R25
02F6 C097 sbiw R24,48
02F8 20900000 lds R2,_year
02FC 30900100 lds R3,_year+1
0300 280E add R2,R24
0302 391E adc R3,R25
0304 30920100 sts _year+1,R3
0308 20920000 sts _year,R2
030C .dbline 135
030C 7DDE xcall _getchar
030E 8AE0 ldi R24,10
0310 809F mul R24,R16
0312 802D mov R24,R0
0314 805E subi R24,224
0316 80930200 sts _month,R24
031A .dbline 136
031A 76DE xcall _getchar
031C 802F mov R24,R16
031E 8053 subi R24,48
0320 20900200 lds R2,_month
0324 280E add R2,R24
0326 20920200 sts _month,R2
032A .dbline 137
032A 6EDE xcall _getchar
032C 8AE0 ldi R24,10
032E 809F mul R24,R16
0330 802D mov R24,R0
0332 805E subi R24,224
0334 80930300 sts _day,R24
0338 .dbline 138
0338 67DE xcall _getchar
033A 802F mov R24,R16
033C 8053 subi R24,48
033E 20900300 lds R2,_day
0342 280E add R2,R24
0344 20920300 sts _day,R2
0348 .dbline 139
0348 5FDE xcall _getchar
034A 8AE0 ldi R24,10
034C 809F mul R24,R16
034E 802D mov R24,R0
0350 805E subi R24,224
0352 80930600 sts _hour,R24
0356 .dbline 140
0356 58DE xcall _getchar
0358 802F mov R24,R16
035A 8053 subi R24,48
035C 20900600 lds R2,_hour
0360 280E add R2,R24
0362 20920600 sts _hour,R2
0366 .dbline 141
0366 50DE xcall _getchar
0368 8AE0 ldi R24,10
036A 809F mul R24,R16
036C 802D mov R24,R0
036E 805E subi R24,224
0370 80930500 sts _minute,R24
0374 .dbline 142
0374 49DE xcall _getchar
0376 802F mov R24,R16
0378 8053 subi R24,48
037A 20900500 lds R2,_minute
037E 280E add R2,R24
0380 20920500 sts _minute,R2
0384 .dbline 143
0384 41DE xcall _getchar
0386 8AE0 ldi R24,10
0388 809F mul R24,R16
038A 802D mov R24,R0
038C 805E subi R24,224
038E 80930400 sts _second,R24
0392 .dbline 144
0392 3ADE xcall _getchar
0394 802F mov R24,R16
0396 8053 subi R24,48
0398 20900400 lds R2,_second
039C 280E add R2,R24
039E 20920400 sts _second,R2
03A2 .dbline 145
03A2 L40:
03A2 .dbline -2
03A2 L39:
03A2 0E940000 xcall pop_gset1
03A6 0E940000 xcall pop_lset
03AA .dbline 0 ; func end
03AA 1895 reti
03AC .dbsym r i 20 i
03AC .dbend
03AC .dbfunc e main _main fV
03AC ; second_old -> R20
.even
03AC _main::
03AC .dbline -1
03AC .dbline 149
03AC ; }
03AC ; //UART接收中断
03AC ; #pragma interrupt_handler uart0_rx_isr:iv_USART_RXC
03AC ; void uart0_rx_isr(void)
03AC ; {
03AC ; unsigned i;
03AC ; i=UDR;
03AC ; if (i=='t')
03AC ; {
03AC ; year=(getchar()-0x30)*1000;
03AC ; year=(getchar()-0x30)*100;
03AC ; year=(getchar()-0x30)*10;
03AC ; year=year+(getchar()-0x30);
03AC ; month=(getchar()-0x30)*10;
03AC ; month=month+(getchar()-0x30);
03AC ; day=(getchar()-0x30)*10;
03AC ; day=day+(getchar()-0x30);
03AC ; hour=(getchar()-0x30)*10;
03AC ; hour=hour+(getchar()-0x30);
03AC ; minute=(getchar()-0x30)*10;
03AC ; minute=minute+(getchar()-0x30);
03AC ; second=(getchar()-0x30)*10;
03AC ; second=second+(getchar()-0x30);
03AC ; }
03AC ; }
03AC ; //main程序
03AC ; void main(void)
03AC ; {
03AC .dbline 151
03AC ; unsigned char second_old;
03AC ; uart_init();
03AC 45DE xcall _uart_init
03AE .dbline 152
03AE ; timer2_init();
03AE DDDE xcall _timer2_init
03B0 .dbline 153
03B0 ; TIMSK =1<<TOIE2;
03B0 80E4 ldi R24,64
03B2 89BF out 0x39,R24
03B4 .dbline 155
03B4 ;
03B4 ; SEI();
03B4 7894 sei
03B6 08C0 xjmp L44
03B8 L43:
03B8 .dbline 157
03B8 ; while(1)
03B8 ; {
03B8 .dbline 158
03B8 ; if (second!=second_old)
03B8 20900400 lds R2,_second
03BC 2416 cp R2,R20
03BE 21F0 breq L46
03C0 .dbline 159
03C0 ; {
03C0 .dbline 160
03C0 ; time();
03C0 44DE xcall _time
03C2 .dbline 161
03C2 ; second_old=second;
03C2 40910400 lds R20,_second
03C6 .dbline 162
03C6 ; put_time();
03C6 EADE xcall _put_time
03C8 .dbline 163
03C8 ; }
03C8 L46:
03C8 .dbline 164
03C8 L44:
03C8 .dbline 156
03C8 F7CF xjmp L43
03CA X9:
03CA .dbline -2
03CA L42:
03CA .dbline 0 ; func end
03CA 0895 ret
03CC .dbsym r second_old 20 c
03CC .dbend
.area bss(ram, con, rel)
0000 .dbfile G:\AVR系列\RTC\rtc.c
0000 _year::
0000 .blkb 2
0002 .dbsym e year _year i
0002 _month::
0002 .blkb 1
0003 .dbsym e month _month c
0003 _day::
0003 .blkb 1
0004 .dbsym e day _day c
0004 _second::
0004 .blkb 1
0005 .dbsym e second _second c
0005 _minute::
0005 .blkb 1
0006 .dbsym e minute _minute c
0006 _hour::
0006 .blkb 1
0007 .dbsym e hour _hour c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -