📄 led_m16.lst
字号:
(0689) { iIrMode=0;
04EE 2422 CLR R2
04EF 922000C6 STS _iIrMode,R2
(0690) //确实只发送一次,后面的是按键保持信号,无按键码信息
(0691) }
(0692) return;
04F1 C05C RJMP 0x054E
(0693) }
(0694)
(0695) break;
(0696)
(0697) case 2://接收用户码和按键码,共32Bit
(0698)
(0699) if ((iPreBit==1)&&(iNowBit==0))//1->0
04F2 918000CA LDS R24,_iPreBit
04F4 3081 CPI R24,1
04F5 F451 BNE 0x0500
04F6 902000C9 LDS R2,_iNowBit
04F8 2022 TST R2
04F9 F431 BNE 0x0500
(0700) { iPreBit=0;
(0701) iLow=1;
04FA 2422 CLR R2
04FB 922000CA STS _iPreBit,R2
04FD E081 LDI R24,1
04FE 938000C7 STS _iLow,R24
(0702) }
(0703) if ((iPreBit==0)&&(iNowBit==1))//0->1
0500 902000CA LDS R2,_iPreBit
0502 2022 TST R2
0503 F009 BEQ 0x0505
0504 C049 RJMP 0x054E
0505 918000C9 LDS R24,_iNowBit
0507 3081 CPI R24,1
0508 F009 BEQ 0x050A
0509 C044 RJMP 0x054E
(0704) { iPreBit=1;
(0705) //已经接收1Bit,根据占空比判断01
(0706) if (iLow>(iHight+iHight)) iNowBit=0;else iNowBit=1;
050A E081 LDI R24,1
050B 938000CA STS _iPreBit,R24
050D 902000C8 LDS R2,_iHight
050F 2C32 MOV R3,R2
0510 0C32 ADD R3,R2
0511 902000C7 LDS R2,_iLow
0513 1432 CP R3,R2
0514 F420 BCC 0x0519
0515 2422 CLR R2
0516 922000C9 STS _iNowBit,R2
0518 C003 RJMP 0x051C
0519 E081 LDI R24,1
051A 938000C9 STS _iNowBit,R24
(0707)
(0708) //Bit0在前,右移位
(0709) iPos=iBitCount/4;
(0710) iIrData[iPos]=iIrData[iPos]>>1;
051C 902000C5 LDS R2,_iBitCount
051E 9426 LSR R2
051F 9426 LSR R2
0520 922000CB STS _iPos,R2
0522 EB8C LDI R24,0xBC
0523 E090 LDI R25,0
0524 2433 CLR R3
0525 0E28 ADD R2,R24
0526 1E39 ADC R3,R25
0527 01F1 MOVW R30,R2
0528 8040 LDD R4,Z+0
0529 9446 LSR R4
052A 8240 STD Z+0,R4
(0711) if (iNowBit==1) iIrData[iPos]|=0x80;
052B 918000C9 LDS R24,_iNowBit
052D 3081 CPI R24,1
052E F459 BNE 0x053A
052F EB8C LDI R24,0xBC
0530 E090 LDI R25,0
0531 902000CB LDS R2,_iPos
0533 2433 CLR R3
0534 0E28 ADD R2,R24
0535 1E39 ADC R3,R25
0536 01F1 MOVW R30,R2
0537 8180 LDD R24,Z+0
0538 6880 ORI R24,0x80
0539 8380 STD Z+0,R24
(0712)
(0713) iBitCount++;
(0714) if (iBitCount>=24)
053A 918000C5 LDS R24,_iBitCount
053C 5F8F SUBI R24,0xFF
053D 938000C5 STS _iBitCount,R24
053F 3188 CPI R24,0x18
0540 F030 BCS 0x0547
(0715) { bIrCmdOk=1;
(0716) iIrMode=0;
0541 E081 LDI R24,1
0542 938000C4 STS _bIrCmdOk,R24
0544 2422 CLR R2
0545 922000C6 STS _iIrMode,R2
(0717) //bCmdOk=1;iCmd=10;//Test..
(0718) }
(0719)
(0720) iHight=1;//must!
0547 E081 LDI R24,1
0548 938000C8 STS _iHight,R24
(0721) }
(0722) break;
054A C003 RJMP 0x054E
(0723) default:
(0724) iIrMode=0;
054B 2422 CLR R2
054C 922000C6 STS _iIrMode,R2
(0725) break;
(0726) }
(0727) }
054E 9508 RET
(0728) //对红外命令判断操作
(0729) void CheckIrCmd()
(0730) {uchar i;
(0731) bIrCmdOk=0;
(0732) if ((iIrData[0]>>4)==CUSTOMCODE) //CUSTOMCODE ==9
_CheckIrCmd:
i --> R16
054F 2422 CLR R2
0550 922000C4 STS _bIrCmdOk,R2
0552 918000BC LDS R24,_iIrData
0554 9582 SWAP R24
0555 708F ANDI R24,0xF
0556 3089 CPI R24,0x9
0557 F439 BNE 0x055F
(0733) i=(iIrData[2]+(iIrData[1]>>4));
0558 918000BD LDS R24,_iIrData+1
055A 9582 SWAP R24
055B 708F ANDI R24,0xF
055C 910000BE LDS R16,_iIrData+2
055E 0F08 ADD R16,R24
(0734) //BeepN(i&0x0f);
(0735) switch (i)
055F 2711 CLR R17
0560 3D00 CPI R16,0xD0
0561 E0E0 LDI R30,0
0562 071E CPC R17,R30
0563 F409 BNE 0x0565
0564 C040 RJMP 0x05A5
0565 3D01 CPI R16,0xD1
0566 E0E0 LDI R30,0
0567 071E CPC R17,R30
0568 F409 BNE 0x056A
0569 C049 RJMP 0x05B3
056A 3D02 CPI R16,0xD2
056B E0E0 LDI R30,0
056C 071E CPC R17,R30
056D F409 BNE 0x056F
056E C052 RJMP 0x05C1
056F 3D04 CPI R16,0xD4
0570 E0E0 LDI R30,0
0571 071E CPC R17,R30
0572 F159 BEQ 0x059E
0573 3D08 CPI R16,0xD8
0574 E0E0 LDI R30,0
0575 071E CPC R17,R30
0576 F101 BEQ 0x0597
0577 3D09 CPI R16,0xD9
0578 E0E0 LDI R30,0
0579 071E CPC R17,R30
057A F189 BEQ 0x05AC
057B 3D0A CPI R16,0xDA
057C E0E0 LDI R30,0
057D 071E CPC R17,R30
057E F409 BNE 0x0580
057F C03A RJMP 0x05BA
0580 3D0C CPI R16,0xDC
0581 E0E0 LDI R30,0
0582 071E CPC R17,R30
0583 F061 BEQ 0x0590
0584 3D0D CPI R16,0xDD
0585 E0E0 LDI R30,0
0586 071E CPC R17,R30
0587 F009 BEQ 0x0589
0588 C03E RJMP 0x05C7
(0736) { case POWER_ON:
(0737) bCmdOk=1;iCmd=POWER_ON;
0589 E081 LDI R24,1
058A 938000C3 STS _bCmdOk,R24
058C ED8D LDI R24,0xDD
058D 938000C2 STS _iCmd,R24
(0738) break;
058F C037 RJMP 0x05C7
(0739) case STAND_BY:
(0740) bCmdOk=1;iCmd=STAND_BY;
0590 E081 LDI R24,1
0591 938000C3 STS _bCmdOk,R24
0593 ED8C LDI R24,0xDC
0594 938000C2 STS _iCmd,R24
(0741) break;
0596 C030 RJMP 0x05C7
(0742) case DMX:
(0743) bCmdOk=1;iCmd=DMX;
0597 E081 LDI R24,1
0598 938000C3 STS _bCmdOk,R24
059A ED88 LDI R24,0xD8
059B 938000C2 STS _iCmd,R24
(0744) break;
059D C029 RJMP 0x05C7
(0745) case AUTO:
(0746) bCmdOk=1;iCmd=AUTO;
059E E081 LDI R24,1
059F 938000C3 STS _bCmdOk,R24
05A1 ED84 LDI R24,0xD4
05A2 938000C2 STS _iCmd,R24
(0747) break;
05A4 C022 RJMP 0x05C7
(0748) case AUDIO:
(0749) bCmdOk=1;iCmd=AUDIO;
05A5 E081 LDI R24,1
05A6 938000C3 STS _bCmdOk,R24
05A8 ED80 LDI R24,0xD0
05A9 938000C2 STS _iCmd,R24
(0750) break;
05AB C01B RJMP 0x05C7
(0751) case FADETIME_UP:
(0752) bCmdOk=1;iCmd=FADETIME_UP;
05AC E081 LDI R24,1
05AD 938000C3 STS _bCmdOk,R24
05AF ED89 LDI R24,0xD9
05B0 938000C2 STS _iCmd,R24
(0753) break;
05B2 C014 RJMP 0x05C7
(0754) case FADETIME_DOWN:
(0755) bCmdOk=1;iCmd=FADETIME_DOWN;
05B3 E081 LDI R24,1
05B4 938000C3 STS _bCmdOk,R24
05B6 ED81 LDI R24,0xD1
05B7 938000C2 STS _iCmd,R24
(0756) break;
05B9 C00D RJMP 0x05C7
(0757) case PATTERN_UP:
(0758) bCmdOk=1;iCmd=PATTERN_UP;
05BA E081 LDI R24,1
05BB 938000C3 STS _bCmdOk,R24
05BD ED8A LDI R24,0xDA
05BE 938000C2 STS _iCmd,R24
(0759) break;
05C0 C006 RJMP 0x05C7
(0760) case PATTERN_DOWN:
(0761) bCmdOk=1;iCmd=PATTERN_DOWN;
05C1 E081 LDI R24,1
05C2 938000C3 STS _bCmdOk,R24
05C4 ED82 LDI R24,0xD2
05C5 938000C2 STS _iCmd,R24
(0762) break;
(0763) }
(0764) }
05C7 9508 RET
_ReadCmd:
05C8 940E0616 CALL push_gset1
(0765)
(0766) //命令执行
(0767) void ReadCmd()
(0768) {
(0769) bCmdOk=0;
(0770) //Beep();
(0771) switch (iCmd)
05CA 2422 CLR R2
05CB 922000C3 STS _bCmdOk,R2
05CD 914000C2 LDS R20,_iCmd
05CF 2755 CLR R21
05D0 3D40 CPI R20,0xD0
05D1 E0E0 LDI R30,0
05D2 075E CPC R21,R30
05D3 F121 BEQ 0x05F8
05D4 3D41 CPI R20,0xD1
05D5 E0E0 LDI R30,0
05D6 075E CPC R21,R30
05D7 F101 BEQ 0x05F8
05D8 3D42 CPI R20,0xD2
05D9 E0E0 LDI R30,0
05DA 075E CPC R21,R30
05DB F0D9 BEQ 0x05F7
05DC 3D44 CPI R20,0xD4
05DD E0E0 LDI R30,0
05DE 075E CPC R21,R30
05DF F0C1 BEQ 0x05F8
05E0 3D48 CPI R20,0xD8
05E1 E0E0 LDI R30,0
05E2 075E CPC R21,R30
05E3 F0A1 BEQ 0x05F8
05E4 3D49 CPI R20,0xD9
05E5 E0E0 LDI R30,0
05E6 075E CPC R21,R30
05E7 F081 BEQ 0x05F8
05E8 3D4A CPI R20,0xDA
05E9 E0E0 LDI R30,0
05EA 075E CPC R21,R30
05EB F049 BEQ 0x05F5
05EC 3D4C CPI R20,0xDC
05ED E0E0 LDI R30,0
05EE 075E CPC R21,R30
05EF F041 BEQ 0x05F8
05F0 3D4D CPI R20,0xDD
05F1 E0E0 LDI R30,0
05F2 075E CPC R21,R30
05F3 F021 BEQ 0x05F8
05F4 C003 RJMP 0x05F8
(0772) {
(0773) case POWER_ON:
(0774)
(0775) break;
(0776) case STAND_BY:
(0777)
(0778) break;
(0779) case DMX:
(0780)
(0781) break;
(0782) case AUTO:
(0783)
(0784) break;
(0785) case AUDIO:
(0786)
(0787) break;
(0788) case FADETIME_UP:
(0789)
(0790) break;
(0791) case FADETIME_DOWN:
(0792)
(0793) break;
(0794) case PATTERN_UP:
(0795) LED_DISPLAY_UP_DMX512();
05F5 DC39 RCALL _LED_DISPLAY_UP_DMX512
(0796) break;
05F6 C001 RJMP 0x05F8
(0797) case PATTERN_DOWN:
(0798) LED_DISPLAY_DOWN_DMX512();
05F7 DD42 RCALL _LED_DISPLAY_DOWN_DMX512
(0799) break;
(0800) }
(0801) }
FILE: <library>
05F8 940E0619 CALL pop_gset1
05FA 9508 RET
mod8u:
05FB 9468 BSET 6
05FC C001 RJMP xdiv8u
div8u:
05FD 94E8 BCLR 6
xdiv8u:
05FE 932A ST R18,-Y
05FF 92FA ST R15,-Y
0600 92EA ST R14,-Y
0601 24FF CLR R15
0602 24EE CLR R14
0603 E120 LDI R18,0x10
0604 0F00 LSL R16
0605 1CFF ROL R15
0606 1CEE ROL R14
0607 16E1 CP R14,R17
0608 F010 BCS 0x060B
0609 1AE1 SUB R14,R17
060A 9503 INC R16
060B 952A DEC R18
060C F7B9 BNE 0x0604
060D F40E BRTC 0x060F
060E 2D0E MOV R16,R14
060F 90E9 LD R14,Y+
0610 90F9 LD R15,Y+
0611 9129 LD R18,Y+
0612 9508 RET
pop_gset2:
0613 E0E2 LDI R30,2
0614 940C061A JMP pop
push_gset1:
0616 935A ST R21,-Y
0617 934A ST R20,-Y
0618 9508 RET
pop_gset1:
0619 E0E1 LDI R30,1
pop:
061A 9149 LD R20,Y+
061B 9159 LD R21,Y+
061C FDE0 SBRC R30,0
061D 9508 RET
061E 9169 LD R22,Y+
061F 9179 LD R23,Y+
0620 FDE1 SBRC R30,1
0621 9508 RET
0622 90A9 LD R10,Y+
0623 90B9 LD R11,Y+
0624 FDE2 SBRC R30,2
0625 9508 RET
0626 90C9 LD R12,Y+
0627 90D9 LD R13,Y+
0628 FDE3 SBRC R30,3
0629 9508 RET
062A 90E9 LD R14,Y+
062B 90F9 LD R15,Y+
062C 9508 RET
push_gset2:
062D 937A ST R23,-Y
062E 936A ST R22,-Y
062F 940C0616 JMP push_gset1
push_lset:
0631 93FA ST R31,-Y
0632 93EA ST R30,-Y
0633 93BA ST R27,-Y
0634 93AA ST R26,-Y
0635 939A ST R25,-Y
0636 938A ST R24,-Y
0637 933A
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -