📄 irr.lst
字号:
271 BC2C OUT 0x2C,R2
(0060) TCCR1A=0x00; //普通模式
272 BC2F OUT 0x2F,R2
(0061) TCCR1B=0x05; //1024分频
273 E085 LDI R24,5
274 BD8E OUT 0x2E,R24
275 9508 RET
_main:
276 9722 SBIW R28,2
(0062) }
(0063)
(0064) //主函数
(0065) main()
(0066) {
(0067) //初始化端口
(0068) DDRA=0xff;
277 EF8F LDI R24,0xFF
278 BB8A OUT 0x1A,R24
(0069) PORTA=0x00;
279 2422 CLR R2
27A BA2B OUT 0x1B,R2
(0070) DDRB=0xff;
27B BB87 OUT 0x17,R24
(0071) DDRD=0x00; //中断输入
27C BA21 OUT 0x11,R2
(0072) PORTD=0xff; //内部上拉
27D BB82 OUT 0x12,R24
(0073)
(0074) t1_init(); //定时器t1初始化
27E DFEF RCALL _t1_init
(0075)
(0076) MCUCR = 0x02; //下降沿中断
27F E082 LDI R24,2
280 BF85 OUT 0x35,R24
(0077) GICR = 0x40; //开外部中断int_0
281 E480 LDI R24,0x40
282 BF8B OUT 0x3B,R24
(0078) TIMSK = 0x00;
283 2422 CLR R2
284 BE29 OUT 0x39,R2
(0079) SREG=0x80; //开全局中断
285 E880 LDI R24,0x80
286 BF8F OUT 0x3F,R24
(0080) s_s=1; //开机进行一次显示
287 E081 LDI R24,1
288 9380 0061 STS s_s,R24
28A C142 RJMP 0x03CD
(0081) while(1)
(0082) {
(0083) ds=TCNT1L;
28B B42C IN R2,0x2C
28C 9220 0064 STS ds,R2
(0084) if(ds>250) //定时器超时,接收复位
28E EF8A LDI R24,0xFA
28F 1582 CP R24,R2
290 F4A0 BCC 0x02A5
(0085) {
(0086) TCNT1L=0;
291 2422 CLR R2
292 BC2C OUT 0x2C,R2
(0087) irr_b=0;
293 9220 0060 STS irr_b,R2
(0088) da=0;
295 E080 LDI R24,0
296 E090 LDI R25,0
297 E0A0 LDI R26,0
298 E0B0 LDI R27,0
299 9390 0066 STS da+1,R25
29B 9380 0065 STS da,R24
29D 93B0 0068 STS da+3,R27
29F 93A0 0067 STS da+2,R26
(0089) wb=0;
2A1 9220 0062 STS wb,R2
(0090) s_s=0;
2A3 9220 0061 STS s_s,R2
(0091) }
(0092) if(s_s==1) //显示开关打开,开始显示
2A5 9180 0061 LDS R24,s_s
2A7 3081 CPI R24,1
2A8 F009 BEQ 0x02AA
2A9 C123 RJMP 0x03CD
(0093) {
(0094) SREG=0x00; //关闭全局中断
2AA 2422 CLR R2
2AB BE2F OUT 0x3F,R2
(0095) LcdInit(); //1602初始化
2AC DDF5 RCALL _LcdInit
(0096) //显示设备码
(0097) d1=da>>24;
2AD E188 LDI R24,0x18
2AE E090 LDI R25,0
2AF 9120 0067 LDS R18,da+2
2B1 9130 0068 LDS R19,da+3
2B3 9100 0065 LDS R16,da
2B5 9110 0066 LDS R17,da+1
2B7 938A ST R24,-Y
2B8 940E 03D0 CALL asr32
2BA 9300 0071 STS d1,R16
(0098) ten_1=d1/100;
2BC E614 LDI R17,0x64
2BD 940E 03DE CALL div8u
2BF 9300 006D STS ten_1,R16
(0099) ten_2=(d1-(100*ten_1))/10;
2C1 2E20 MOV R2,R16
2C2 E684 LDI R24,0x64
2C3 9D82 MUL R24,R2
2C4 9100 0071 LDS R16,d1
2C6 1900 SUB R16,R0
2C7 E01A LDI R17,0xA
2C8 940E 03DE CALL div8u
2CA 9300 006C STS ten_2,R16
(0100) ten_3=d1-(100*ten_1)-ten_2*10;
2CC 9020 006D LDS R2,ten_1
2CE E684 LDI R24,0x64
2CF 9D82 MUL R24,R2
2D0 9020 0071 LDS R2,d1
2D2 1820 SUB R2,R0
2D3 2E30 MOV R3,R16
2D4 E08A LDI R24,0xA
2D5 9D83 MUL R24,R3
2D6 1820 SUB R2,R0
2D7 9220 006B STS ten_3,R2
(0101) WriteNum(1,0,ten_1);
2D9 9020 006D LDS R2,ten_1
2DB 2433 CLR R3
2DC 8239 STD Y+1,R3
2DD 8228 STD Y+0,R2
2DE 2722 CLR R18
2DF 2733 CLR R19
2E0 E001 LDI R16,1
2E1 E010 LDI R17,0
2E2 DE6D RCALL _WriteNum
(0102) WriteNum(1,1,ten_2);
2E3 9020 006C LDS R2,ten_2
2E5 2433 CLR R3
2E6 8239 STD Y+1,R3
2E7 8228 STD Y+0,R2
2E8 E021 LDI R18,1
2E9 E030 LDI R19,0
2EA E001 LDI R16,1
2EB E010 LDI R17,0
2EC DE63 RCALL _WriteNum
(0103) WriteNum(1,2,ten_3);
2ED 9020 006B LDS R2,ten_3
2EF 2433 CLR R3
2F0 8239 STD Y+1,R3
2F1 8228 STD Y+0,R2
2F2 E022 LDI R18,2
2F3 E030 LDI R19,0
2F4 E001 LDI R16,1
2F5 E010 LDI R17,0
2F6 DE59 RCALL _WriteNum
(0104) //显示设备码反码
(0105) d1=da>>16;
2F7 9020 0067 LDS R2,da+2
2F9 9030 0068 LDS R3,da+3
2FB 9220 0071 STS d1,R2
(0106) ten_1=d1/100;
2FD E614 LDI R17,0x64
2FE 2D02 MOV R16,R2
2FF 940E 03DE CALL div8u
301 9300 006D STS ten_1,R16
(0107) ten_2=(d1-(100*ten_1))/10;
303 2E20 MOV R2,R16
304 E684 LDI R24,0x64
305 9D82 MUL R24,R2
306 9100 0071 LDS R16,d1
308 1900 SUB R16,R0
309 E01A LDI R17,0xA
30A 940E 03DE CALL div8u
30C 9300 006C STS ten_2,R16
(0108) ten_3=d1-(100*ten_1)-ten_2*10;
30E 9020 006D LDS R2,ten_1
310 E684 LDI R24,0x64
311 9D82 MUL R24,R2
312 9020 0071 LDS R2,d1
314 1820 SUB R2,R0
315 2E30 MOV R3,R16
316 E08A LDI R24,0xA
317 9D83 MUL R24,R3
318 1820 SUB R2,R0
319 9220 006B STS ten_3,R2
(0109) WriteNum(1,4,ten_1);
31B 9020 006D LDS R2,ten_1
31D 2433 CLR R3
31E 8239 STD Y+1,R3
31F 8228 STD Y+0,R2
320 E024 LDI R18,4
321 E030 LDI R19,0
322 E001 LDI R16,1
323 E010 LDI R17,0
324 DE2B RCALL _WriteNum
(0110) WriteNum(1,5,ten_2);
325 9020 006C LDS R2,ten_2
327 2433 CLR R3
328 8239 STD Y+1,R3
329 8228 STD Y+0,R2
32A E025 LDI R18,5
32B E030 LDI R19,0
32C E001 LDI R16,1
32D E010 LDI R17,0
32E DE21 RCALL _WriteNum
(0111) WriteNum(1,6,ten_3);
32F 9020 006B LDS R2,ten_3
331 2433 CLR R3
332 8239 STD Y+1,R3
333 8228 STD Y+0,R2
334 E026 LDI R18,6
335 E030 LDI R19,0
336 E001 LDI R16,1
337 E010 LDI R17,0
338 DE17 RCALL _WriteNum
(0112) //显示键码
(0113) d1=da>>8;
339 E088 LDI R24,0x8
33A E090 LDI R25,0
33B 9120 0067 LDS R18,da+2
33D 9130 0068 LDS R19,da+3
33F 9100 0065 LDS R16,da
341 9110 0066 LDS R17,da+1
343 938A ST R24,-Y
344 940E 03D0 CALL asr32
346 9300 0071 STS d1,R16
(0114) ten_1=d1/100;
348 E614 LDI R17,0x64
349 940E 03DE CALL div8u
34B 9300 006D STS ten_1,R16
(0115) ten_2=(d1-(100*ten_1))/10;
34D 2E20 MOV R2,R16
34E E684 LDI R24,0x64
34F 9D82 MUL R24,R2
350 9100 0071 LDS R16,d1
352 1900 SUB R16,R0
353 E01A LDI R17,0xA
354 940E 03DE CALL div8u
356 9300 006C STS ten_2,R16
(0116) ten_3=d1-(100*ten_1)-ten_2*10;
358 9020 006D LDS R2,ten_1
35A E684 LDI R24,0x64
35B 9D82 MUL R24,R2
35C 9020 0071 LDS R2,d1
35E 1820 SUB R2,R0
35F 2E30 MOV R3,R16
360 E08A LDI R24,0xA
361 9D83 MUL R24,R3
362 1820 SUB R2,R0
363 9220 006B STS ten_3,R2
(0117) WriteNum(1,8,ten_1);
365 9020 006D LDS R2,ten_1
367 2433 CLR R3
368 8239 STD Y+1,R3
369 8228 STD Y+0,R2
36A E028 LDI R18,0x8
36B E030 LDI R19,0
36C E001 LDI R16,1
36D E010 LDI R17,0
36E DDE1 RCALL _WriteNum
(0118) WriteNum(1,9,ten_2);
36F 9020 006C LDS R2,ten_2
371 2433 CLR R3
372 8239 STD Y+1,R3
373 8228 STD Y+0,R2
374 E029 LDI R18,0x9
375 E030 LDI R19,0
376 E001 LDI R16,1
377 E010 LDI R17,0
378 DDD7 RCALL _WriteNum
(0119) WriteNum(1,10,ten_3);
379 9020 006B LDS R2,ten_3
37B 2433 CLR R3
37C 8239 STD Y+1,R3
37D 8228 STD Y+0,R2
37E E02A LDI R18,0xA
37F E030 LDI R19,0
380 E001 LDI R16,1
381 E010 LDI R17,0
382 DDCD RCALL _WriteNum
(0120) //显示键码反码
(0121) d1=da;
383 9020 0065 LDS R2,da
385 9030 0066 LDS R3,da+1
387 9220 0071 STS d1,R2
(0122) ten_1=d1/100;
389 E614 LDI R17,0x64
38A 2D02 MOV R16,R2
38B 940E 03DE CALL div8u
38D 9300 006D STS ten_1,R16
(0123) ten_2=(d1-(100*ten_1))/10;
38F 2E20 MOV R2,R16
390 E684 LDI R24,0x64
391 9D82 MUL R24,R2
392 9100 0071 LDS R16,d1
394 1900 SUB R16,R0
395 E01A LDI R17,0xA
396 940E 03DE CALL div8u
398 9300 006C STS ten_2,R16
(0124) ten_3=d1-(100*ten_1)-ten_2*10;
39A 9020 006D LDS R2,ten_1
39C E684 LDI R24,0x64
39D 9D82 MUL R24,R2
39E 9020 0071 LDS R2,d1
3A0 1820 SUB R2,R0
3A1 2E30 MOV R3,R16
3A2 E08A LDI R24,0xA
3A3 9D83 MUL R24,R3
3A4 1820 SUB R2,R0
3A5 9220 006B STS ten_3,R2
(0125) WriteNum(1,12,ten_1);
3A7 9020 006D LDS R2,ten_1
3A9 2433 CLR R3
3AA 8239 STD Y+1,R3
3AB 8228 STD Y+0,R2
3AC E02C LDI R18,0xC
3AD E030 LDI R19,0
3AE E001 LDI R16,1
3AF E010 LDI R17,0
3B0 DD9F RCALL _WriteNum
(0126) WriteNum(1,13,ten_2);
3B1 9020 006C LDS R2,ten_2
3B3 2433 CLR R3
3B4 8239 STD Y+1,R3
3B5 8228 STD Y+0,R2
3B6 E02D LDI R18,0xD
3B7 E030 LDI R19,0
3B8 E001 LDI R16,1
3B9 E010 LDI R17,0
3BA DD95 RCALL _WriteNum
(0127) WriteNum(1,14,ten_3);
3BB 9020 006B LDS R2,ten_3
3BD 2433 CLR R3
3BE 8239 STD Y+1,R3
3BF 8228 STD Y+0,R2
3C0 E02E LDI R18,0xE
3C1 E030 LDI R19,0
3C2 E001 LDI R16,1
3C3 E010 LDI R17,0
3C4 DD8B RCALL _WriteNum
(0128) //复位D端口
(0129) DDRD=0x00; //中断输入
3C5 2422 CLR R2
3C6 BA21 OUT 0x11,R2
(0130) PORTD=0xff; //内部上拉
3C7 EF8F LDI R24,0xFF
3C8 BB82 OUT 0x12,R24
(0131) s_s=0; //关闭显示开关
3C9 9220 0061 STS s_s,R2
(0132) SREG=0x80; //开全局中断
FILE: <library>
3CB E880 LDI R24,0x80
3CC BF8F OUT 0x3F,R24
3CD CEBD RJMP 0x028B
3CE 9622 ADIW R28,2
3CF 9508 RET
asr32:
3D0 920F PUSH R0
3D1 9009 LD R0,Y+
3D2 2000 TST R0
3D3 F031 BEQ 0x03DA
3D4 9535 ASR R19
3D5 9527 ROR R18
3D6 9517 ROR R17
3D7 9507 ROR R16
3D8 940A DEC R0
3D9 CFF8 RJMP 0x03D2
3DA 900F POP R0
3DB 9508 RET
mod8u:
3DC 9468 BSET 6
3DD C001 RJMP xdiv8u
div8u:
3DE 94E8 BCLR 6
xdiv8u:
3DF 932A ST R18,-Y
3E0 92FA ST R15,-Y
3E1 92EA ST R14,-Y
3E2 24FF CLR R15
3E3 24EE CLR R14
3E4 E120 LDI R18,0x10
3E5 0F00 LSL R16
3E6 1CFF ROL R15
3E7 1CEE ROL R14
3E8 16E1 CP R14,R17
3E9 F010 BCS 0x03EC
3EA 1AE1 SUB R14,R17
3EB 9503 INC R16
3EC 952A DEC R18
3ED F7B9 BNE 0x03E5
3EE F40E BRTC 0x03F0
3EF 2D0E MOV R16,R14
3F0 90E9 LD R14,Y+
3F1 90F9 LD R15,Y+
3F2 9129 LD R18,Y+
3F3 9508 RET
push_xgsetF00C:
3F4 937A ST R23,-Y
3F5 936A ST R22,-Y
3F6 935A ST R21,-Y
3F7 934A ST R20,-Y
3F8 92BA ST R11,-Y
3F9 92AA ST R10,-Y
3FA 9508 RET
pop_xgsetF00C:
3FB 90A9 LD R10,Y+
3FC 90B9 LD R11,Y+
3FD 9149 LD R20,Y+
3FE 9159 LD R21,Y+
3FF 9169 LD R22,Y+
400 9179 LD R23,Y+
401 9508 RET
push_xgsetF03C:
402 937A ST R23,-Y
403 936A ST R22,-Y
404 935A ST R21,-Y
405 934A ST R20,-Y
406 92DA ST R13,-Y
407 92CA ST R12,-Y
408 92BA ST R11,-Y
409 92AA ST R10,-Y
40A 9508 RET
pop_xgsetF03C:
40B 90A9 LD R10,Y+
40C 90B9 LD R11,Y+
40D 90C9 LD R12,Y+
40E 90D9 LD R13,Y+
40F 9149 LD R20,Y+
410 9159 LD R21,Y+
411 9169 LD R22,Y+
412 9179 LD R23,Y+
413 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -