📄 clock.lst
字号:
0142 1FF9 ADC R31,R25
0143 8220 STD R2,0+Z
(0106) ledbuff[4-2*t1]&=0x7f;
0144 2E24 MOV R2,R20
0145 2433 CLR R3
0146 0C22 LSL R2
0147 1C33 ROL R3
0148 E084 LDI R24,4
0149 E090 LDI R25,0
014A 1982 SUB R24,R2
014B 0993 SBC R25,R3
014C E6E0 LDI R30,0x60
014D E0F0 LDI R31,0
014E 0F8E ADD R24,R30
014F 1F9F ADC R25,R31
0150 2E28 MOV R2,R24
0151 2E39 MOV R3,R25
0152 2DE2 MOV R30,R2
0153 2DF3 MOV R31,R3
0154 8180 LDD R24,0+Z
0155 778F ANDI R24,0x7F
0156 8380 STD R24,0+Z
(0107) hextobcd();
0157 DEF6 RCALL _hextobcd
(0108) }
0158 9543 INC R20
0159 3043 CPI R20,3
015A F408 BCC 0x015C
015B CF66 RJMP 0x00C2
(0109) }
015C D13B RCALL pop_gset3
015D 9508 RET
(0110) /*****************************************
(0111) 主程序功能:演示了电脑时钟程序的工作过程
(0112) *****************************************/
(0113) void main(void)
(0114) {
(0115) unsigned char i,j;
(0116) MCUCR=0;
_main:
i --> R20
j --> R22
015E 2422 CLR R2
015F BE25 OUT P35,R2
(0117) flag=0;
0160 92200069 STS R2,0x69
(0118) port_init(); //端口初始化
0162 DED7 RCALL _port_init
(0119) i=scan_key();
0163 D06F RCALL _scan_key
0164 2E20 MOV R2,R16
0165 2E31 MOV R3,R17
0166 2D42 MOV R20,R2
0167 C03A RJMP 0x01A2
(0120) while(1)
(0121) {
(0122) i=scan_key();
0168 D06A RCALL _scan_key
0169 2E20 MOV R2,R16
016A 2E31 MOV R3,R17
016B 2D42 MOV R20,R2
(0123) if (i!=0x7f)
016C 374F CPI R20,0x7F
016D F061 BEQ 0x017A
(0124) {
(0125) do
(0126) {
(0127) j=scan_key();
016E D064 RCALL _scan_key
016F 2E20 MOV R2,R16
0170 2E31 MOV R3,R17
0171 2D62 MOV R22,R2
(0128) display();
0172 DF2F RCALL _display
(0129) }
(0130) while (i==j);
0173 1746 CP R20,R22
0174 F3C9 BEQ 0x016E
(0131) if ((i&0x80)==0x80)
0175 2F84 MOV R24,R20
0176 7880 ANDI R24,0x80
0177 3880 CPI R24,0x80
0178 F409 BNE 0x017A
(0132) settime();//设定时间
0179 DF45 RCALL _settime
(0133) }
(0134) if(flag==1)
017A 91800069 LDS R24,0x69
017C 3081 CPI R24,1
017D F519 BNE 0x01A1
(0135) {
(0136) flag=0;
017E 2422 CLR R2
017F 92200069 STS R2,0x69
(0137) if (time[2]>=60)
0181 91800068 LDS R24,0x68
0183 338C CPI R24,0x3C
0184 F040 BCS 0x018D
(0138) {
(0139) time[2]-=60;
0185 538C SUBI R24,0x3C
0186 93800068 STS R24,0x68
(0140) time[1]++;
0188 91800067 LDS R24,0x67
018A 5F8F SUBI R24,0xFF
018B 93800067 STS R24,0x67
(0141) }
(0142) if (time[1]>=60)
018D 91800067 LDS R24,0x67
018F 338C CPI R24,0x3C
0190 F040 BCS 0x0199
(0143) {
(0144) time[1]-=60;
0191 538C SUBI R24,0x3C
0192 93800067 STS R24,0x67
(0145) time[0]++;
0194 91800066 LDS R24,0x66
0196 5F8F SUBI R24,0xFF
0197 93800066 STS R24,0x66
(0146) }
(0147) if (time[0]>=24)
0199 91800066 LDS R24,0x66
019B 3188 CPI R24,0x18
019C F018 BCS 0x01A0
(0148) {
(0149) time[0]-=24;
019D 5188 SUBI R24,0x18
019E 93800066 STS R24,0x66
(0150) }
(0151) hextobcd();
01A0 DEAD RCALL _hextobcd
(0152) }
(0153) display();
01A1 DF00 RCALL _display
(0154) }
01A2 CFC5 RJMP 0x0168
(0155) }
01A3 9508 RET
_timer1:
01A4 938A ST R24,-Y
01A5 939A ST R25,-Y
01A6 B78F IN R24,P3F
01A7 938A ST R24,-Y
(0156) /*****************************************
(0157) T1溢出中断
(0158) *****************************************/
(0159) void timer1(void)
(0160) {
(0161) flag=1;
01A8 E081 LDI R24,1
01A9 93800069 STS R24,0x69
(0162) time[2]++;
01AB 91800068 LDS R24,0x68
01AD 5F8F SUBI R24,0xFF
01AE 93800068 STS R24,0x68
(0163) TCNT1=0x85ee;
01B0 EE8E LDI R24,0xEE
01B1 E895 LDI R25,0x85
01B2 9390004D STS R25,0x4D
01B4 9380004C STS R24,0x4C
(0164) }FILE: <library>
01B6 9189 LD R24,Y+
01B7 BF8F OUT P3F,R24
01B8 9199 LD R25,Y+
01B9 9189 LD R24,Y+
01BA 9518 RETI
_delay_1ms:
01BB E001 LDI R16,1
01BC E010 LDI R17,0
01BD C002 RJMP 0x01C0
01BE 5F0F SUBI R16,0xFF
01BF 4F1F SBCI R17,0xFF
01C0 3706 CPI R16,0x76
01C1 E0E4 LDI R30,4
01C2 071E CPC R17,R30
01C3 F3D0 BCS 0x01BE
01C4 9508 RET
_delay_ms:
01C5 D0C7 RCALL push_gset2
01C6 2F60 MOV R22,R16
01C7 2F71 MOV R23,R17
01C8 2744 CLR R20
01C9 2755 CLR R21
01CA C003 RJMP 0x01CE
01CB DFEF RCALL _delay_1ms
01CC 5F4F SUBI R20,0xFF
01CD 4F5F SBCI R21,0xFF
01CE 1746 CP R20,R22
01CF 0757 CPC R21,R23
01D0 F3D0 BCS 0x01CB
01D1 D0C4 RCALL pop_gset2
01D2 9508 RET
_scan_key:
01D3 D0BF RCALL push_gset4
01D4 24AA CLR R10
01D5 24BB CLR R11
01D6 E08F LDI R24,0xF
01D7 BB84 OUT P14,R24
01D8 EF8F LDI R24,0xFF
01D9 BB85 OUT P15,R24
01DA B381 IN R24,P11
01DB 778F ANDI R24,0x7F
01DC BB81 OUT P11,R24
01DD 2744 CLR R20
01DE C06F RJMP 0x024E
01DF E001 LDI R16,1
01E0 2F14 MOV R17,R20
01E1 D0BA RCALL lsl8
01E2 2E20 MOV R2,R16
01E3 9420 COM R2
01E4 BA25 OUT P15,R2
01E5 DFD5 RCALL _delay_1ms
01E6 B383 IN R24,P13
01E7 7F80 ANDI R24,0xF0
01E8 2EC8 MOV R12,R24
01E9 9987 SBIC P10,7
01EA C002 RJMP 0x01ED
01EB 6081 ORI R24,1
01EC 2EC8 MOV R12,R24
01ED 2D8C MOV R24,R12
01EE 3F80 CPI R24,0xF0
01EF F409 BNE 0x01F1
01F0 C05A RJMP 0x024B
01F1 E005 LDI R16,5
01F2 E010 LDI R17,0
01F3 DFD1 RCALL _delay_ms
01F4 B383 IN R24,P13
01F5 7F80 ANDI R24,0xF0
01F6 2EC8 MOV R12,R24
01F7 9987 SBIC P10,7
01F8 C006 RJMP 0x01FF
01F9 6081 ORI R24,1
01FA 2EC8 MOV R12,R24
01FB E081 LDI R24,1
01FC E090 LDI R25,0
01FD 2EA8 MOV R10,R24
01FE 2EB9 MOV R11,R25
01FF 2D8C MOV R24,R12
0200 3F80 CPI R24,0xF0
0201 F409 BNE 0x0203
0202 C048 RJMP 0x024B
0203 7F80 ANDI R24,0xF0
0204 2EC8 MOV R12,R24
0205 2D6C MOV R22,R12
0206 2777 CLR R23
0207 3B60 CPI R22,0xB0
0208 E0E0 LDI R30,0
0209 077E CPC R23,R30
020A F0F1 BEQ 0x0229
020B EB80 LDI R24,0xB0
020C E090 LDI R25,0
020D 1786 CP R24,R22
020E 0797 CPC R25,R23
020F F02C BLT 0x0215
0210 3760 CPI R22,0x70
0211 E0E0 LDI R30,0
0212 077E CPC R23,R30
0213 F071 BEQ 0x0222
0214 C029 RJMP 0x023E
0215 3D60 CPI R22,0xD0
0216 E0E0 LDI R30,0
0217 077E CPC R23,R30
0218 F0B9 BEQ 0x0230
0219 3D60 CPI R22,0xD0
021A E0E0 LDI R30,0
021B 077E CPC R23,R30
021C F10C BLT 0x023E
021D 3E60 CPI R22,0xE0
021E E0E0 LDI R30,0
021F 077E CPC R23,R30
0220 F0B1 BEQ 0x0237
0221 C01C RJMP 0x023E
0222 2E24 MOV R2,R20
0223 0C22 LSL R2
0224 0C22 LSL R2
0225 E08F LDI R24,0xF
0226 2EC8 MOV R12,R24
0227 18C2 SUB R12,R2
0228 C017 RJMP 0x0240
0229 2E24 MOV R2,R20
022A 0C22 LSL R2
022B 0C22 LSL R2
022C E08E LDI R24,0xE
022D 2EC8 MOV R12,R24
022E 18C2 SUB R12,R2
022F C010 RJMP 0x0240
0230 2E24 MOV R2,R20
0231 0C22 LSL R2
0232 0C22 LSL R2
0233 E08D LDI R24,0xD
0234 2EC8 MOV R12,R24
0235 18C2 SUB R12,R2
0236 C009 RJMP 0x0240
0237 2E24 MOV R2,R20
0238 0C22 LSL R2
0239 0C22 LSL R2
023A E08C LDI R24,0xC
023B 2EC8 MOV R12,R24
023C 18C2 SUB R12,R2
023D C002 RJMP 0x0240
023E E78F LDI R24,0x7F
023F 2EC8 MOV R12,R24
0240 E081 LDI R24,1
0241 E090 LDI R25,0
0242 16A8 CP R10,R24
0243 06B9 CPC R11,R25
0244 F419 BNE 0x0248
0245 2D8C MOV R24,R12
0246 6880 ORI R24,0x80
0247 2EC8 MOV R12,R24
0248 2D0C MOV R16,R12
0249 2711 CLR R17
024A C008 RJMP 0x0253
024B EF8F LDI R24,0xFF
024C BB85 OUT P15,R24
024D 9543 INC R20
024E 3044 CPI R20,4
024F F408 BCC 0x0251
0250 CF8E RJMP 0x01DF
0251 E70F LDI R16,0x7F
0252 E010 LDI R17,0
0253 D046 RCALL pop_gset4
0254 9508 RET
mpy8s:
0255 920A ST R0,-Y
0256 2400 CLR R0
0257 2300 TST R16
0258 F029 BEQ 0x025E
0259 9506 LSR R16
025A F408 BCC 0x025C
025B 0E01 ADD R0,R17
025C 0F11 LSL R17
025D CFF9 RJMP 0x0257
025E 2D00 MOV R16,R0
025F 9009 LD R0,Y+
0260 9508 RET
mod8u:
0261 9468 BSET 6
0262 C001 RJMP 0x0264
div8u:
0263 94E8 BCLR 6
0264 92FA ST R15,-Y
0265 18FF SUB R15,R15
0266 E029 LDI R18,0x9
0267 1F00 ROL R16
0268 952A DEC R18
0269 F421 BNE 0x026E
026A F40E BRTC 0x026C
026B 2D0F MOV R16,R15
026C 90F9 LD R15,Y+
026D 9508 RET
026E 1CFF ROL R15
026F 1AF1 SUB R15,R17
0270 F418 BCC 0x0274
0271 0EF1 ADD R15,R17
0272 9488 BCLR 0
0273 CFF3 RJMP 0x0267
0274 9408 BSET 0
0275 CFF1 RJMP 0x0267
push_gset1:
0276 935A ST R21,-Y
0277 934A ST R20,-Y
0278 9508 RET
pop_gset1:
0279 E0E1 LDI R30,1
pop:
027A 9149 LD R20,Y+
027B 9159 LD R21,Y+
027C FDE0 SBRC R30,0
027D 9508 RET
027E 9169 LD R22,Y+
027F 9179 LD R23,Y+
0280 FDE1 SBRC R30,1
0281 9508 RET
0282 90A9 LD R10,Y+
0283 90B9 LD R11,Y+
0284 FDE2 SBRC R30,2
0285 9508 RET
0286 90C9 LD R12,Y+
0287 90D9 LD R13,Y+
0288 FDE3 SBRC R30,3
0289 9508 RET
028A 90E9 LD R14,Y+
028B 90F9 LD R15,Y+
028C 9508 RET
push_gset2:
028D 937A ST R23,-Y
028E 936A ST R22,-Y
028F CFE6 RJMP push_gset1
push_gset3:
0290 92BA ST R11,-Y
0291 92AA ST R10,-Y
0292 CFFA RJMP push_gset2
push_gset4:
0293 92DA ST R13,-Y
0294 92CA ST R12,-Y
0295 CFFA RJMP push_gset3
pop_gset2:
0296 E0E2 LDI R30,2
0297 CFE2 RJMP pop
pop_gset3:
0298 E0E4 LDI R30,4
0299 CFE0 RJMP pop
pop_gset4:
029A E0E8 LDI R30,0x8
029B CFDE RJMP pop
lsl8:
029C 2311 TST R17
029D F019 BEQ 0x02A1
029E 0F00 LSL R16
029F 951A DEC R17
02A0 CFFB RJMP lsl8
02A1 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -