?? rtc.lst
字號:
(0113) putchar(':');
016B E30A LDI R16,0x3A
016C DEE4 RCALL _putchar
(0114) putchar(hour/10+0x30);
016D E01A LDI R17,0xA
016E 91000072 LDS R16,hour
0170 940E0255 CALL div8u
0172 5D00 SUBI R16,0xD0
0173 DEDD RCALL _putchar
(0115) putchar(hour%10+0x30);
0174 E01A LDI R17,0xA
0175 91000072 LDS R16,hour
0177 940E0253 CALL mod8u
0179 5D00 SUBI R16,0xD0
017A DED6 RCALL _putchar
(0116) putchar(':');
017B E30A LDI R16,0x3A
017C DED4 RCALL _putchar
(0117) putchar(minute/10+0x30);
017D E01A LDI R17,0xA
017E 91000071 LDS R16,minute
0180 940E0255 CALL div8u
0182 5D00 SUBI R16,0xD0
0183 DECD RCALL _putchar
(0118) putchar(minute%10+0x30);
0184 E01A LDI R17,0xA
0185 91000071 LDS R16,minute
0187 940E0253 CALL mod8u
0189 5D00 SUBI R16,0xD0
018A DEC6 RCALL _putchar
(0119) putchar(':');
018B E30A LDI R16,0x3A
018C DEC4 RCALL _putchar
(0120) putchar(second/10+0x30);
018D E01A LDI R17,0xA
018E 91000070 LDS R16,second
0190 940E0255 CALL div8u
0192 5D00 SUBI R16,0xD0
0193 DEBD RCALL _putchar
(0121) putchar(second%10+0x30);
0194 E01A LDI R17,0xA
0195 91000070 LDS R16,second
0197 940E0253 CALL mod8u
0199 5D00 SUBI R16,0xD0
019A DEB6 RCALL _putchar
019B 9508 RET
_uart0_rx_isr:
i --> R20
019C 940E029A CALL push_lset
019E 940E0283 CALL push_gset1
(0122) }
(0123) //UART接收中斷
(0124) #pragma interrupt_handler uart0_rx_isr:iv_USART_RXC
(0125) void uart0_rx_isr(void)
(0126) {
(0127) unsigned i;
(0128) i=UDR;
01A0 B14C IN R20,0x0C
01A1 2755 CLR R21
(0129) if (i=='t')
01A2 3744 CPI R20,0x74
01A3 E0E0 LDI R30,0
01A4 075E CPC R21,R30
01A5 F009 BEQ 0x01A7
01A6 C07B RJMP 0x0222
(0130) {
(0131) year=(getchar()-0x30)*1000;
01A7 DEAD RCALL _getchar
01A8 2F20 MOV R18,R16
01A9 2733 CLR R19
01AA EE08 LDI R16,0xE8
01AB E013 LDI R17,3
01AC 940E026B CALL empy16s
01AE 01C8 MOVW R24,R16
01AF 5880 SUBI R24,0x80
01B0 4B9B SBCI R25,0xBB
01B1 9390006D STS year+1,R25
01B3 9380006C STS year,R24
(0132) year=(getchar()-0x30)*100;
01B5 DE9F RCALL _getchar
01B6 E684 LDI R24,0x64
01B7 9F80 MUL R24,R16
01B8 01C0 MOVW R24,R0
01B9 5C80 SUBI R24,0xC0
01BA 4192 SBCI R25,0x12
01BB 9390006D STS year+1,R25
01BD 9380006C STS year,R24
(0133) year=(getchar()-0x30)*10;
01BF DE95 RCALL _getchar
01C0 E08A LDI R24,0xA
01C1 9F80 MUL R24,R16
01C2 01C0 MOVW R24,R0
01C3 5E80 SUBI R24,0xE0
01C4 4091 SBCI R25,1
01C5 9390006D STS year+1,R25
01C7 9380006C STS year,R24
(0134) year=year+(getchar()-0x30);
01C9 DE8B RCALL _getchar
01CA 2F80 MOV R24,R16
01CB 2799 CLR R25
01CC 97C0 SBIW R24,0x30
01CD 9020006C LDS R2,year
01CF 9030006D LDS R3,year+1
01D1 0E28 ADD R2,R24
01D2 1E39 ADC R3,R25
01D3 9230006D STS year+1,R3
01D5 9220006C STS year,R2
(0135) month=(getchar()-0x30)*10;
01D7 DE7D RCALL _getchar
01D8 E08A LDI R24,0xA
01D9 9F80 MUL R24,R16
01DA 2D80 MOV R24,R0
01DB 5E80 SUBI R24,0xE0
01DC 9380006E STS month,R24
(0136) month=month+(getchar()-0x30);
01DE DE76 RCALL _getchar
01DF 2F80 MOV R24,R16
01E0 5380 SUBI R24,0x30
01E1 9020006E LDS R2,month
01E3 0E28 ADD R2,R24
01E4 9220006E STS month,R2
(0137) day=(getchar()-0x30)*10;
01E6 DE6E RCALL _getchar
01E7 E08A LDI R24,0xA
01E8 9F80 MUL R24,R16
01E9 2D80 MOV R24,R0
01EA 5E80 SUBI R24,0xE0
01EB 9380006F STS day,R24
(0138) day=day+(getchar()-0x30);
01ED DE67 RCALL _getchar
01EE 2F80 MOV R24,R16
01EF 5380 SUBI R24,0x30
01F0 9020006F LDS R2,day
01F2 0E28 ADD R2,R24
01F3 9220006F STS day,R2
(0139) hour=(getchar()-0x30)*10;
01F5 DE5F RCALL _getchar
01F6 E08A LDI R24,0xA
01F7 9F80 MUL R24,R16
01F8 2D80 MOV R24,R0
01F9 5E80 SUBI R24,0xE0
01FA 93800072 STS hour,R24
(0140) hour=hour+(getchar()-0x30);
01FC DE58 RCALL _getchar
01FD 2F80 MOV R24,R16
01FE 5380 SUBI R24,0x30
01FF 90200072 LDS R2,hour
0201 0E28 ADD R2,R24
0202 92200072 STS hour,R2
(0141) minute=(getchar()-0x30)*10;
0204 DE50 RCALL _getchar
0205 E08A LDI R24,0xA
0206 9F80 MUL R24,R16
0207 2D80 MOV R24,R0
0208 5E80 SUBI R24,0xE0
0209 93800071 STS minute,R24
(0142) minute=minute+(getchar()-0x30);
020B DE49 RCALL _getchar
020C 2F80 MOV R24,R16
020D 5380 SUBI R24,0x30
020E 90200071 LDS R2,minute
0210 0E28 ADD R2,R24
0211 92200071 STS minute,R2
(0143) second=(getchar()-0x30)*10;
0213 DE41 RCALL _getchar
0214 E08A LDI R24,0xA
0215 9F80 MUL R24,R16
0216 2D80 MOV R24,R0
0217 5E80 SUBI R24,0xE0
0218 93800070 STS second,R24
(0144) second=second+(getchar()-0x30);
021A DE3A RCALL _getchar
021B 2F80 MOV R24,R16
021C 5380 SUBI R24,0x30
021D 90200070 LDS R2,second
021F 0E28 ADD R2,R24
0220 92200070 STS second,R2
(0145) }
0222 940E0286 CALL pop_gset1
0224 940E02B1 CALL pop_lset
0226 9518 RETI
(0146) }
(0147) //main程序
(0148) void main(void)
(0149) {
(0150) unsigned char second_old;
(0151) uart_init();
_main:
second_old --> R20
0227 DE45 RCALL _uart_init
(0152) timer2_init();
0228 DEDD RCALL _timer2_init
(0153) TIMSK =1<<TOIE2;
0229 E480 LDI R24,0x40
022A BF89 OUT 0x39,R24
(0154)
(0155) SEI();
022B 9478 BSET 7
022C C008 RJMP 0x0235
(0156) while(1)
(0157) {
(0158) if (second!=second_old)
022D 90200070 LDS R2,second
022F 1624 CP R2,R20
0230 F021 BEQ 0x0235
(0159) {
(0160) time();
0231 DE44 RCALL _time
(0161) second_old=second;
0232 91400070 LDS R20,second
(0162) put_time();
FILE: <library>
0234 DEEA RCALL _put_time
0235 CFF7 RJMP 0x022D
0236 9508 RET
mod16u:
0237 9468 BSET 6
0238 C001 RJMP xdiv16u
div16u:
0239 94E8 BCLR 6
xdiv16u:
023A 92EA ST R14,-Y
023B 92FA ST R15,-Y
023C 938A ST R24,-Y
023D 24EE CLR R14
023E 24FF CLR R15
023F E180 LDI R24,0x10
0240 0F00 LSL R16
0241 1F11 ROL R17
0242 1CEE ROL R14
0243 1CFF ROL R15
0244 16E2 CP R14,R18
0245 06F3 CPC R15,R19
0246 F018 BCS 0x024A
0247 1AE2 SUB R14,R18
0248 0AF3 SBC R15,R19
0249 9503 INC R16
024A 958A DEC R24
024B F7A1 BNE 0x0240
024C F416 BRTC 0x024F
024D 2D0E MOV R16,R14
024E 2D1F MOV R17,R15
024F 9189 LD R24,Y+
0250 90F9 LD R15,Y+
0251 90E9 LD R14,Y+
0252 9508 RET
mod8u:
0253 9468 BSET 6
0254 C001 RJMP xdiv8u
div8u:
0255 94E8 BCLR 6
xdiv8u:
0256 932A ST R18,-Y
0257 92FA ST R15,-Y
0258 92EA ST R14,-Y
0259 24FF CLR R15
025A 24EE CLR R14
025B E120 LDI R18,0x10
025C 0F00 LSL R16
025D 1CFF ROL R15
025E 1CEE ROL R14
025F 16E1 CP R14,R17
0260 F010 BCS 0x0263
0261 1AE1 SUB R14,R17
0262 9503 INC R16
0263 952A DEC R18
0264 F7B9 BNE 0x025C
0265 F40E BRTC 0x0267
0266 2D0E MOV R16,R14
0267 90E9 LD R14,Y+
0268 90F9 LD R15,Y+
0269 9129 LD R18,Y+
026A 9508 RET
empy16s:
026B 920A ST R0,-Y
026C 921A ST R1,-Y
026D 938A ST R24,-Y
026E 939A ST R25,-Y
026F 9F02 MUL R16,R18
0270 01C0 MOVW R24,R0
0271 9F12 MUL R17,R18
0272 0D90 ADD R25,R0
0273 9F03 MUL R16,R19
0274 0D90 ADD R25,R0
0275 018C MOVW R16,R24
0276 9199 LD R25,Y+
0277 9189 LD R24,Y+
0278 9019 LD R1,Y+
0279 9009 LD R0,Y+
027A 9508 RET
push_gset5:
027B 92FA ST R15,-Y
027C 92EA ST R14,-Y
push_gset4:
027D 92DA ST R13,-Y
027E 92CA ST R12,-Y
push_gset3:
027F 92BA ST R11,-Y
0280 92AA ST R10,-Y
push_gset2:
0281 937A ST R23,-Y
0282 936A ST R22,-Y
push_gset1:
0283 935A ST R21,-Y
0284 934A ST R20,-Y
0285 9508 RET
pop_gset1:
0286 E0E1 LDI R30,1
pop:
0287 9149 LD R20,Y+
0288 9159 LD R21,Y+
0289 FDE0 SBRC R30,0
028A 9508 RET
028B 9169 LD R22,Y+
028C 9179 LD R23,Y+
028D FDE1 SBRC R30,1
028E 9508 RET
028F 90A9 LD R10,Y+
0290 90B9 LD R11,Y+
0291 FDE2 SBRC R30,2
0292 9508 RET
0293 90C9 LD R12,Y+
0294 90D9 LD R13,Y+
0295 FDE3 SBRC R30,3
0296 9508 RET
0297 90E9 LD R14,Y+
0298 90F9 LD R15,Y+
0299 9508 RET
push_lset:
029A 93FA ST R31,-Y
029B 93EA ST R30,-Y
029C 93BA ST R27,-Y
029D 93AA ST R26,-Y
029E 939A ST R25,-Y
029F 938A ST R24,-Y
02A0 933A ST R19,-Y
02A1 932A ST R18,-Y
02A2 931A ST R17,-Y
02A3 930A ST R16,-Y
02A4 929A ST R9,-Y
02A5 928A ST R8,-Y
02A6 927A ST R7,-Y
02A7 926A ST R6,-Y
02A8 925A ST R5,-Y
02A9 924A ST R4,-Y
02AA 923A ST R3,-Y
02AB 922A ST R2,-Y
02AC 921A ST R1,-Y
02AD 920A ST R0,-Y
02AE B60F IN R0,0x3F
02AF 920A ST R0,-Y
02B0 9508 RET
pop_lset:
02B1 9009 LD R0,Y+
02B2 BE0F OUT 0x3F,R0
02B3 9009 LD R0,Y+
02B4 9019 LD R1,Y+
02B5 9029 LD R2,Y+
02B6 9039 LD R3,Y+
02B7 9049 LD R4,Y+
02B8 9059 LD R5,Y+
02B9 9069 LD R6,Y+
02BA 9079 LD R7,Y+
02BB 9089 LD R8,Y+
02BC 9099 LD R9,Y+
02BD 9109 LD R16,Y+
02BE 9119 LD R17,Y+
02BF 9129 LD R18,Y+
02C0 9139 LD R19,Y+
02C1 9189 LD R24,Y+
02C2 9199 LD R25,Y+
02C3 91A9 LD R26,Y+
02C4 91B9 LD R27,Y+
02C5 91E9 LD R30,Y+
02C6 91F9 LD R31,Y+
02C7 9508 RET
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -