📄 rtc.lis
字号:
00DA 10910100 lds R17,_year+1
00DE 0E940000 xcall mod16u
00E2 0030 cpi R16,0
00E4 0107 cpc R16,R17
00E6 09F0 breq X6
00E8 3FC0 xjmp L22
00EA X6:
00EA X2:
00EA L26:
00EA 80910200 lds R24,_month
00EE 8430 cpi R24,4
00F0 09F0 breq X7
00F2 3AC0 xjmp L22
00F4 X7:
00F4 .dbline 71
00F4 ; mon[1]=28; }
00F4 8CE1 ldi R24,28
00F6 80930100 sts _mon+1,R24
00FA .dbline 71
00FA 36C0 xjmp L22
00FC L21:
00FC .dbline 73
00FC ; else
00FC ; {
00FC .dbline 74
00FC ; day=0;
00FC 2224 clr R2
00FE 20920300 sts _day,R2
0102 .dbline 75
0102 ; if(month<13)
0102 80910200 lds R24,_month
0106 8D30 cpi R24,13
0108 20F4 brsh L29
010A .dbline 76
010A ; month++;
010A 8F5F subi R24,255 ; addi 1
010C 80930200 sts _month,R24
0110 09C0 xjmp L30
0112 L29:
0112 .dbline 78
0112 ; else
0112 ; year++;
0112 80910000 lds R24,_year
0116 90910100 lds R25,_year+1
011A 0196 adiw R24,1
011C 90930100 sts _year+1,R25
0120 80930000 sts _year,R24
0124 L30:
0124 .dbline 79
0124 ; if((((year%4)==0)&&((year%100)!=0))||((year%400)==0))
0124 80910000 lds R24,_year
0128 90910100 lds R25,_year+1
012C 8370 andi R24,3
012E 9070 andi R25,0
0130 8030 cpi R24,0
0132 8907 cpc R24,R25
0134 59F4 brne L34
0136 X3:
0136 24E6 ldi R18,100
0138 30E0 ldi R19,0
013A 00910000 lds R16,_year
013E 10910100 lds R17,_year+1
0142 0E940000 xcall mod16u
0146 0030 cpi R16,0
0148 0107 cpc R16,R17
014A 59F4 brne L33
014C X4:
014C L34:
014C 20E9 ldi R18,400
014E 31E0 ldi R19,1
0150 00910000 lds R16,_year
0154 10910100 lds R17,_year+1
0158 0E940000 xcall mod16u
015C 0030 cpi R16,0
015E 0107 cpc R16,R17
0160 19F4 brne L31
0162 X5:
0162 L33:
0162 .dbline 80
0162 ; mon[1]=29;
0162 8DE1 ldi R24,29
0164 80930100 sts _mon+1,R24
0168 L31:
0168 .dbline 81
0168 ; }
0168 L22:
0168 .dbline 82
0168 ; }
0168 L20:
0168 .dbline 83
0168 ; }
0168 L18:
0168 .dbline 84
0168 ; }
0168 .dbline -2
0168 L14:
0168 .dbline 0 ; func end
0168 0895 ret
016A .dbend
016A .dbfunc e timer2_init _timer2_init fV
.even
016A _timer2_init::
016A .dbline -1
016A .dbline 89
016A ; }
016A ;
016A ; //初始化
016A ; void timer2_init(void)
016A ; {
016A .dbline 90
016A ; TCCR2 = 0x00;
016A 2224 clr R2
016C 25BC out 0x25,R2
016E .dbline 91
016E ; ASSR = 1<<AS2; //异步时钟
016E 88E0 ldi R24,8
0170 82BD out 0x22,R24
0172 .dbline 92
0172 ; TCNT2 = 0xE0; //定时时间1秒
0172 80EE ldi R24,224
0174 84BD out 0x24,R24
0176 .dbline 93
0176 ; TCCR2 = (1<<CS22)|(1<<CS21)|(1<<CS20); //分频比1024,0x07
0176 87E0 ldi R24,7
0178 85BD out 0x25,R24
017A .dbline -2
017A L36:
017A .dbline 0 ; func end
017A 0895 ret
017C .dbend
.area vector(rom, abs)
.org 16
0010 0C94BE00 jmp _timer2_ovf_isr
.area text(rom, con, rel)
017C .dbfile G:\AVR系列\RTC\rtc.c
017C .dbfunc e timer2_ovf_isr _timer2_ovf_isr fV
.even
017C _timer2_ovf_isr::
017C 8A93 st -y,R24
017E 9A93 st -y,R25
0180 8FB7 in R24,0x3f
0182 8A93 st -y,R24
0184 .dbline -1
0184 .dbline 97
0184 ; }
0184 ; #pragma interrupt_handler timer2_ovf_isr:iv_TIMER2_OVF
0184 ; void timer2_ovf_isr(void)
0184 ; {
0184 .dbline 98
0184 ; TCNT2 = 0xE0;
0184 80EE ldi R24,224
0186 84BD out 0x24,R24
0188 .dbline 99
0188 ; second++;
0188 80910400 lds R24,_second
018C 8F5F subi R24,255 ; addi 1
018E 80930400 sts _second,R24
0192 .dbline -2
0192 L37:
0192 8991 ld R24,y+
0194 8FBF out 0x3f,R24
0196 9991 ld R25,y+
0198 8991 ld R24,y+
019A .dbline 0 ; func end
019A 1895 reti
019C .dbend
019C .dbfunc e put_time _put_time fV
.even
019C _put_time::
019C .dbline -1
019C .dbline 102
019C ; }
019C ; void put_time(void)
019C ; {
019C .dbline 103
019C ; putchar(year/1000+0x30);
019C 28EE ldi R18,1000
019E 33E0 ldi R19,3
01A0 00910000 lds R16,_year
01A4 10910100 lds R17,_year+1
01A8 0E940000 xcall div16u
01AC 005D subi R16,208 ; offset = 48
01AE 1F4F sbci R17,255
01B0 27DF xcall _putchar
01B2 .dbline 104
01B2 ; putchar(year/100+0x30);
01B2 24E6 ldi R18,100
01B4 30E0 ldi R19,0
01B6 00910000 lds R16,_year
01BA 10910100 lds R17,_year+1
01BE 0E940000 xcall div16u
01C2 005D subi R16,208 ; offset = 48
01C4 1F4F sbci R17,255
01C6 1CDF xcall _putchar
01C8 .dbline 105
01C8 ; putchar(year/10+0x30);
01C8 2AE0 ldi R18,10
01CA 30E0 ldi R19,0
01CC 00910000 lds R16,_year
01D0 10910100 lds R17,_year+1
01D4 0E940000 xcall div16u
01D8 005D subi R16,208 ; offset = 48
01DA 1F4F sbci R17,255
01DC 11DF xcall _putchar
01DE .dbline 106
01DE ; putchar(year%10+0x30);
01DE 2AE0 ldi R18,10
01E0 30E0 ldi R19,0
01E2 00910000 lds R16,_year
01E6 10910100 lds R17,_year+1
01EA 0E940000 xcall mod16u
01EE 005D subi R16,208 ; offset = 48
01F0 1F4F sbci R17,255
01F2 06DF xcall _putchar
01F4 .dbline 107
01F4 ; putchar(':');
01F4 0AE3 ldi R16,58
01F6 04DF xcall _putchar
01F8 .dbline 108
01F8 ; putchar(month/10+0x30);
01F8 1AE0 ldi R17,10
01FA 00910200 lds R16,_month
01FE 0E940000 xcall div8u
0202 005D subi R16,208 ; addi 48
0204 FDDE xcall _putchar
0206 .dbline 109
0206 ; putchar(month%10+0x30);
0206 1AE0 ldi R17,10
0208 00910200 lds R16,_month
020C 0E940000 xcall mod8u
0210 005D subi R16,208 ; addi 48
0212 F6DE xcall _putchar
0214 .dbline 110
0214 ; putchar(':');
0214 0AE3 ldi R16,58
0216 F4DE xcall _putchar
0218 .dbline 111
0218 ; putchar(day/10+0x30);
0218 1AE0 ldi R17,10
021A 00910300 lds R16,_day
021E 0E940000 xcall div8u
0222 005D subi R16,208 ; addi 48
0224 EDDE xcall _putchar
0226 .dbline 112
0226 ; putchar(day%10+0x30);
0226 1AE0 ldi R17,10
0228 00910300 lds R16,_day
022C 0E940000 xcall mod8u
0230 005D subi R16,208 ; addi 48
0232 E6DE xcall _putchar
0234 .dbline 113
0234 ; putchar(':');
0234 0AE3 ldi R16,58
0236 E4DE xcall _putchar
0238 .dbline 114
0238 ; putchar(hour/10+0x30);
0238 1AE0 ldi R17,10
023A 00910600 lds R16,_hour
023E 0E940000 xcall div8u
0242 005D subi R16,208 ; addi 48
0244 DDDE xcall _putchar
0246 .dbline 115
0246 ; putchar(hour%10+0x30);
0246 1AE0 ldi R17,10
0248 00910600 lds R16,_hour
024C 0E940000 xcall mod8u
0250 005D subi R16,208 ; addi 48
0252 D6DE xcall _putchar
0254 .dbline 116
0254 ; putchar(':');
0254 0AE3 ldi R16,58
0256 D4DE xcall _putchar
0258 .dbline 117
0258 ; putchar(minute/10+0x30);
0258 1AE0 ldi R17,10
025A 00910500 lds R16,_minute
025E 0E940000 xcall div8u
0262 005D subi R16,208 ; addi 48
0264 CDDE xcall _putchar
0266 .dbline 118
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -