📄 led.s
字号:
xjmp L118
X9:
.dbline 664
; { iPreBit=0;
.dbline 664
.dbline 665
; if (iHight>12)//1.30ms
clr R2
sts _iPreBit,R2
ldi R24,12
lds R2,_iHight
cp R24,R2
brsh L125
.dbline 666
; { iIrMode=1;
.dbline 666
.dbline 667
; iLow=1;
.dbline 668
; iHight=0;
ldi R24,1
sts _iIrMode,R24
sts _iLow,R24
clr R2
sts _iHight,R2
.dbline 670
; //bCmdOk=1;iCmd=10;//Test..
; }
xjmp L110
L125:
.dbline 672
; else
; {iHight=0;//reset
.dbline 672
clr R2
sts _iHight,R2
.dbline 673
; }
.dbline 674
; return;
xjmp L110
X5:
.dbline 676
; }
; break;
L127:
.dbline 679
;
; case 1://等待1.6ms的低电平
; if ((iPreBit==0)&&(iNowBit==1))//0->1
lds R2,_iPreBit
tst R2
breq X10
xjmp L118
X10:
lds R24,_iNowBit
cpi R24,1
breq X11
xjmp L118
X11:
.dbline 680
; { iPreBit=1;
.dbline 680
.dbline 681
; if (iLow>15)//1.6ms
ldi R24,1
sts _iPreBit,R24
ldi R24,15
lds R2,_iLow
cp R24,R2
brsh L130
.dbline 682
; { iIrMode=2;
.dbline 682
.dbline 683
; iBitCount=0;
.dbline 684
; iIrData[0]=0;iIrData[1]=0;iIrData[2]=0;iIrData[3]=0;
.dbline 684
ldi R24,2
sts _iIrMode,R24
clr R2
sts _iBitCount,R2
sts _iIrData,R2
sts _iIrData+1,R2
.dbline 684
sts _iIrData+2,R2
.dbline 684
sts _iIrData+3,R2
.dbline 685
; iHight=1;
ldi R24,1
sts _iHight,R24
.dbline 687
; //bCmdOk=1;iCmd=10;//Test..
; }
xjmp L110
L130:
.dbline 689
; else
; { iIrMode=0;
.dbline 689
clr R2
sts _iIrMode,R2
.dbline 691
; //确实只发送一次,后面的是按键保持信号,无按键码信息
; }
.dbline 692
; return;
xjmp L110
X6:
.dbline 695
; }
;
; break;
L135:
.dbline 699
;
; case 2://接收用户码和按键码,共32Bit
;
; if ((iPreBit==1)&&(iNowBit==0))//1->0
lds R24,_iPreBit
cpi R24,1
brne L136
lds R2,_iNowBit
tst R2
brne L136
.dbline 700
; { iPreBit=0;
.dbline 700
.dbline 701
; iLow=1;
clr R2
sts _iPreBit,R2
ldi R24,1
sts _iLow,R24
.dbline 702
; }
L136:
.dbline 703
; if ((iPreBit==0)&&(iNowBit==1))//0->1
lds R2,_iPreBit
tst R2
breq X12
xjmp L118
X12:
lds R24,_iNowBit
cpi R24,1
breq X13
xjmp L118
X13:
.dbline 704
; { iPreBit=1;
.dbline 704
.dbline 706
ldi R24,1
sts _iPreBit,R24
lds R2,_iHight
mov R3,R2
add R3,R2
lds R2,_iLow
cp R3,R2
brsh L140
.dbline 706
clr R2
sts _iNowBit,R2
xjmp L141
L140:
.dbline 706
; //已经接收1Bit,根据占空比判断01
; if (iLow>(iHight+iHight)) iNowBit=0;else iNowBit=1;
ldi R24,1
sts _iNowBit,R24
L141:
.dbline 709
;
; //Bit0在前,右移位
; iPos=iBitCount/4;
.dbline 710
; iIrData[iPos]=iIrData[iPos]>>1;
lds R2,_iBitCount
lsr R2
lsr R2
sts _iPos,R2
ldi R24,<_iIrData
ldi R25,>_iIrData
clr R3
add R2,R24
adc R3,R25
movw R30,R2
ldd R4,z+0
lsr R4
std z+0,R4
.dbline 711
; if (iNowBit==1) iIrData[iPos]|=0x80;
lds R24,_iNowBit
cpi R24,1
brne L142
.dbline 711
ldi R24,<_iIrData
ldi R25,>_iIrData
lds R2,_iPos
clr R3
add R2,R24
adc R3,R25
movw R30,R2
ldd R24,z+0
ori R24,128
std z+0,R24
L142:
.dbline 713
;
; iBitCount++;
.dbline 714
; if (iBitCount>=24)
lds R24,_iBitCount
subi R24,255 ; addi 1
sts _iBitCount,R24
cpi R24,24
brlo L144
.dbline 715
; { bIrCmdOk=1;
.dbline 715
.dbline 716
; iIrMode=0;
ldi R24,1
sts _bIrCmdOk,R24
clr R2
sts _iIrMode,R2
.dbline 718
; //bCmdOk=1;iCmd=10;//Test..
; }
L144:
.dbline 720
;
; iHight=1;//must!
ldi R24,1
sts _iHight,R24
.dbline 721
; }
.dbline 722
; break;
xjmp L118
L117:
.dbline 724
clr R2
sts _iIrMode,R2
.dbline 725
L118:
.dbline -2
.dbline 727
; default:
; iIrMode=0;
; break;
; }
; }
L110:
.dbline 0 ; func end
ret
.dbend
.dbfunc e CheckIrCmd _CheckIrCmd fV
; i -> R16
.even
_CheckIrCmd::
.dbline -1
.dbline 730
; //对红外命令判断操作
; void CheckIrCmd()
; {uchar i;
.dbline 731
; bIrCmdOk=0;
.dbline 732
; if ((iIrData[0]>>4)==CUSTOMCODE) //CUSTOMCODE ==9
clr R2
sts _bIrCmdOk,R2
lds R24,_iIrData
swap R24
andi R24,#0x0F
cpi R24,9
brne L147
.dbline 733
; i=(iIrData[2]+(iIrData[1]>>4));
lds R24,_iIrData+1
swap R24
andi R24,#0x0F
lds R16,_iIrData+2
add R16,R24
L147:
.dbline 735
; //BeepN(i&0x0f);
; switch (i)
clr R17
cpi R16,208
ldi R30,0
cpc R17,R30
brne X15
xjmp L158
X15:
cpi R16,209
ldi R30,0
cpc R17,R30
brne X16
xjmp L160
X16:
cpi R16,210
ldi R30,0
cpc R17,R30
brne X17
xjmp L162
X17:
cpi R16,212
ldi R30,0
cpc R17,R30
breq L157
cpi R16,216
ldi R30,0
cpc R17,R30
breq L156
cpi R16,217
ldi R30,0
cpc R17,R30
breq L159
cpi R16,218
ldi R30,0
cpc R17,R30
brne X18
xjmp L161
X18:
cpi R16,220
ldi R30,0
cpc R17,R30
breq L155
cpi R16,221
ldi R30,0
cpc R17,R30
breq L154
xjmp L151
X14:
.dbline 736
; { case POWER_ON:
L154:
.dbline 737
; bCmdOk=1;iCmd=POWER_ON;
.dbline 737
ldi R24,1
sts _bCmdOk,R24
ldi R24,221
sts _iCmd,R24
.dbline 738
; break;
xjmp L152
L155:
.dbline 740
; case STAND_BY:
; bCmdOk=1;iCmd=STAND_BY;
.dbline 740
ldi R24,1
sts _bCmdOk,R24
ldi R24,220
sts _iCmd,R24
.dbline 741
; break;
xjmp L152
L156:
.dbline 743
; case DMX:
; bCmdOk=1;iCmd=DMX;
.dbline 743
ldi R24,1
sts _bCmdOk,R24
ldi R24,216
sts _iCmd,R24
.dbline 744
; break;
xjmp L152
L157:
.dbline 746
; case AUTO:
; bCmdOk=1;iCmd=AUTO;
.dbline 746
ldi R24,1
sts _bCmdOk,R24
ldi R24,212
sts _iCmd,R24
.dbline 747
; break;
xjmp L152
L158:
.dbline 749
; case AUDIO:
; bCmdOk=1;iCmd=AUDIO;
.dbline 749
ldi R24,1
sts _bCmdOk,R24
ldi R24,208
sts _iCmd,R24
.dbline 750
; break;
xjmp L152
L159:
.dbline 752
; case FADETIME_UP:
; bCmdOk=1;iCmd=FADETIME_UP;
.dbline 752
ldi R24,1
sts _bCmdOk,R24
ldi R24,217
sts _iCmd,R24
.dbline 753
; break;
xjmp L152
L160:
.dbline 755
; case FADETIME_DOWN:
; bCmdOk=1;iCmd=FADETIME_DOWN;
.dbline 755
ldi R24,1
sts _bCmdOk,R24
ldi R24,209
sts _iCmd,R24
.dbline 756
; break;
xjmp L152
L161:
.dbline 758
; case PATTERN_UP:
; bCmdOk=1;iCmd=PATTERN_UP;
.dbline 758
ldi R24,1
sts _bCmdOk,R24
ldi R24,218
sts _iCmd,R24
.dbline 759
; break;
xjmp L152
L162:
.dbline 761
; case PATTERN_DOWN:
; bCmdOk=1;iCmd=PATTERN_DOWN;
.dbline 761
ldi R24,1
sts _bCmdOk,R24
ldi R24,210
sts _iCmd,R24
.dbline 762
; break;
L151:
L152:
.dbline -2
.dbline 764
; }
; }
L146:
.dbline 0 ; func end
ret
.dbsym r i 16 c
.dbend
.dbfunc e ReadCmd _ReadCmd fV
.even
_ReadCmd::
xcall push_gset1
.dbline -1
.dbline 768
;
; //命令执行
; void ReadCmd()
; {
.dbline 769
; bCmdOk=0;
.dbline 771
; //Beep();
; switch (iCmd)
clr R2
sts _bCmdOk,R2
lds R20,_iCmd
clr R21
cpi R20,208
ldi R30,0
cpc R21,R30
breq L165
cpi R20,209
ldi R30,0
cpc R21,R30
breq L165
cpi R20,210
ldi R30,0
cpc R21,R30
breq L175
cpi R20,212
ldi R30,0
cpc R21,R30
breq L165
cpi R20,216
ldi R30,0
cpc R21,R30
breq L165
cpi R20,217
ldi R30,0
cpc R21,R30
breq L165
cpi R20,218
ldi R30,0
cpc R21,R30
breq L174
cpi R20,220
ldi R30,0
cpc R21,R30
breq L165
cpi R20,221
ldi R30,0
cpc R21,R30
breq L165
xjmp L164
X19:
.dbline 772
; {
.dbline 775
; case POWER_ON:
;
; break;
.dbline 778
; case STAND_BY:
;
; break;
.dbline 781
; case DMX:
;
; break;
.dbline 784
; case AUTO:
;
; break;
.dbline 787
; case AUDIO:
;
; break;
.dbline 790
; case FADETIME_UP:
;
; break;
.dbline 793
; case FADETIME_DOWN:
;
; break;
L174:
.dbline 795
; case PATTERN_UP:
; LED_DISPLAY_UP_DMX512();
xcall _LED_DISPLAY_UP_DMX512
.dbline 796
; break;
xjmp L165
L175:
.dbline 798
; case PATTERN_DOWN:
; LED_DISPLAY_DOWN_DMX512();
xcall _LED_DISPLAY_DOWN_DMX512
.dbline 799
; break;
L164:
L165:
.dbline -2
.dbline 801
; }
; }
L163:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbend
.area bss(ram, con, rel)
.dbfile D:\WORK\ELECTR~1\proteus\M167LE~1\c\led.c
_JS_PRESS_DOWN_ON_1::
.blkb 1
.dbsym e JS_PRESS_DOWN_ON_1 _JS_PRESS_DOWN_ON_1 c
_JS_PRESS_ON_DOWN_FAST::
.blkb 2
.dbsym e JS_PRESS_ON_DOWN_FAST _JS_PRESS_ON_DOWN_FAST I
_JS_PRESS_OFF_DOWN::
.blkb 2
.dbsym e JS_PRESS_OFF_DOWN _JS_PRESS_OFF_DOWN I
_OUT_22_LOW::
.blkb 1
.dbsym e OUT_22_LOW _OUT_22_LOW c
_TIMER1_ICP_T2::
.blkb 4
.dbsym e TIMER1_ICP_T2 _TIMER1_ICP_T2 L
_TIMER1_ICP_T1::
.blkb 4
.dbsym e TIMER1_ICP_T1 _TIMER1_ICP_T1 L
_TIMER1_ICP_T::
.blkb 4
.dbsym e TIMER1_ICP_T _TIMER1_ICP_T L
_iIrData::
.blkb 6
.dbsym e iIrData _iIrData A[6:6]c
_iCmd::
.blkb 1
.dbsym e iCmd _iCmd c
_bCmdOk::
.blkb 1
.dbsym e bCmdOk _bCmdOk c
_bIrCmdOk::
.blkb 1
.dbsym e bIrCmdOk _bIrCmdOk c
_iBitCount::
.blkb 1
.dbsym e iBitCount _iBitCount c
_iIrMode::
.blkb 1
.dbsym e iIrMode _iIrMode c
_iLow::
.blkb 1
.dbsym e iLow _iLow c
_iHight::
.blkb 1
.dbsym e iHight _iHight c
_iNowBit::
.blkb 1
.dbsym e iNowBit _iNowBit c
_iPreBit::
.blkb 1
.dbsym e iPreBit _iPreBit c
_iPos::
.blkb 1
.dbsym e iPos _iPos c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -