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

📄 lyj.lis

📁 /*红外解码的方法 NEC格式 upd6121 1、9Ms的高电平启动头
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 00B4                   .dbend
 00B4                   .dbfunc e WdtOff _WdtOff fV
                        .even
 00B4           _WdtOff::
 00B4                   .dbline -1
 00B4                   .dbline 145
 00B4           ; 
 00B4           ; }
 00B4           ; 
 00B4           ; void WdtOff()
 00B4           ; {
 00B4                   .dbline 146
 00B4           ;   CLI();//!!必须,WDTOE置位后必须4个时钟内清 WDE,才能真正关断WDT
 00B4 F894              cli
 00B6                   .dbline 147
 00B6           ;   WDR();
 00B6 A895              wdr
 00B8                   .dbline 148
 00B8           ;   WDTCR |=(BIT(WDTOE)|(BIT(WDE)));
 00B8 81B5              in R24,0x21
 00BA 8861              ori R24,24
 00BC 81BD              out 0x21,R24
 00BE                   .dbline 150
 00BE           ;   //WDTCR&=~BIT(WDE);//0;//off
 00BE           ;   WDTCR=0x07;
 00BE 87E0              ldi R24,7
 00C0 81BD              out 0x21,R24
 00C2                   .dbline 151
 00C2           ;   SEI();
 00C2 7894              sei
 00C4                   .dbline -2
 00C4           L11:
 00C4                   .dbline 0 ; func end
 00C4 0895              ret
 00C6                   .dbend
 00C6                   .dbfunc e PwrIdle _PwrIdle fV
                        .even
 00C6           _PwrIdle::
 00C6                   .dbline -1
 00C6                   .dbline 155
 00C6           ; }
 00C6           ; 
 00C6           ; void PwrIdle()
 00C6           ; {//P30 MCUCR 休眠控制和INT0,1,
 00C6                   .dbline 156
 00C6           ;   MCUCR&=0x0f;
 00C6 85B7              in R24,0x35
 00C8 8F70              andi R24,15
 00CA 85BF              out 0x35,R24
 00CC                   .dbline 157
 00CC           ;   MCUCR |=BIT(SE);
 00CC 85B7              in R24,0x35
 00CE 8068              ori R24,128
 00D0 85BF              out 0x35,R24
 00D2                   .dbline 158
 00D2           ;   asm("sleep");
 00D2 8895              sleep
 00D4                   .dbline -2
 00D4           L12:
 00D4                   .dbline 0 ; func end
 00D4 0895              ret
 00D6                   .dbend
 00D6                   .dbfunc e PwrDown _PwrDown fV
                        .even
 00D6           _PwrDown::
 00D6                   .dbline -1
 00D6                   .dbline 162
 00D6           ; }
 00D6           ; 
 00D6           ; void PwrDown()
 00D6           ; { 
 00D6                   .dbline 163
 00D6           ;   MCUCR&=0x0f;
 00D6 85B7              in R24,0x35
 00D8 8F70              andi R24,15
 00DA 85BF              out 0x35,R24
 00DC                   .dbline 164
 00DC           ;   MCUCR |=0x60;//0x60掉电 0x70省电
 00DC 85B7              in R24,0x35
 00DE 8066              ori R24,96
 00E0 85BF              out 0x35,R24
 00E2                   .dbline 165
 00E2           ;   asm("sleep");
 00E2 8895              sleep
 00E4                   .dbline -2
 00E4           L13:
 00E4                   .dbline 0 ; func end
 00E4 0895              ret
 00E6                   .dbend
 00E6                   .dbfunc e TestIR _TestIR fV
                        .even
 00E6           _TestIR::
 00E6                   .dbline -1
 00E6                   .dbline 171
 00E6           ; }
 00E6           ; 
 00E6           ; //测试红外输出
 00E6           ; //无信号时有小许干扰输出,遥控器保持按键时有持续输出
 00E6           ; void TestIR()
 00E6           ; {
 00E6                   .dbline 172
 00E6           ; if ((PIND&(1<<IR))!=0)
 00E6 879B              sbis 0x10,7
 00E8 02C0              rjmp L15
 00EA                   .dbline 173
 00EA           ;            {BeepOff();}
 00EA                   .dbline 173
 00EA ADD1              rcall _BeepOff
 00EC                   .dbline 173
 00EC 01C0              rjmp L16
 00EE           L15:
 00EE                   .dbline 175
 00EE                   .dbline 175
 00EE A9D1              rcall _BeepOn
 00F0                   .dbline 175
 00F0           L16:
 00F0                   .dbline -2
 00F0           L14:
 00F0                   .dbline 0 ; func end
 00F0 0895              ret
 00F2                   .dbend
 00F2                   .dbfunc e main _main fV
                        .even
 00F2           _main::
 00F2                   .dbline -1
 00F2                   .dbline 180
 00F2           ;       else
 00F2           ;            {BeepOn();}
 00F2           ; 
 00F2           ; }
 00F2           ; 
 00F2           ; void main(void)
 00F2           ; {
 00F2                   .dbline 182
 00F2           ; 
 00F2           ;    IoInit();
 00F2 D0DF              rcall _IoInit
 00F4                   .dbline 183
 00F4           ;    SystemIni();
 00F4 D6D1              rcall _SystemIni
 00F6                   .dbline 184
 00F6           ;    Beep();
 00F6 A9D1              rcall _Beep
 00F8 10C0              rjmp L19
 00FA           L18:
 00FA                   .dbline 186
 00FA           ;    while (1)
 00FA           ;    {  
 00FA                   .dbline 187
 00FA           ;       if (bTimer) TimerFunc();
 00FA 20900D00          lds R2,_bTimer
 00FE 2220              tst R2
 0100 09F0              breq L21
 0102                   .dbline 187
 0102 7BD1              rcall _TimerFunc
 0104           L21:
 0104                   .dbline 189
 0104           ;         //TestIR();
 0104           ;         if (bIrCmdOk) CheckIrCmd();
 0104 20900B00          lds R2,_bIrCmdOk
 0108 2220              tst R2
 010A 09F0              breq L23
 010C                   .dbline 189
 010C 1BD1              rcall _CheckIrCmd
 010E           L23:
 010E                   .dbline 190
 010E           ;         if (bCmdOk) ReadCmd();
 010E 20900C00          lds R2,_bCmdOk
 0112 2220              tst R2
 0114 09F0              breq L25
 0116                   .dbline 190
 0116 03D0              rcall _ReadCmd
 0118           L25:
 0118                   .dbline 191
 0118 D6DF              rcall _PwrIdle
 011A                   .dbline 192
 011A           L19:
 011A                   .dbline 185
 011A EFCF              rjmp L18
 011C           X0:
 011C                   .dbline 192
 011C           ;         PwrIdle();
 011C           ;     };
 011C                   .dbline -2
 011C           L17:
 011C                   .dbline 0 ; func end
 011C 0895              ret
 011E                   .dbend
 011E                   .dbfunc e ReadCmd _ReadCmd fV
                        .even
 011E           _ReadCmd::
 011E 00D0              rcall push_gset1
 0120                   .dbline -1
 0120                   .dbline 198
 0120           ; 
 0120           ; }
 0120           ; 
 0120           ; //命令执行
 0120           ; void ReadCmd()
 0120           ; {
 0120                   .dbline 199
 0120           ;     bCmdOk=0;
 0120 2224              clr R2
 0122 20920C00          sts _bCmdOk,R2
 0126                   .dbline 201
 0126           ;       //Beep();
 0126           ;       switch (iCmd)
 0126 40910900          lds R20,_iCmd
 012A 5527              clr R21
 012C 4130              cpi R20,1
 012E E0E0              ldi R30,0
 0130 5E07              cpc R21,R30
 0132 89F0              breq L31
 0134 4230              cpi R20,2
 0136 E0E0              ldi R30,0
 0138 5E07              cpc R21,R30
 013A 91F0              breq L32
 013C 4330              cpi R20,3
 013E E0E0              ldi R30,0
 0140 5E07              cpc R21,R30
 0142 99F0              breq L33
 0144 4430              cpi R20,4
 0146 E0E0              ldi R30,0
 0148 5E07              cpc R21,R30
 014A A1F0              breq L34
 014C 4530              cpi R20,5
 014E E0E0              ldi R30,0
 0150 5E07              cpc R21,R30
 0152 E1F0              breq L37
 0154 26C0              rjmp L28
 0156           X1:
 0156                   .dbline 202
 0156           ;       {
 0156           L31:
 0156                   .dbline 204
 0156           ;          case CSTOP:
 0156           ;              MotorStop();
 0156 60D1              rcall _MotorStop
 0158                   .dbline 205
 0158           ;                  BeepN(2);
 0158 02E0              ldi R16,2
 015A 10E0              ldi R17,0
 015C 7BD1              rcall _BeepN
 015E                   .dbline 206
 015E           ;              break;
 015E 21C0              rjmp L29
 0160           L32:
 0160                   .dbline 208
 0160           ;          case CUP:
 0160           ;              MotorUp();
 0160 55D1              rcall _MotorUp
 0162                   .dbline 209
 0162           ;                  BeepN(1);
 0162 01E0              ldi R16,1
 0164 10E0              ldi R17,0
 0166 76D1              rcall _BeepN
 0168                   .dbline 210
 0168           ;              break;
 0168 1CC0              rjmp L29
 016A           L33:
 016A                   .dbline 212
 016A           ;          case CDOWN:
 016A           ;              MotorDown();
 016A 53D1              rcall _MotorDown
 016C                   .dbline 213
 016C           ;                  BeepN(1);
 016C 01E0              ldi R16,1
 016E 10E0              ldi R17,0
 0170 71D1              rcall _BeepN
 0172                   .dbline 214
 0172           ;                  break;
 0172 17C0              rjmp L29
 0174           L34:
 0174                   .dbline 216
 0174           ;          case CLAMP:
 0174           ;              if ((PORTC&(1<<LAMP))==0)
 0174 AA99              sbic 0x15,2
 0176 05C0              rjmp L35
 0178                   .dbline 217
 0178           ;                    { LampOn();
 0178                   .dbline 217
 0178 52D1              rcall _LampOn
 017A                   .dbline 218
 017A           ;                          BeepN(1);
 017A 01E0              ldi R16,1
 017C 10E0              ldi R17,0
 017E 6AD1              rcall _BeepN
 0180                   .dbline 219
 0180           ;                        }
 0180 10C0              rjmp L29
 0182           L35:
 0182                   .dbline 221
 0182           ;                  else
 0182           ;                    { LampOff();
 0182                   .dbline 221
 0182 4FD1              rcall _LampOff
 0184                   .dbline 222
 0184           ;                          BeepN(2);
 0184 02E0              ldi R16,2
 0186 10E0              ldi R17,0
 0188 65D1              rcall _BeepN
 018A                   .dbline 223
 018A           ;                        }
 018A                   .dbline 224
 018A           ;                  break;
 018A 0BC0              rjmp L29
 018C           L37:
 018C                   .dbline 226
 018C           ;          case CDIS:
 018C           ;              if ((PORTC&(1<<DIS))==0)
 018C AB99              sbic 0x15,3
 018E 05C0              rjmp L38
 0190                   .dbline 227
 0190           ;                    { DisOn();
 0190                   .dbline 227
 0190 4FD1              rcall _DisOn
 0192                   .dbline 228
 0192           ;                          BeepN(1);
 0192 01E0              ldi R16,1
 0194 10E0              ldi R17,0
 0196 5ED1              rcall _BeepN
 0198                   .dbline 229
 0198           ;                        }
 0198 04C0              rjmp L29
 019A           L38:
 019A                   .dbline 231
 019A           ;                  else
 019A           ;                    { DisOff();
 019A                   .dbline 231
 019A 4CD1              rcall _DisOff
 019C                   .dbline 232
 019C           ;                          BeepN(2);
 019C 02E0              ldi R16,2
 019E 10E0              ldi R17,0
 01A0 59D1              rcall _BeepN
 01A2                   .dbline 233
 01A2           ;                        }
 01A2                   .dbline 234
 01A2           ;                  break;
 01A2           L28:
 01A2           L29:
 01A2                   .dbline -2
 01A2           L27:
 01A2 00D0              rcall pop_gset1
 01A4                   .dbline 0 ; func end
 01A4 0895              ret
 01A6                   .dbend
 01A6                   .dbfunc e CheckIR _CheckIR fV
 01A6           ;           iPos -> R16
 01A6           ;        iNowBit -> R18
                        .even
 01A6           _CheckIR::
 01A6                   .dbline -1
 01A6                   .dbline 240
 01A6           ;       }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -