📄 irr.lis
字号:
046A 81E0 ldi R24,1
046C 80930100 sts _s_s,R24
0470 42C1 xjmp L60
0472 L59:
0472 .dbline 82
0472 ; while(1)
0472 ; {
0472 .dbline 83
0472 ; ds=TCNT1L;
0472 2CB4 in R2,0x2c
0474 20920400 sts _ds,R2
0478 .dbline 84
0478 ; if(ds>250) //定时器超时,接收复位
0478 8AEF ldi R24,250
047A 8215 cp R24,R2
047C A0F4 brsh L62
047E X21:
047E .dbline 85
047E ; {
047E .dbline 86
047E ; TCNT1L=0;
047E 2224 clr R2
0480 2CBC out 0x2c,R2
0482 .dbline 87
0482 ; irr_b=0;
0482 20920000 sts _irr_b,R2
0486 .dbline 88
0486 ; da=0;
0486 80E0 ldi R24,0
0488 90E0 ldi R25,0
048A A0E0 ldi R26,0
048C B0E0 ldi R27,0
048E 90930600 sts _da+1,R25
0492 80930500 sts _da,R24
0496 B0930800 sts _da+2+1,R27
049A A0930700 sts _da+2,R26
049E .dbline 89
049E ; wb=0;
049E 20920200 sts _wb,R2
04A2 .dbline 90
04A2 ; s_s=0;
04A2 20920100 sts _s_s,R2
04A6 .dbline 91
04A6 ; }
04A6 L62:
04A6 .dbline 92
04A6 ; if(s_s==1) //显示开关打开,开始显示
04A6 80910100 lds R24,_s_s
04AA 8130 cpi R24,1
04AC 09F0 breq X24
04AE 23C1 xjmp L64
04B0 X24:
04B0 X22:
04B0 .dbline 93
04B0 ; {
04B0 .dbline 94
04B0 ; SREG=0x00; //关闭全局中断
04B0 2224 clr R2
04B2 2FBE out 0x3f,R2
04B4 .dbline 95
04B4 ; LcdInit(); //1602初始化
04B4 F5DD xcall _LcdInit
04B6 .dbline 97
04B6 ; //显示设备码
04B6 ; d1=da>>24;
04B6 88E1 ldi R24,24
04B8 90E0 ldi R25,0
04BA 20910700 lds R18,_da+2
04BE 30910800 lds R19,_da+2+1
04C2 00910500 lds R16,_da
04C6 10910600 lds R17,_da+1
04CA 8A93 st -y,R24
04CC 0E940000 xcall asr32
04D0 00930800 sts _d1,R16
04D4 .dbline 98
04D4 ; ten_1=d1/100;
04D4 14E6 ldi R17,100
04D6 0E940000 xcall div8u
04DA 00930400 sts _ten_1,R16
04DE .dbline 99
04DE ; ten_2=(d1-(100*ten_1))/10;
04DE 202E mov R2,R16
04E0 84E6 ldi R24,100
04E2 829D mul R24,R2
04E4 00910800 lds R16,_d1
04E8 0019 sub R16,R0
04EA 1AE0 ldi R17,10
04EC 0E940000 xcall div8u
04F0 00930300 sts _ten_2,R16
04F4 .dbline 100
04F4 ; ten_3=d1-(100*ten_1)-ten_2*10;
04F4 20900400 lds R2,_ten_1
04F8 84E6 ldi R24,100
04FA 829D mul R24,R2
04FC 20900800 lds R2,_d1
0500 2018 sub R2,R0
0502 302E mov R3,R16
0504 8AE0 ldi R24,10
0506 839D mul R24,R3
0508 2018 sub R2,R0
050A 20920200 sts _ten_3,R2
050E .dbline 101
050E ; WriteNum(1,0,ten_1);
050E 20900400 lds R2,_ten_1
0512 3324 clr R3
0514 3982 std y+1,R3
0516 2882 std y+0,R2
0518 2227 clr R18
051A 3327 clr R19
051C 01E0 ldi R16,1
051E 10E0 ldi R17,0
0520 6DDE xcall _WriteNum
0522 .dbline 102
0522 ; WriteNum(1,1,ten_2);
0522 20900300 lds R2,_ten_2
0526 3324 clr R3
0528 3982 std y+1,R3
052A 2882 std y+0,R2
052C 21E0 ldi R18,1
052E 30E0 ldi R19,0
0530 01E0 ldi R16,1
0532 10E0 ldi R17,0
0534 63DE xcall _WriteNum
0536 .dbline 103
0536 ; WriteNum(1,2,ten_3);
0536 20900200 lds R2,_ten_3
053A 3324 clr R3
053C 3982 std y+1,R3
053E 2882 std y+0,R2
0540 22E0 ldi R18,2
0542 30E0 ldi R19,0
0544 01E0 ldi R16,1
0546 10E0 ldi R17,0
0548 59DE xcall _WriteNum
054A .dbline 105
054A ; //显示设备码反码
054A ; d1=da>>16;
054A 20900700 lds R2,_da+2
054E 30900800 lds R3,_da+3
0552 20920800 sts _d1,R2
0556 .dbline 106
0556 ; ten_1=d1/100;
0556 14E6 ldi R17,100
0558 022D mov R16,R2
055A 0E940000 xcall div8u
055E 00930400 sts _ten_1,R16
0562 .dbline 107
0562 ; ten_2=(d1-(100*ten_1))/10;
0562 202E mov R2,R16
0564 84E6 ldi R24,100
0566 829D mul R24,R2
0568 00910800 lds R16,_d1
056C 0019 sub R16,R0
056E 1AE0 ldi R17,10
0570 0E940000 xcall div8u
0574 00930300 sts _ten_2,R16
0578 .dbline 108
0578 ; ten_3=d1-(100*ten_1)-ten_2*10;
0578 20900400 lds R2,_ten_1
057C 84E6 ldi R24,100
057E 829D mul R24,R2
0580 20900800 lds R2,_d1
0584 2018 sub R2,R0
0586 302E mov R3,R16
0588 8AE0 ldi R24,10
058A 839D mul R24,R3
058C 2018 sub R2,R0
058E 20920200 sts _ten_3,R2
0592 .dbline 109
0592 ; WriteNum(1,4,ten_1);
0592 20900400 lds R2,_ten_1
0596 3324 clr R3
0598 3982 std y+1,R3
059A 2882 std y+0,R2
059C 24E0 ldi R18,4
059E 30E0 ldi R19,0
05A0 01E0 ldi R16,1
05A2 10E0 ldi R17,0
05A4 2BDE xcall _WriteNum
05A6 .dbline 110
05A6 ; WriteNum(1,5,ten_2);
05A6 20900300 lds R2,_ten_2
05AA 3324 clr R3
05AC 3982 std y+1,R3
05AE 2882 std y+0,R2
05B0 25E0 ldi R18,5
05B2 30E0 ldi R19,0
05B4 01E0 ldi R16,1
05B6 10E0 ldi R17,0
05B8 21DE xcall _WriteNum
05BA .dbline 111
05BA ; WriteNum(1,6,ten_3);
05BA 20900200 lds R2,_ten_3
05BE 3324 clr R3
05C0 3982 std y+1,R3
05C2 2882 std y+0,R2
05C4 26E0 ldi R18,6
05C6 30E0 ldi R19,0
05C8 01E0 ldi R16,1
05CA 10E0 ldi R17,0
05CC 17DE xcall _WriteNum
05CE .dbline 113
05CE ; //显示键码
05CE ; d1=da>>8;
05CE 88E0 ldi R24,8
05D0 90E0 ldi R25,0
05D2 20910700 lds R18,_da+2
05D6 30910800 lds R19,_da+2+1
05DA 00910500 lds R16,_da
05DE 10910600 lds R17,_da+1
05E2 8A93 st -y,R24
05E4 0E940000 xcall asr32
05E8 00930800 sts _d1,R16
05EC .dbline 114
05EC ; ten_1=d1/100;
05EC 14E6 ldi R17,100
05EE 0E940000 xcall div8u
05F2 00930400 sts _ten_1,R16
05F6 .dbline 115
05F6 ; ten_2=(d1-(100*ten_1))/10;
05F6 202E mov R2,R16
05F8 84E6 ldi R24,100
05FA 829D mul R24,R2
05FC 00910800 lds R16,_d1
0600 0019 sub R16,R0
0602 1AE0 ldi R17,10
0604 0E940000 xcall div8u
0608 00930300 sts _ten_2,R16
060C .dbline 116
060C ; ten_3=d1-(100*ten_1)-ten_2*10;
060C 20900400 lds R2,_ten_1
0610 84E6 ldi R24,100
0612 829D mul R24,R2
0614 20900800 lds R2,_d1
0618 2018 sub R2,R0
061A 302E mov R3,R16
061C 8AE0 ldi R24,10
061E 839D mul R24,R3
0620 2018 sub R2,R0
0622 20920200 sts _ten_3,R2
0626 .dbline 117
0626 ; WriteNum(1,8,ten_1);
0626 20900400 lds R2,_ten_1
062A 3324 clr R3
062C 3982 std y+1,R3
062E 2882 std y+0,R2
0630 28E0 ldi R18,8
0632 30E0 ldi R19,0
0634 01E0 ldi R16,1
0636 10E0 ldi R17,0
0638 E1DD xcall _WriteNum
063A .dbline 118
063A ; WriteNum(1,9,ten_2);
063A 20900300 lds R2,_ten_2
063E 3324 clr R3
0640 3982 std y+1,R3
0642 2882 std y+0,R2
0644 29E0 ldi R18,9
0646 30E0 ldi R19,0
0648 01E0 ldi R16,1
064A 10E0 ldi R17,0
064C D7DD xcall _WriteNum
064E .dbline 119
064E ; WriteNum(1,10,ten_3);
064E 20900200 lds R2,_ten_3
0652 3324 clr R3
0654 3982 std y+1,R3
0656 2882 std y+0,R2
0658 2AE0 ldi R18,10
065A 30E0 ldi R19,0
065C 01E0 ldi R16,1
065E 10E0 ldi R17,0
0660 CDDD xcall _WriteNum
0662 .dbline 121
0662 ; //显示键码反码
0662 ; d1=da;
0662 20900500 lds R2,_da
0666 30900600 lds R3,_da+1
066A 20920800 sts _d1,R2
066E .dbline 122
066E ; ten_1=d1/100;
066E 14E6 ldi R17,100
0670 022D mov R16,R2
0672 0E940000 xcall div8u
0676 00930400 sts _ten_1,R16
067A .dbline 123
067A ; ten_2=(d1-(100*ten_1))/10;
067A 202E mov R2,R16
067C 84E6 ldi R24,100
067E 829D mul R24,R2
0680 00910800 lds R16,_d1
0684 0019 sub R16,R0
0686 1AE0 ldi R17,10
0688 0E940000 xcall div8u
068C 00930300 sts _ten_2,R16
0690 .dbline 124
0690 ; ten_3=d1-(100*ten_1)-ten_2*10;
0690 20900400 lds R2,_ten_1
0694 84E6 ldi R24,100
0696 829D mul R24,R2
0698 20900800 lds R2,_d1
069C 2018 sub R2,R0
069E 302E mov R3,R16
06A0 8AE0 ldi R24,10
06A2 839D mul R24,R3
06A4 2018 sub R2,R0
06A6 20920200 sts _ten_3,R2
06AA .dbline 125
06AA ; WriteNum(1,12,ten_1);
06AA 20900400 lds R2,_ten_1
06AE 3324 clr R3
06B0 3982 std y+1,R3
06B2 2882 std y+0,R2
06B4 2CE0 ldi R18,12
06B6 30E0 ldi R19,0
06B8 01E0 ldi R16,1
06BA 10E0 ldi R17,0
06BC 9FDD xcall _WriteNum
06BE .dbline 126
06BE ; WriteNum(1,13,ten_2);
06BE 20900300 lds R2,_ten_2
06C2 3324 clr R3
06C4 3982 std y+1,R3
06C6 2882 std y+0,R2
06C8 2DE0 ldi R18,13
06CA 30E0 ldi R19,0
06CC 01E0 ldi R16,1
06CE 10E0 ldi R17,0
06D0 95DD xcall _WriteNum
06D2 .dbline 127
06D2 ; WriteNum(1,14,ten_3);
06D2 20900200 lds R2,_ten_3
06D6 3324 clr R3
06D8 3982 std y+1,R3
06DA 2882 std y+0,R2
06DC 2EE0 ldi R18,14
06DE 30E0 ldi R19,0
06E0 01E0 ldi R16,1
06E2 10E0 ldi R17,0
06E4 8BDD xcall _WriteNum
06E6 .dbline 129
06E6 ; //复位D端口
06E6 ; DDRD=0x00; //中断输入
06E6 2224 clr R2
06E8 21BA out 0x11,R2
06EA .dbline 130
06EA ; PORTD=0xff; //内部上拉
06EA 8FEF ldi R24,255
06EC 82BB out 0x12,R24
06EE .dbline 131
06EE ; s_s=0; //关闭显示开关
06EE 20920100 sts _s_s,R2
06F2 .dbline 132
06F2 ; SREG=0x80; //开全局中断
06F2 80E8 ldi R24,128
06F4 8FBF out 0x3f,R24
06F6 .dbline 133
06F6 ; }
06F6 L64:
06F6 .dbline 134
06F6 ; }
06F6 L60:
06F6 .dbline 81
06F6 BDCE xjmp L59
06F8 X23:
06F8 .dbline -2
06F8 L58:
06F8 .dbline 0 ; func end
06F8 2296 adiw R28,2
06FA 0895 ret
06FC .dbend
.area bss(ram, con, rel)
0000 .dbfile C:\DOCUME~1\wdd\MYDOCU~1\16实验程序\红外接收\irr.c
0000 _i::
0000 .blkb 1
0001 .dbsym e i _i c
0001 _ten_4::
0001 .blkb 1
0002 .dbsym e ten_4 _ten_4 c
0002 _ten_3::
0002 .blkb 1
0003 .dbsym e ten_3 _ten_3 c
0003 _ten_2::
0003 .blkb 1
0004 .dbsym e ten_2 _ten_2 c
0004 _ten_1::
0004 .blkb 1
0005 .dbsym e ten_1 _ten_1 c
0005 _d4::
0005 .blkb 1
0006 .dbsym e d4 _d4 c
0006 _d3::
0006 .blkb 1
0007 .dbsym e d3 _d3 c
0007 _d2::
0007 .blkb 1
0008 .dbsym e d2 _d2 c
0008 _d1::
0008 .blkb 1
0009 .dbsym e d1 _d1 c
0009 ; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -