?? rx.asm
字號:
sbi cntKeyPrs, 6
bnc keyScanEnd
ldi keyNum, 0001b
ldi cntKeyPrs, 6
jmp keyScanEnd
keyScanN:
sbim cntKeyPrs, 1
bc keyScanEnd
ldi cntKeyPrs, 1
ldi keyNum, 0000b
ldi keyNumBuf, 0000b
keyScanEnd:
rtni
/////////////////////////////////////////
// key process subroutine
///////////////////////////
KeyPro:
lda keyNum, 0
baz keyProEnd
lda keyNum, 0
eor keyNumBuf, 0
baz keyProEnd
lda keyNum, 0
sta keyNumBuf, 0
sbi keyNum, 1
baz keyChnScn
jmp keyProEnd
keyChnScn:
fChnGetClr
ldi chnNum, 10
call TimRst
ldi pd0h, 0
ldi pd0m, 0
ldi pd0l, 0
ldi pd1h, 0
ldi pd1m, 0
ldi pd1l, 0
motLftClr
motRgtClr
motGoClr
motBakClr
keyProEnd:
rtni
/////////////////////////////////////////
// key process subroutine
///////////////////////////
OvrLoadPro:
OvrLoadProEnd:
rtni
/////////////////////////////////////////
// key process subroutine
///////////////////////////
Receiver:
rfEnbClr
call CntRst
// call TimRst
// call RecRst
recHedYn:
call RecBitPro
lda fTimer, 0
ba1 recNoEnd
lda fRec, 0
ba0 recDat1Yn
baz recHedYn
jmp recHedYn
recDat1Yn:
ldi cntRecDat, 8
ldi recDlrH, 0
ldi recDlrL, 0
recDat1Y:
sbim cntRecDat, 1
bnc recDat2Yn
lda recDlrL, 0
shr
sta recDlrL, 0
lda recDlrH, 0
shr
sta recDlrH, 0
bnc $+2
orim recDlrL, 1000b
call RecBitPro
lda fRec, 0
ba0 recDat1Yn
baz recHedYn
ba1 recDat1OneY
ba2 recDat1ZerY
jmp recHedYn
recDat1OneY:
orim recDlrH, 1000b
jmp recDat1EndYn
recDat1ZerY:
andim recDlrH, 0111b
recDat1EndYn:
jmp recDat1Y
recDat2Yn:
ldi cntRecDat, 8
ldi recDgbH, 0
ldi recDgbL, 0
recDat2Y:
sbim cntRecDat, 1
bnc recDat2End
lda recDgbL, 0
shr
sta recDgbL, 0
lda recDgbH, 0
shr
sta recDgbH, 0
bnc $+2
orim recDgbL, 1000b
call RecBitPro
lda fRec, 0
ba0 recHedYn
baz recHedYn
ba1 recDat2OneY
ba2 recDat2ZerY
jmp recHedYn
recDat2OneY:
orim recDgbH, 1000b
jmp recDat2EndYn
recDat2ZerY:
andim recDgbH, 0111b
recDat2EndYn:
jmp recDat2Y
recDat2End:
recVrfYn:
ldi cntRecDat, 4
ldi recVrf, 0
recVrfY:
sbim cntRecDat, 1
bnc recVrfEnd
lda recVrf, 0
shr
sta recVrf, 0
call RecBitPro
lda fRec, 0
ba0 recHedYn
baz recHedYn
ba1 recVrfOneY
ba2 recVrfZerY
jmp recHedYn
recVrfOneY:
orim recVrf, 1000b
jmp recVrfEndYn
recVrfZerY:
andim recVrf, 0111b
recVrfEndYn:
jmp recVrfY
recVrfEnd:
nop //for debug
recEnd:
rtni
recNoEnd:
ldi recDlrH, 0
ldi recDlrL, 0
ldi recDgbH, 0
ldi recDgbL, 0
rtni
////////////////////////////////////////////
// receiver data process subroutine
/////////////////////////////////
RecDatPro:
fRecErrClr
recDlrPro:
ldi temp, 0110b
and recDlrH, 0
baz recDlrErrYn
ba1 $+2
jmp recDlrPro1
ba2 recErr
jmp recDlrPro1
recDlrErrYn:
lda recDlrL, 0
bnz recErr
recDlrPro1:
lda recDlrH, 0
sta temp2, 0
lda recDlrL, 0
sta temp1, 0
call OddPro
lda temp3, 0
baz recErr
lda recDlrH, 0
sta temp, 0
andim temp, 0001b
sbi recDlrL, 0fh
ldi temp1, 1
sbc temp, 0
bc recErr
recDgbPro:
ldi temp, 0110b
and recDgbH, 0
baz recDgbErrYn
ba1 $+2
jmp recDgbPro1
ba2 recErr
jmp recDgbPro1
recDgbErrYn:
lda recDgbL, 0
bnz recErr
recDgbPro1:
lda recDgbH, 0
sta temp2, 0
lda recDgbL, 0
sta temp1, 0
call OddPro
lda temp3, 0
baz recErr
lda recDgbH, 0
sta temp, 0
andim temp, 0001b
sbi recDgbL, 0fh
ldi temp1, 1
sbc temp, 0
bc recErr
lda recDlrL, 0
eor recDlrH, 0
eor recDgbL, 0
eor recDgbH, 0
eor recVrf, 0
baz recDatProEnd
recErr:
ldi recDlrH, 0
ldi recDlrL, 0
ldi recDgbH, 0
ldi recDgbL, 0
fRecErrSet
recDatProEnd:
rtni
/////////////////////////////////////////
// key process subroutine
///////////////////////////
MotPro:
jb0fChnGet motErrPro //don`t get the channel,turn off the all motor
lda fSysErr, 0 //get the data?
ba0 motErrPro //no,turn off the alll motor
jmp motDlrProYn //yes,process the motor
motErrPro: //turn off the motor after 1s
sbim cntErr, 1
bc motProEnd
ldi cntErr, 9
jb0fT1s1 motProEnd
lda t100msTem, 0
bnz motErrPro1
sbi t100ms, 2
bc motProEnd
jmp morErrStp
motErrPro1:
sub t100ms, 0
bc motProEnd
morErrStp:
ldi pd0h, 0
ldi pd0m, 0
ldi pd0l, 0
ldi pd1h, 0
ldi pd1m, 0
ldi pd1l, 0
motLftClr
motRgtClr
motGoClr
motBakClr
fSoftLrClr
fSoftGbClr
jmp motProEnd
motDlrProYn: //yes,
ldi cntErr, 9
lda t100ms, 0
sta t100msTem, 0
fT1s1Clr
lda recDlrH, 0
sta pdBufM, 0
andim pdBufM, 0001b
lda recDlrL, 0
sta pdBufL, 0
lda recDlrH, 0
ba1 motDrgtPro
ba2 motDlftPro
motDlrStpPro:
motLftClr
motRgtClr
ldi pdBufM, 0
ldi pdBufL, 0
jmp motDlrProEnd
motDrgtPro:
motLftClr
jb0fSoftLr motDrgtPro1
motRgtSet
motDrgtPro1:
fRgtSavSet
jb0fLftSav motDlrProEnd
fLftSavClr
jmp motDlrStpPro
motDlftPro:
motRgtClr
jb0fSoftLr motDlftPro1
motLftSet
motDlftPro1:
fLftSavSet
jb0fRgtSav motDlrProEnd
fRgtSavClr
jmp motDlrStpPro
motDlrProEnd:
lda pdBufL, 0
bnz motDlrHav
lda pdBufM, 0
bnz motDlrHav
motDlrSofSet:
motLftClr
motRgtClr
fSoftLrClr
lda t10ms, 0
sta t10msTem1, 0
lda t100ms, 0
sta t100msTem1, 0
jmp motDlrPwmGet
motDlrHav:
jb1fSoftLr motDlrHav1
lda t10ms, 0
sbi t10msTem1, 0
sta temp2, 0
das temp2
lda t100ms, 0
sbc t100msTem1, 0
sta temp1, 0
das temp1
sbi temp2, 0
ldi temp, 2
sbc temp1, 0
bc motDlrSofOnYn
ldi pdBufL, 00h
ldi pdBufM, 00h
motLftClr
motRgtClr
jmp motDlrPwmGet
motDlrSofOnYn:
sbi temp2, 0
ldi temp, 5
sbc temp1, 0
bc motDlrHav1
ldi pdBufL, 0fh
ldi pdBufM, 03h
jb0fLftSav motDrgtSoftYn
motLftSet
jmp motDlrPwmGet
motDrgtSoftYn:
jb0fRgtSav motErrPro
motRgtSet
jmp motDlrPwmGet
motDlrHav1:
fSoftLrSet
adim pdBufL, 0fh
ldi temp, 1
adcm pdBufM, 0
motDlrPwmGet:
ldi pd0h, 0
lda pdBufM, 0
sta pd0m, 0
lda pdBufL, 0
sta pd0l, 0
////
motDgbProYn:
lda recDgbH, 0
sta pdBufM, 0
andim pdBufM, 0001b
lda recDgbL, 0
sta pdBufL, 0
lda recDgbH, 0
ba1 motDbakPro
ba2 motDgoPro
motDgbStpPro:
motGoClr
motBakClr
ldi pdBufM, 0
ldi pdBufL, 0
jmp motDgbProEnd
motDbakPro:
motGoClr
jb0fSoftGb motDBakPro1
motBakSet
motDBakPro1:
fBakSavSet
jb0fGoSav motDgbProEnd
fGoSavClr
jmp motDgbStpPro
motDgoPro:
motBakClr
jb0fSoftGb motDGoPro1
motGoSet
motDGoPro1:
fGoSavSet
jb0fBakSav motDgbProEnd
fBakSavClr
jmp motDgbStpPro
motDgbProEnd:
lda pdBufL, 0
bnz motDgbHav
lda pdBufM, 0
bnz motDgbHav
motDGbSofSet:
fSoftGbClr
motGoClr
motBakClr
lda t10ms, 0
sta t10msTem2, 0
lda t100ms, 0
sta t100msTem2, 0
jmp motDgbPwmGet
motDgbHav:
jb1fSoftGb motDgbHav1
lda t10ms, 0
sub t10msTem2, 0
sta temp2, 0
das temp2
lda t100ms, 0
sbc t100msTem2, 0
sta temp1, 0
das temp1
sbi temp2, 0
ldi temp, 2
sbc temp1, 0
bc motDgbSofOnYn
ldi pdBufL, 00h
ldi pdBufM, 00h
motGoClr
motBakClr
jmp motDgbPwmGet
motDgbSofOnYn:
sbi temp2, 0
ldi temp, 5
sbc temp1, 0
bnc $+2
jmp motDgbHav1
ldi pdBufL, 0fh
ldi pdBufM, 03h
jb0fGoSav motDbakSoftYn
motBakClr
motGoSet
jmp motDgbPwmGet
motDbakSoftYn:
jb0fBakSav motErrPro
motGoClr
motBakSet
jmp motDgbPwmGet
motDgbHav1:
fSoftGbSet
lda pdBufL, 0
bnz $+3
lda pdBufM, 0
baz $+4
adim pdBufL, 0fh
ldi temp, 1
adcm pdBufM, 0
motDgbPwmGet:
ldi pd1h, 0
lda pdBufM, 0
sta pd1m, 0
lda pdBufL, 0
sta pd1l, 0
motProEnd:
rtni
////////////////////////////////////////////
///
////////////////////////////////
TimPro:
tim1sPro:
adim t1s, 1
sbi t1s, 0aH
bnc timProEnd
ldi t1s, 0
tim10sPro:
adim t10s, 1
sbi t10s, 06h
bnc timProEnd
ldi t10s, 0
tim1mPro:
adim t1m, 1
sbi t1m, 0ah
bnc timProEnd
ldi t1m, 0
tim10mPro:
adim t10m, 1
sbi t10m, 06h
bnc timProEnd
ldi t10m, 0
tim1hPro:
adim t1h, 1
timProEnd:
rtni
///////////////////////////////////////////////
// Timer reset subroutine
/////////////////////////////////
TimRst:
ldi t1ms, 9
ldi t10ms, 9
ldi t100ms, 9
ldi t1s, 0
ldi t10s, 0
ldi t1m, 0
ldi t10m, 0
ldi t1h, 0
ldi fTimer, 0
ldi fTimer1, 0
timRstEnd
rtni
///////////////////////////////////////////////
// counter reset subroutine
/////////////////////////////////
CntRst:
ldi cntTem1, 0
ldi cntTem2, 0
// ldi fTimer, 0
ldi cntRecDat, 0
// ldi cntKeyPrs, 3
cntRstEnd
rtni
//////////////////////////////////////////////
// receiver one bit process
//////////////////////////////
RecBitPro:
ldi tc1l, 06h
ldi tc1h, 00h
ldi cntTem1, 0
ldi cntTem2, 0
recBitLowYn:
jb1Data recBitLowFin
// lda pd, 0
// ba1 recBitLowFin
adim cntTem1, 1
ldi temp, 0
adcm cntTem2, 0
bc recBitProErr
jmp recBitLowYn
recBitLowFin:
lda tc1h, 0
sta temp, 0
sbi temp, 1
bnc recBitProErr
recBitHigYn:
adim cntTem1, 1
ldi temp, 0
adcm cntTem2, 0
bc recBitProErr
jb1Data recBitHigYn
// lda pd, 0
// ba1 recBitHigYn
recBitProFin:
lda tc1h, 0
sta temp, 0
sbi temp, 11
bc recBitProErr
sbi temp, 8
bc recHedSet
sbi temp, 5
bc recOneSet
sbi temp, 2
bnc recBitProErr
recZerSet:
fRecZerSet
// ldi fRec, 0100b
jmp recBitProEnd
recOneSet:
fRecOneSet
// ldi fRec, 0010b
jmp recBitProEnd
recHedSet:
fRecHedSet
// ldi fRec, 0001b
jmp recBitProEnd
recBitProErr:
fRecBitErrSet
// ldi fRec, 0000b
recBitProEnd:
rtni
////////////////////////////////////
//
////////////////////////////
OddPro:
lda temp1, 0
sta temp, 0
ldi temp3, 0
oddProLow:
lda temp, 0
shr
sta temp, 0
bc oddProLow1
ba0 oddProLow
ba1 oddProLow
ba2 oddProLow
ba3 oddProLow
jmp oddProLowEnd
oddProLow1:
eorim temp3, 1
jmp oddProLow
oddProLowEnd:
oddProHigIni:
lda temp2, 0
sta temp, 0
oddProHig:
lda temp, 0
shr
sta temp, 0
bc oddProHig1
ba0 oddProHig
ba1 oddProHig
ba2 oddProHig
ba3 oddProHig
jmp oddProHigEnd
oddProHig1:
eorim temp3, 1
jmp oddProHig
oddProHigEnd:
oddProEnd:
rtni
////////////////////////////////////
// delay subroutine
////////////////////////
Dly600us:
ldi temp1, 15
ldi temp, 0fh
sbim temp, 1
bc $-1
sbim temp1, 1
bc $-3
Dly600usEnd:
rtni
////////////////////////////////////
// delay subroutine
////////////////////////
Dly300us:
ldi temp1, 8
ldi temp, 07h
sbim temp, 1
bc $-1
sbim temp1, 1
bc $-3
Dly300usEnd:
rtni
/////////////////////////////////////
// delay 100us subroutine
Dly100us:
ldi temp1, 02h
ldi temp, 0fh
sbim temp, 1
bc $-1
sbim temp1, 1
bc $-3
Dly100usEnd:
rtni
end
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -