📄 radio.asm
字号:
bcf FFMLed
bcf FAMLed
bsf FClockLed
bcf FBandAdjust
call InitAdjustClockTime
goto KeyBandIncEnd
KeyBandIncOnly:
call BandInc
KeyBandIncEnd:
goto KeyBandIncRet
;-------------------------------------
KeyBandDec:
btfss PKeyBandInc
goto KeyBandDecEnd
call BandDec
KeyBandDecEnd:
goto KeyBandDecRet
;-------------------------------------
KeyVolInc:
btfss FLedFlash
goto KeyVolIncLoop
btfsc FBandAdjust
goto KeyVolIncLoop
KeyHourInc:
call InitAdjustClockTime
Bank2
incf ClockHour,1
movlw d'24'
subwf ClockHour,0
btfsc FC
clrf ClockHour
goto KeyHourIncEnd
KeyVolIncLoop:
Bank1
movlw CVolStepMax
subwf VolStep,0
btfsc FC
goto KeyVolIncEnd
incf VolStep,1
goto KeyVolIncEnd
KeyHourIncEnd:
KeyVolIncEnd:
goto KeyVolIncRet
;-------------------------------------
KeyVolDec:
btfss FLedFlash
goto KeyVolDecLoop
btfsc FBandAdjust
goto KeyVolDecLoop
KeyMinInc:
call InitAdjustClockTime
Bank2
incf ClockMin,1
movlw d'60'
subwf ClockMin,0
btfsc FC
clrf ClockMin
goto KeyHourDecEnd
KeyVolDecLoop:
Bank1
movlw CVolStepMin
subwf VolStep,0
btfss FC
goto KeyVolDecEnd
decf VolStep,1
goto KeyVolDecEnd
KeyHourDecEnd:
KeyVolDecEnd:
goto KeyVolDecRet
;-----------------------------------
KeyBand1_P2:
Page3
goto KeyBand1
KeyBand2_P2:
Page3
goto KeyBand2
KeyBand3_P2:
Page3
goto KeyBand3
KeyBand4_P2:
Page3
goto KeyBand4
KeyBand5_P2:
Page3
goto KeyBand5
IfAutoAdjustBand:
btfss FAutoOn
goto IfAutoAdjustBandEnd
btfss FAutoTime
goto IfAutoAdjustBandEnd
bcf FAutoTime
Bank3
decfsz AutoTime,1
goto IfAutoAdjustBandEnd
call BandInc
movlw CAutoTime
movwf AutoTime
IfAutoAdjustBandEnd:
Page0
goto IfAutoAdjustBandRet
;=============================
Org 600h
;=============================
Delay2us:
; nop
; nop
retlw 0
;-----------------------------
SendData:
btfss FSendData
goto SendDataEnd
bcf FSendData
btfss FFM
goto SendAMData
SendFMData:
Bank0
btfss FRadioInit
goto NoInitRadio
InitRadio:
bcf FRadioInit
movlw 010h
movwf SendData3
movlw 07fh
movwf SendData2
movlw 007h
movwf SendData1
movlw 0adh ;0ach
movwf SendData0 ;init send data
goto CntFMData
NoInitRadio:
movlw 010h
movwf SendData3
movlw 0ffh
movwf SendData2
movlw 007h
movwf SendData1
movlw 0ach
movwf SendData0 ;init send data
goto CntFMData
CntFMData:
Bank2
movlw CFMDataMin0
subwf FMData0,0
movwf DataBuf0
movlw CFMDataMin1
subwf FMData1,0
movwf DataBuf1
bcf FC
rlf DataBuf0,1
rlf DataBuf1,1
Bank0
movf DataBuf0,0
addwf SendData0,1
movlw 00h
btfsc FC
movlw 01h
addwf SendData1,1
movf DataBuf1,0
addwf SendData1,1
movlw 00h
btfsc FC
movlw 01h
addwf SendData2,1
movlw 00h
btfsc FC
movlw 01h
addwf SendData3,1
goto SendDataStart
SendAMData:
Bank0
movlw 00dh
movwf SendData3
movlw 087h;080h
movwf SendData2
movlw 014h
movwf SendData1
movlw 070h
movwf SendData0
bcf FC
rrf SendData1
rrf SendData0
bcf FC
rrf SendData1
rrf SendData0
bcf FC
rrf SendData1
rrf SendData0
bcf FC
rrf SendData1
rrf SendData0
Bank2
movlw CAMDataMin0
subwf AMData0,0
movwf DataBuf0
movlw CAMDataMin1
subwf AMData1,0
movwf DataBuf1
CntAMOddsData:
movlw 003h
subwf DataBuf0,1
movlw 00h
btfsc FC
movlw 01h
subwf DataBuf1,1
btfsc FC
goto CntAMOddsDataOk
incf AMAdjust0,1
movlw 000h
btfsc FC
movlw 001h
addwf AMAdjust1,1
CntAMOddsDataOk:
Bank0
movf AMAdjust0,0
movwf DataBuf0
movf AMAdjust1,0
movwf DataBuf1
movf DataBuf0,0
addwf SendData0,1
movlw 00h
btfsc FC
movlw 01h
addwf SendData1,1
movf DataBuf1,0
addwf SendData1,1
movlw 00h
btfsc FC
movlw 01h
addwf SendData2,1
movlw 00h
btfsc FC
movlw 01h
addwf SendData3,1
bcf FC
rlf SendData0
rlf SendData1
bcf FC
rlf SendData0
rlf SendData1
bcf FC
rlf SendData0
rlf SendData1
bcf FC
rlf SendData0
rlf SendData1
goto SendDataStart
SendDataStart:
movlw d'32'
movwf DataBuf0
bsf PCs
SendAMDataLoop:
bcf PClk
; bcf PData
call Delay2us
rrf SendData3,1
rrf SendData2,1
rrf SendData1,1
rrf SendData0,1
call Delay2us
btfsc FC
goto SetData
ClrData:
bcf PData
goto SendDataCom
SetData:
bsf PData
SendDataCom
call Delay2us
call Delay2us
bsf PClk
call Delay2us
call Delay2us
bcf PClk
call Delay2us
call Delay2us
; bcf PData
decfsz DataBuf0,1
goto SendAMDataLoop
bcf PCs
bcf PClk
bcf PData
bsf FReadData
Bank3
movlw CReadDataWaitTime
movwf ReadDataWaitTime
SendDataEnd:
Page0
goto SendDataRet
;=========================
Timer:
movlw d'250';'254'
subwf TMR0,0
btfss FC
goto Timer
movwf TMR0
bsf FVol100ms
Bank3
decfsz Timer500ms,1
goto $+5
movlw CTimer500ms
movwf Timer500ms
movlw 001h
xorwf Flag1,1
bsf FAutoTime
decfsz Timer1s,1
goto TimerEnd
movlw CTimer1s
movwf Timer1s
IfFlashLed:
btfss FLedFlash
goto IfFlashLedEnd
decfsz AdjustTime
goto IfFlashLedEnd
bcf FLedFlash
bcf FBandAdjust
IfFlashLedEnd:
Bank2
incf Second,1
movlw d'60'
subwf Second,0
btfss FC
goto TimerEnd
clrf Second
incf ClockMin,1
movlw d'60'
subwf ClockMin,0
btfss FC
goto TimerEnd
clrf ClockMin
incf ClockHour,1
movlw d'24'
subwf ClockHour,0
btfss FC
goto TimerEnd
clrf ClockHour
TimerEnd:
Page0
goto TimerRet
;-------------------------------------
KeyBand1:
; btfss FBandAdjust
; goto CarryDataToBand1
;SaveDataToBand1:
; btfss FFM
; goto SaveDataToBand1_AM
;SaveDataToBand1_FM:
; Bank2
; movf FMData0,0
; Bank0
; movwf SaveChan10
; Bank2
; movf FMData1,0
; Bank0
; movwf SaveChan11
; bsf FBand1Flag
; goto KeyBand1End
;SaveDataToBand1_AM:
; Bank2
; movf AMData0,0
; Bank0
; movwf SaveChan10
; Bank2
; movf AMData1,0
; Bank0
; movwf SaveChan11
; bcf FBand1Flag
; goto KeyBand1End
;CarryDataToBand1:
; bsf FSendData
; bcf FAMLed
; bcf FFMLed
; btfss FBand1Flag
; goto CarryDataToBand1_AM
;CarryDataToBand1_FM:
; bsf FFM
; bsf FFMLed
; Bank0
; movf SaveChan10,0
; Bank2
; movwf FMData0
; Bank0
; movf SaveChan11,0
; Bank2
; movwf FMData1
; goto KeyBand1End
;CarryDataToBand1_AM:
; bcf FFM
; bsf FAMLed
; Bank0
; movf SaveChan10,0
; Bank2
; movwf AMData0
; Bank0
; movf SaveChan11,0
; Bank2
; movwf AMData1
; goto KeyBand1End
;KeyBand1End:
; Page2
goto KeyBand1Ret
;-------------------------------------
KeyBand2:
; btfss FBandAdjust
; goto CarryDataToBand2
;SaveDataToBand2:
; btfss FFM
; goto SaveDataToBand2_AM
;SaveDataToBand2_FM:
; Bank2
; movf FMData0,0
; Bank0
; movwf SaveChan20
; Bank2
; movf FMData1,0
; Bank0
; movwf SaveChan21
; bsf FBand2Flag
; goto KeyBand2End
;SaveDataToBand2_AM:
; Bank2
; movf AMData0,0
; Bank0
; movwf SaveChan20
; Bank2
; movf AMData1,0
; Bank0
; movwf SaveChan21
; bcf FBand2Flag
; goto KeyBand2End
;CarryDataToBand2:
; bsf FSendData
; bcf FAMLed
; bcf FFMLed
; btfss FBand2Flag
; goto CarryDataToBand2_AM
;CarryDataToBand2_FM:
; bsf FFM
; bsf FFMLed
; Bank0
; movf SaveChan20,0
; Bank2
; movwf FMData0
; Bank0
; movf SaveChan21,0
; Bank2
; movwf FMData1
; goto KeyBand2End
;CarryDataToBand2_AM:
; bcf FFM
; bsf FAMLed
; Bank0
; movf SaveChan20,0
; Bank2
; movwf AMData0
; Bank0
; movf SaveChan21,0
; Bank2
; movwf AMData1
; goto KeyBand2End
;KeyBand2End:
; Page2
; goto KeyBand2Ret
;-------------------------------------
KeyBand3:
; btfss FBandAdjust
; goto CarryDataToBand3
;SaveDataToBand3:
; btfss FFM
; goto SaveDataToBand3_AM
;SaveDataToBand3_FM:
; Bank2
; movf FMData0,0
; Bank0
; movwf SaveChan30
; Bank2
; movf FMData1,0
; Bank0
; movwf SaveChan31
; bsf FBand3Flag
; goto KeyBand3End
;SaveDataToBand3_AM:
; Bank2
; movf AMData0,0
; Bank0
; movwf SaveChan30
; Bank2
; movf AMData1,0
; Bank0
; movwf SaveChan31
; bcf FBand3Flag
; goto KeyBand3End
;CarryDataToBand3:
; bsf FSendData
; bcf FAMLed
; bcf FFMLed
; btfss FBand3Flag
; goto CarryDataToBand3_AM
;CarryDataToBand3_FM:
; bsf FFM
; bsf FFMLed
; Bank0
; movf SaveChan30,0
; Bank2
; movwf FMData0
; Bank0
; movf SaveChan31,0
; Bank2
; movwf FMData1
; goto KeyBand3End
;CarryDataToBand3_AM:
; bcf FFM
; bsf FAMLed
; Bank0
; movf SaveChan30,0
; Bank2
; movwf AMData0
; Bank0
; movf SaveChan31,0
; Bank2
; movwf AMData1
; goto KeyBand3End
;KeyBand3End:
; Page2
goto KeyBand3Ret
;-------------------------------------
KeyBand4:
; btfss FBandAdjust
; goto CarryDataToBand4
;SaveDataToBand4:
; btfss FFM
; goto SaveDataToBand4_AM
;SaveDataToBand4_FM:
; Bank2
; movf FMData0,0
; Bank0
; movwf SaveChan40
; Bank2
; movf FMData1,0
; Bank0
; movwf SaveChan41
; bsf FBand4Flag
; goto KeyBand4End
;SaveDataToBand4_AM:
; Bank2
; movf AMData0,0
; Bank0
; movwf SaveChan40
; Bank2
; movf AMData1,0
; Bank0
; movwf SaveChan41
; bcf FBand4Flag
; goto KeyBand4End
;CarryDataToBand4:
; bsf FSendData
; bcf FAMLed
; bcf FFMLed
; btfss FBand4Flag
; goto CarryDataToBand4_AM
;CarryDataToBand4_FM:
; bsf FFM
; bsf FFMLed
; Bank0
; movf SaveChan40,0
; Bank2
; movwf FMData0
; Bank0
; movf SaveChan41,0
; Bank2
; movwf FMData1
; goto KeyBand4End
;CarryDataToBand4_AM:
; bcf FFM
; bsf FAMLed
; Bank0
; movf SaveChan40,0
; Bank2
; movwf AMData0
; Bank0
; movf SaveChan41,0
; Bank2
; movwf AMData1
; goto KeyBand4End
;KeyBand4End:
; Page2
goto KeyBand4Ret
;-------------------------------------
KeyBand5:
; btfss FBandAdjust
; goto CarryDataToBand5
;SaveDataToBand5:
; btfss FFM
; goto SaveDataToBand5_AM
;SaveDataToBand5_FM:
; Bank2
; movf FMData0,0
; Bank0
; movwf SaveChan50
; Bank2
; movf FMData1,0
; Bank0
; movwf SaveChan51
; bsf FBand5Flag
; goto KeyBand5End
;SaveDataToBand5_AM:
; Bank2
; movf AMData0,0
; Bank0
; movwf SaveChan50
; Bank2
; movf AMData1,0
; Bank0
; movwf SaveChan51
; bcf FBand5Flag
; goto KeyBand5End
;CarryDataToBand5:
; bsf FSendData
; bcf FAMLed
; bcf FFMLed
; btfss FBand5Flag
; goto CarryDataToBand5_AM
;CarryDataToBand5_FM:
; bsf FFM
; bsf FFMLed
; Bank0
; movf SaveChan50,0
; Bank2
; movwf FMData0
; Bank0
; movf SaveChan51,0
; Bank2
; movwf FMData1
; goto KeyBand5End
;CarryDataToBand5_AM:
; bcf FFM
; bsf FAMLed
; Bank0
; movf SaveChan50,0
; Bank2
;; movwf AMData0
;; Bank0
; movf SaveChan51,0
; Bank2
; movwf AMData1
;; goto KeyBand5End
KeyBand5End:
; Page2
; NOP
; goto KeyBand5Ret
;#################################################
org 07ffh
goto Reset
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -