⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ir_data.lis

📁 51单片机的
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .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 + -