📄 ir_data.lis
字号:
.module IR_DATA.C
.area text(rom, con, rel)
0000 .dbfile D:\WORK\ELECTR~1\proteus\M167LE~1\c\IR_DATA.C
0000 .dbfunc e CheckIR _CheckIR fV
.even
0000 _CheckIR::
0000 .dbline -1
0000 .dbline 6
0000 ; #include <iom16v.h>
0000 ; #include <macros.h>
0000 ; #include "IR_DATA.H"
0000 ; //红外解码
0000 ; void CheckIR()
0000 ; {
0000 .dbline 8
0000 ; //uchar iNowBit,iPos;
0000 ; if ((PIND&(1<<IR))>0)
0000 2224 clr R2
0002 80B3 in R24,0x10
0004 8074 andi R24,64
0006 2816 cp R2,R24
0008 18F4 brsh L2
000A .dbline 9
000A ; iNowBit=0;
000A 20920900 sts _iNowBit,R2
000E 03C0 xjmp L3
0010 L2:
0010 .dbline 11
0010 ; else
0010 ; iNowBit=1;//先反相
0010 81E0 ldi R24,1
0012 80930900 sts _iNowBit,R24
0016 L3:
0016 .dbline 14
0016 ;
0016 ; //把信号持续的处理作为公共处理
0016 ; if ((iPreBit==1)&&(iNowBit==1))//hight++
0016 80910A00 lds R24,_iPreBit
001A 8130 cpi R24,1
001C 51F4 brne L4
001E 80910900 lds R24,_iNowBit
0022 8130 cpi R24,1
0024 31F4 brne L4
0026 .dbline 15
0026 ; { iHight++;
0026 .dbline 15
0026 .dbline 16
0026 ; return;
0026 80910800 lds R24,_iHight
002A 8F5F subi R24,255 ; addi 1
002C 80930800 sts _iHight,R24
0030 D0C0 xjmp L1
0032 L4:
0032 .dbline 18
0032 ; }
0032 ; if ((iPreBit==0)&&(iNowBit==0))//low++
0032 20900A00 lds R2,_iPreBit
0036 2220 tst R2
0038 51F4 brne L6
003A 20900900 lds R2,_iNowBit
003E 2220 tst R2
0040 31F4 brne L6
0042 .dbline 19
0042 ; { iLow++;
0042 .dbline 19
0042 .dbline 20
0042 ; return;
0042 80910700 lds R24,_iLow
0046 8F5F subi R24,255 ; addi 1
0048 80930700 sts _iLow,R24
004C C2C0 xjmp L1
004E L6:
004E .dbline 23
004E ; }
004E ;
004E ; switch (iIrMode)
004E 00910600 lds R16,_iIrMode
0052 1127 clr R17
0054 0030 cpi R16,0
0056 0107 cpc R16,R17
0058 51F0 breq L11
005A X0:
005A 0130 cpi R16,1
005C E0E0 ldi R30,0
005E 1E07 cpc R17,R30
0060 99F1 breq L18
0062 0230 cpi R16,2
0064 E0E0 ldi R30,0
0066 1E07 cpc R17,R30
0068 09F4 brne X4
006A 56C0 xjmp L26
006C X4:
006C AFC0 xjmp L8
006E X1:
006E .dbline 24
006E ; {
006E L11:
006E .dbline 26
006E ; case 0://等待9ms的高电平
006E ; if ((iPreBit==0)&&(iNowBit==1))//0->1:start
006E 20900A00 lds R2,_iPreBit
0072 2220 tst R2
0074 51F4 brne L12
0076 80910900 lds R24,_iNowBit
007A 8130 cpi R24,1
007C 31F4 brne L12
007E .dbline 27
007E ; { iPreBit=1;
007E .dbline 27
007E .dbline 28
007E ; iHight=1;
007E .dbline 29
007E ; return;
007E 81E0 ldi R24,1
0080 80930A00 sts _iPreBit,R24
0084 80930800 sts _iHight,R24
0088 A4C0 xjmp L1
008A L12:
008A .dbline 32
008A ; }
008A ;
008A ; if ((iPreBit==1)&&(iNowBit==0))//1->0
008A 80910A00 lds R24,_iPreBit
008E 8130 cpi R24,1
0090 09F0 breq X5
0092 9FC0 xjmp L9
0094 X5:
0094 20900900 lds R2,_iNowBit
0098 2220 tst R2
009A 09F0 breq X6
009C 9AC0 xjmp L9
009E X6:
009E .dbline 33
009E ; { iPreBit=0;
009E .dbline 33
009E .dbline 34
009E ; if (iHight>12)//1.30ms
009E 2224 clr R2
00A0 20920A00 sts _iPreBit,R2
00A4 8CE0 ldi R24,12
00A6 20900800 lds R2,_iHight
00AA 8215 cp R24,R2
00AC 48F4 brsh L16
00AE .dbline 35
00AE ; { iIrMode=1;
00AE .dbline 35
00AE .dbline 36
00AE ; iLow=1;
00AE .dbline 37
00AE ; iHight=0;
00AE 81E0 ldi R24,1
00B0 80930600 sts _iIrMode,R24
00B4 80930700 sts _iLow,R24
00B8 2224 clr R2
00BA 20920800 sts _iHight,R2
00BE .dbline 39
00BE ; //bCmdOk=1;iCmd=10;//Test..
00BE ; }
00BE 89C0 xjmp L1
00C0 L16:
00C0 .dbline 41
00C0 ; else
00C0 ; {iHight=0;//reset
00C0 .dbline 41
00C0 2224 clr R2
00C2 20920800 sts _iHight,R2
00C6 .dbline 42
00C6 ; }
00C6 .dbline 43
00C6 ; return;
00C6 85C0 xjmp L1
00C8 X2:
00C8 .dbline 45
00C8 ; }
00C8 ; break;
00C8 L18:
00C8 .dbline 48
00C8 ;
00C8 ; case 1://等待1.6ms的低电平
00C8 ; if ((iPreBit==0)&&(iNowBit==1))//0->1
00C8 20900A00 lds R2,_iPreBit
00CC 2220 tst R2
00CE 09F0 breq X7
00D0 80C0 xjmp L9
00D2 X7:
00D2 80910900 lds R24,_iNowBit
00D6 8130 cpi R24,1
00D8 09F0 breq X8
00DA 7BC0 xjmp L9
00DC X8:
00DC .dbline 49
00DC ; { iPreBit=1;
00DC .dbline 49
00DC .dbline 50
00DC ; if (iLow>15)//1.6ms
00DC 81E0 ldi R24,1
00DE 80930A00 sts _iPreBit,R24
00E2 8FE0 ldi R24,15
00E4 20900700 lds R2,_iLow
00E8 8215 cp R24,R2
00EA 90F4 brsh L21
00EC .dbline 51
00EC ; { iIrMode=2;
00EC .dbline 51
00EC .dbline 52
00EC ; iBitCount=0;
00EC .dbline 53
00EC ; iIrData[0]=0;iIrData[1]=0;iIrData[2]=0;iIrData[3]=0;
00EC .dbline 53
00EC 82E0 ldi R24,2
00EE 80930600 sts _iIrMode,R24
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -