📄 ac11-3.lst
字号:
01BA C046 RJMP 0x0201
(0071) {
(0072) if(S1==0){sec++;if(sec>59)sec=0;}
01BB 9984 SBIC 0x10,4
01BC C00D RJMP 0x01CA
01BD 91800063 LDS R24,sec
01BF 5F8F SUBI R24,0xFF
01C0 93800063 STS sec,R24
01C2 E38B LDI R24,0x3B
01C3 90200063 LDS R2,sec
01C5 1582 CP R24,R2
01C6 F418 BCC 0x01CA
01C7 2422 CLR R2
01C8 92200063 STS sec,R2
(0073) if(S2==0){min++;if(min>59)min=0;}
01CA 9985 SBIC 0x10,5
01CB C00D RJMP 0x01D9
01CC 91800062 LDS R24,min
01CE 5F8F SUBI R24,0xFF
01CF 93800062 STS min,R24
01D1 E38B LDI R24,0x3B
01D2 90200062 LDS R2,min
01D4 1582 CP R24,R2
01D5 F418 BCC 0x01D9
01D6 2422 CLR R2
01D7 92200062 STS min,R2
(0074) if(S3==0){set_sec++;if(set_sec>59)set_sec=0;}
01D9 9986 SBIC 0x10,6
01DA C00D RJMP 0x01E8
01DB 91800061 LDS R24,set_sec
01DD 5F8F SUBI R24,0xFF
01DE 93800061 STS set_sec,R24
01E0 E38B LDI R24,0x3B
01E1 90200061 LDS R2,set_sec
01E3 1582 CP R24,R2
01E4 F418 BCC 0x01E8
01E5 2422 CLR R2
01E6 92200061 STS set_sec,R2
(0075) if(S4==0){set_min++;if(set_min>59)set_min=0;}
01E8 9987 SBIC 0x10,7
01E9 C00D RJMP 0x01F7
01EA 91800060 LDS R24,set_min
01EC 5F8F SUBI R24,0xFF
01ED 93800060 STS set_min,R24
01EF E38B LDI R24,0x3B
01F0 90200060 LDS R2,set_min
01F2 1582 CP R24,R2
01F3 F418 BCC 0x01F7
01F4 2422 CLR R2
01F5 92200060 STS set_min,R2
(0076) if(SINT0==0){time_flag=1;}
01F7 9982 SBIC 0x10,2
01F8 C003 RJMP 0x01FC
01F9 E081 LDI R24,1
01FA 93800069 STS time_flag,R24
(0077) if(SINT1==0){write_flag=1;}
01FC 9983 SBIC 0x10,3
01FD C003 RJMP 0x0201
01FE E081 LDI R24,1
01FF 9380006A STS write_flag,R24
(0078) }
0201 940E02D8 CALL pop_gset1
0203 9029 LD R2,Y+
0204 BE2F OUT 0x3F,R2
0205 91F9 LD R31,Y+
0206 91E9 LD R30,Y+
0207 9199 LD R25,Y+
0208 9189 LD R24,Y+
0209 9139 LD R19,Y+
020A 9129 LD R18,Y+
020B 9119 LD R17,Y+
020C 9109 LD R16,Y+
020D 9039 LD R3,Y+
020E 9029 LD R2,Y+
020F 9518 RETI
_delay:
i --> R20
j --> R22
k --> R16
0210 940E02D3 CALL push_gset2
(0079) }
(0080) /***********************/
(0081) void delay(uint k)
(0082) {
(0083) uint i,j;
(0084) for(i=0;i<k;i++)
0212 2744 CLR R20
0213 2755 CLR R21
0214 C00B RJMP 0x0220
(0085) {
(0086) for(j=0;j<140;j++);
0215 2766 CLR R22
0216 2777 CLR R23
0217 C002 RJMP 0x021A
0218 5F6F SUBI R22,0xFF
0219 4F7F SBCI R23,0xFF
021A 386C CPI R22,0x8C
021B E0E0 LDI R30,0
021C 077E CPC R23,R30
021D F3D0 BCS 0x0218
021E 5F4F SUBI R20,0xFF
021F 4F5F SBCI R21,0xFF
0220 1740 CP R20,R16
0221 0751 CPC R21,R17
0222 F390 BCS 0x0215
0223 940E02C7 CALL pop_gset2
0225 9508 RET
_main:
0226 9722 SBIW R28,2
(0087) }
(0088) }
(0089) /***********************/
(0090) void main(void)
(0091) {
(0092) init_devices();
0227 DE3C RCALL _init_devices
0228 C061 RJMP 0x028A
(0093) while(1)
(0094) {
(0095) if(write_flag==1)
0229 9180006A LDS R24,write_flag
022B 3081 CPI R24,1
022C F519 BNE 0x0250
(0096) {SREG=0x00;
022D 2422 CLR R2
022E BE2F OUT 0x3F,R2
(0097) EEPROM_WRITE(200,set_sec);delay(10);
022F E081 LDI R24,1
0230 E090 LDI R25,0
0231 8399 STD Y+1,R25
0232 8388 STD Y+0,R24
0233 E621 LDI R18,0x61
0234 E030 LDI R19,0
0235 EC08 LDI R16,0xC8
0236 E010 LDI R17,0
0237 940E0326 CALL _EEPROMWriteBytes
0239 E00A LDI R16,0xA
023A E010 LDI R17,0
023B DFD4 RCALL _delay
(0098) EEPROM_WRITE(201,set_min);delay(10);
023C E081 LDI R24,1
023D E090 LDI R25,0
023E 8399 STD Y+1,R25
023F 8388 STD Y+0,R24
0240 E620 LDI R18,0x60
0241 E030 LDI R19,0
0242 EC09 LDI R16,0xC9
0243 E010 LDI R17,0
0244 940E0326 CALL _EEPROMWriteBytes
0246 E00A LDI R16,0xA
0247 E010 LDI R17,0
0248 DFC7 RCALL _delay
(0099) write_flag=0;
0249 2422 CLR R2
024A 9220006A STS write_flag,R2
(0100) dpw=1;
024C E081 LDI R24,1
024D 9380006C STS dpw,R24
(0101) SREG|=0x80;
024F 9478 BSET 7
(0102) }
(0103) if(time_flag==1)
0250 91800069 LDS R24,time_flag
0252 3081 CPI R24,1
0253 F519 BNE 0x0277
(0104) {SREG=0x00;
0254 2422 CLR R2
0255 BE2F OUT 0x3F,R2
(0105) EEPROM_READ(200,set_sec);delay(10);
0256 E081 LDI R24,1
0257 E090 LDI R25,0
0258 8399 STD Y+1,R25
0259 8388 STD Y+0,R24
025A E621 LDI R18,0x61
025B E030 LDI R19,0
025C EC08 LDI R16,0xC8
025D E010 LDI R17,0
025E 940E0302 CALL _EEPROMReadBytes
0260 E00A LDI R16,0xA
0261 E010 LDI R17,0
0262 DFAD RCALL _delay
(0106) EEPROM_READ(201,set_min);delay(10);
0263 E081 LDI R24,1
0264 E090 LDI R25,0
0265 8399 STD Y+1,R25
0266 8388 STD Y+0,R24
0267 E620 LDI R18,0x60
0268 E030 LDI R19,0
0269 EC09 LDI R16,0xC9
026A E010 LDI R17,0
026B 940E0302 CALL _EEPROMReadBytes
026D E00A LDI R16,0xA
026E E010 LDI R17,0
026F DFA0 RCALL _delay
(0107) SREG|=0x80;
0270 9478 BSET 7
(0108) dpt=1;
0271 E081 LDI R24,1
0272 9380006B STS dpt,R24
(0109) time_flag=0;
0274 2422 CLR R2
0275 92200069 STS time_flag,R2
(0110) }
(0111) if(dpt==1)
0277 9180006B LDS R24,dpt
0279 3081 CPI R24,1
027A F479 BNE 0x028A
(0112) {
(0113) if((sec==set_sec)&&(min==set_min))LED1_0;
FILE: <library>
027B 90200061 LDS R2,set_sec
027D 90300063 LDS R3,sec
027F 1432 CP R3,R2
0280 F449 BNE 0x028A
0281 90200060 LDS R2,set_min
0283 90300062 LDS R3,min
0285 1432 CP R3,R2
0286 F419 BNE 0x028A
0287 B388 IN R24,0x18
0288 7F8E ANDI R24,0xFE
0289 BB88 OUT 0x18,R24
028A CF9E RJMP 0x0229
028B 9622 ADIW R28,2
028C 9508 RET
mod16s:
028D 9468 BSET 6
028E 92DA ST R13,-Y
028F 2ED1 MOV R13,R17
0290 C004 RJMP 0x0295
div16s:
0291 94E8 BCLR 6
0292 92DA ST R13,-Y
0293 2ED1 MOV R13,R17
0294 26D3 EOR R13,R19
0295 FF17 SBRS R17,7
0296 C004 RJMP 0x029B
0297 9510 COM R17
0298 9500 COM R16
0299 5F0F SUBI R16,0xFF
029A 4F1F SBCI R17,0xFF
029B FF37 SBRS R19,7
029C C004 RJMP 0x02A1
029D 9530 COM R19
029E 9520 COM R18
029F 5F2F SUBI R18,0xFF
02A0 4F3F SBCI R19,0xFF
02A1 940E02AE CALL xdiv16u
02A3 FED7 SBRS R13,7
02A4 C004 RJMP 0x02A9
02A5 9510 COM R17
02A6 9500 COM R16
02A7 5F0F SUBI R16,0xFF
02A8 4F1F SBCI R17,0xFF
02A9 90D9 LD R13,Y+
02AA 9508 RET
mod16u:
02AB 9468 BSET 6
02AC C001 RJMP xdiv16u
div16u:
02AD 94E8 BCLR 6
xdiv16u:
02AE 92EA ST R14,-Y
02AF 92FA ST R15,-Y
02B0 938A ST R24,-Y
02B1 24EE CLR R14
02B2 24FF CLR R15
02B3 E180 LDI R24,0x10
02B4 0F00 LSL R16
02B5 1F11 ROL R17
02B6 1CEE ROL R14
02B7 1CFF ROL R15
02B8 16E2 CP R14,R18
02B9 06F3 CPC R15,R19
02BA F018 BCS 0x02BE
02BB 1AE2 SUB R14,R18
02BC 0AF3 SBC R15,R19
02BD 9503 INC R16
02BE 958A DEC R24
02BF F7A1 BNE 0x02B4
02C0 F416 BRTC 0x02C3
02C1 2D0E MOV R16,R14
02C2 2D1F MOV R17,R15
02C3 9189 LD R24,Y+
02C4 90F9 LD R15,Y+
02C5 90E9 LD R14,Y+
02C6 9508 RET
pop_gset2:
02C7 E0E2 LDI R30,2
02C8 940C02D9 JMP pop
pop_gset4:
02CA E0E8 LDI R30,0x8
02CB 940C02D9 JMP pop
push_gset5:
02CD 92FA ST R15,-Y
02CE 92EA ST R14,-Y
push_gset4:
02CF 92DA ST R13,-Y
02D0 92CA ST R12,-Y
push_gset3:
02D1 92BA ST R11,-Y
02D2 92AA ST R10,-Y
push_gset2:
02D3 937A ST R23,-Y
02D4 936A ST R22,-Y
push_gset1:
02D5 935A ST R21,-Y
02D6 934A ST R20,-Y
02D7 9508 RET
pop_gset1:
02D8 E0E1 LDI R30,1
pop:
02D9 9149 LD R20,Y+
02DA 9159 LD R21,Y+
02DB FDE0 SBRC R30,0
02DC 9508 RET
02DD 9169 LD R22,Y+
02DE 9179 LD R23,Y+
02DF FDE1 SBRC R30,1
02E0 9508 RET
02E1 90A9 LD R10,Y+
02E2 90B9 LD R11,Y+
02E3 FDE2 SBRC R30,2
02E4 9508 RET
02E5 90C9 LD R12,Y+
02E6 90D9 LD R13,Y+
02E7 FDE3 SBRC R30,3
02E8 9508 RET
02E9 90E9 LD R14,Y+
02EA 90F9 LD R15,Y+
02EB 9508 RET
_EEPROMread:
02EC BB1F OUT 0x1F,R17
02ED BB0E OUT 0x1E,R16
02EE 9AE0 SBI 0x1C,0
02EF B30D IN R16,0x1D
02F0 9508 RET
_EEPROMwrite:
02F1 940E02D5 CALL push_gset1
02F3 BB1F OUT 0x1F,R17
02F4 BB0E OUT 0x1E,R16
02F5 BB2D OUT 0x1D,R18
02F6 B74F IN R20,0x3F
02F7 94F8 BCLR 7
02F8 9AE2 SBI 0x1C,2
02F9 9AE1 SBI 0x1C,1
02FA 99E1 SBIC 0x1C,1
02FB CFFE RJMP 0x02FA
02FC BF4F OUT 0x3F,R20
02FD 2700 CLR R16
02FE 2711 CLR R17
02FF 940E02D8 CALL pop_gset1
0301 9508 RET
_EEPROMReadBytes:
0302 940E02CF CALL push_gset4
0304 2EC2 MOV R12,R18
0305 2ED3 MOV R13,R19
0306 2EA0 MOV R10,R16
0307 2EB1 MOV R11,R17
0308 8568 LDD R22,Y+8
0309 8579 LDD R23,Y+9
030A 2D4C MOV R20,R12
030B 2D5D MOV R21,R13
030C C00E RJMP 0x031B
030D 2D0A MOV R16,R10
030E 2D1B MOV R17,R11
030F 940E02EC CALL _EEPROMread
0311 2FE4 MOV R30,R20
0312 2FF5 MOV R31,R21
0313 8300 STD Z+0,R16
0314 2D8A MOV R24,R10
0315 2D9B MOV R25,R11
0316 9601 ADIW R24,1
0317 2EA8 MOV R10,R24
0318 2EB9 MOV R11,R25
0319 5F4F SUBI R20,0xFF
031A 4F5F SBCI R21,0xFF
031B 2E26 MOV R2,R22
031C 2E37 MOV R3,R23
031D 5061 SUBI R22,1
031E 4070 SBCI R23,0
031F 2022 TST R2
0320 F761 BNE 0x030D
0321 2033 TST R3
0322 F751 BNE 0x030D
0323 940E02CA CALL pop_gset4
0325 9508 RET
_EEPROMWriteBytes:
0326 940E02CF CALL push_gset4
0328 2EC2 MOV R12,R18
0329 2ED3 MOV R13,R19
032A 2EA0 MOV R10,R16
032B 2EB1 MOV R11,R17
032C 8568 LDD R22,Y+8
032D 8579 LDD R23,Y+9
032E 2D4C MOV R20,R12
032F 2D5D MOV R21,R13
0330 C00E RJMP 0x033F
0331 2FE4 MOV R30,R20
0332 2FF5 MOV R31,R21
0333 8120 LDD R18,Z+0
0334 2D0A MOV R16,R10
0335 2D1B MOV R17,R11
0336 940E02F1 CALL _EEPROMwrite
0338 2D8A MOV R24,R10
0339 2D9B MOV R25,R11
033A 9601 ADIW R24,1
033B 2EA8 MOV R10,R24
033C 2EB9 MOV R11,R25
033D 5F4F SUBI R20,0xFF
033E 4F5F SBCI R21,0xFF
033F 2E26 MOV R2,R22
0340 2E37 MOV R3,R23
0341 5061 SUBI R22,1
0342 4070 SBCI R23,0
0343 2022 TST R2
0344 F761 BNE 0x0331
0345 2033 TST R3
0346 F751 BNE 0x0331
0347 940E02CA CALL pop_gset4
0349 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -