📄 ir_data.lis
字号:
00F2 2224 clr R2
00F4 20920500 sts _iBitCount,R2
00F8 20920000 sts _iIrData,R2
00FC 20920100 sts _iIrData+1,R2
0100 .dbline 53
0100 20920200 sts _iIrData+2,R2
0104 .dbline 53
0104 20920300 sts _iIrData+3,R2
0108 .dbline 54
0108 ; iHight=1;
0108 81E0 ldi R24,1
010A 80930800 sts _iHight,R24
010E .dbline 56
010E ; //bCmdOk=1;iCmd=10;//Test..
010E ; }
010E 61C0 xjmp L1
0110 L21:
0110 .dbline 58
0110 ; else
0110 ; { iIrMode=0;
0110 .dbline 58
0110 2224 clr R2
0112 20920600 sts _iIrMode,R2
0116 .dbline 60
0116 ; //确实只发送一次,后面的是按键保持信号,无按键码信息
0116 ; }
0116 .dbline 61
0116 ; return;
0116 5DC0 xjmp L1
0118 X3:
0118 .dbline 64
0118 ; }
0118 ;
0118 ; break;
0118 L26:
0118 .dbline 68
0118 ;
0118 ; case 2://接收用户码和按键码,共32Bit
0118 ;
0118 ; if ((iPreBit==1)&&(iNowBit==0))//1->0
0118 80910A00 lds R24,_iPreBit
011C 8130 cpi R24,1
011E 51F4 brne L27
0120 20900900 lds R2,_iNowBit
0124 2220 tst R2
0126 31F4 brne L27
0128 .dbline 69
0128 ; { iPreBit=0;
0128 .dbline 69
0128 .dbline 70
0128 ; iLow=1;
0128 2224 clr R2
012A 20920A00 sts _iPreBit,R2
012E 81E0 ldi R24,1
0130 80930700 sts _iLow,R24
0134 .dbline 71
0134 ; }
0134 L27:
0134 .dbline 72
0134 ; if ((iPreBit==0)&&(iNowBit==1))//0->1
0134 20900A00 lds R2,_iPreBit
0138 2220 tst R2
013A 09F0 breq X9
013C 4AC0 xjmp L9
013E X9:
013E 80910900 lds R24,_iNowBit
0142 8130 cpi R24,1
0144 09F0 breq X10
0146 45C0 xjmp L9
0148 X10:
0148 .dbline 73
0148 ; { iPreBit=1;
0148 .dbline 73
0148 .dbline 75
0148 81E0 ldi R24,1
014A 80930A00 sts _iPreBit,R24
014E 20900800 lds R2,_iHight
0152 322C mov R3,R2
0154 320C add R3,R2
0156 20900700 lds R2,_iLow
015A 3214 cp R3,R2
015C 20F4 brsh L31
015E .dbline 75
015E 2224 clr R2
0160 20920900 sts _iNowBit,R2
0164 03C0 xjmp L32
0166 L31:
0166 .dbline 75
0166 ; //已经接收1Bit,根据占空比判断01
0166 ; if (iLow>(iHight+iHight)) iNowBit=0;else iNowBit=1;
0166 81E0 ldi R24,1
0168 80930900 sts _iNowBit,R24
016C L32:
016C .dbline 78
016C ;
016C ; //Bit0在前,右移位
016C ; iPos=iBitCount/8;
016C .dbline 79
016C ; iIrData[iPos]=iIrData[iPos]>>1;
016C 20900500 lds R2,_iBitCount
0170 2694 lsr R2
0172 2694 lsr R2
0174 2694 lsr R2
0176 20920B00 sts _iPos,R2
017A 80E0 ldi R24,<_iIrData
017C 90E0 ldi R25,>_iIrData
017E 3324 clr R3
0180 280E add R2,R24
0182 391E adc R3,R25
0184 F101 movw R30,R2
0186 4080 ldd R4,z+0
0188 4694 lsr R4
018A 4082 std z+0,R4
018C .dbline 80
018C ; if (iNowBit==1) iIrData[iPos]|=0x80;
018C 80910900 lds R24,_iNowBit
0190 8130 cpi R24,1
0192 59F4 brne L33
0194 .dbline 80
0194 80E0 ldi R24,<_iIrData
0196 90E0 ldi R25,>_iIrData
0198 20900B00 lds R2,_iPos
019C 3324 clr R3
019E 280E add R2,R24
01A0 391E adc R3,R25
01A2 F101 movw R30,R2
01A4 8081 ldd R24,z+0
01A6 8068 ori R24,128
01A8 8083 std z+0,R24
01AA L33:
01AA .dbline 82
01AA ;
01AA ; iBitCount++;
01AA .dbline 83
01AA ; if (iBitCount>=32)
01AA 80910500 lds R24,_iBitCount
01AE 8F5F subi R24,255 ; addi 1
01B0 80930500 sts _iBitCount,R24
01B4 8032 cpi R24,32
01B6 30F0 brlo L35
01B8 .dbline 84
01B8 ; { bIrCmdOk=1;
01B8 .dbline 84
01B8 .dbline 85
01B8 ; iIrMode=0;
01B8 81E0 ldi R24,1
01BA 80930400 sts _bIrCmdOk,R24
01BE 2224 clr R2
01C0 20920600 sts _iIrMode,R2
01C4 .dbline 87
01C4 ; //bCmdOk=1;iCmd=10;//Test..
01C4 ; }
01C4 L35:
01C4 .dbline 89
01C4 ;
01C4 ; iHight=1;//must!
01C4 81E0 ldi R24,1
01C6 80930800 sts _iHight,R24
01CA .dbline 90
01CA ; }
01CA .dbline 91
01CA ; break;
01CA 03C0 xjmp L9
01CC L8:
01CC .dbline 93
01CC 2224 clr R2
01CE 20920600 sts _iIrMode,R2
01D2 .dbline 94
01D2 L9:
01D2 .dbline -2
01D2 .dbline 96
01D2 ; default:
01D2 ; iIrMode=0;
01D2 ; break;
01D2 ; }
01D2 ; }
01D2 L1:
01D2 .dbline 0 ; func end
01D2 0895 ret
01D4 .dbend
.area bss(ram, con, rel)
0000 .dbfile D:\WORK\ELECTR~1\proteus\M167LE~1\c\IR_DATA.C
0000 _iIrData::
0000 .blkb 4
0004 .dbfile D:\WORK\ELECTR~1\proteus\M167LE~1\c/IR_DATA.H
0004 .dbsym e iIrData _iIrData A[4:4]c
0004 _bIrCmdOk::
0004 .blkb 1
0005 .dbsym e bIrCmdOk _bIrCmdOk c
0005 _iBitCount::
0005 .blkb 1
0006 .dbsym e iBitCount _iBitCount c
0006 _iIrMode::
0006 .blkb 1
0007 .dbsym e iIrMode _iIrMode c
0007 _iLow::
0007 .blkb 1
0008 .dbsym e iLow _iLow c
0008 _iHight::
0008 .blkb 1
0009 .dbsym e iHight _iHight c
0009 _iNowBit::
0009 .blkb 1
000A .dbsym e iNowBit _iNowBit c
000A _iPreBit::
000A .blkb 1
000B .dbsym e iPreBit _iPreBit c
000B _iPos::
000B .blkb 1
000C .dbsym e iPos _iPos c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -