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

📄 ir_data.lis

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