📄 2ifinput.asm
字号:
AutoSearchAgain1:
lds AutoScanFlag,00h
;call Delay62ms
call Delay100ms
call TransDataControlByD2
lda AutoScanFlag
jnz DetectHighReally
sf2 1h ;开启reload功能/enable timer2
lds AutoScanFlag,01h ;2005-8-23 13:33
jmp MainHalt
DetectHighReally:
;call Delay27ms
;call TransDataControlByD2
opa FixZero ;prevent mute
lda KeyHoldFlag
jz VoutHighAndKeyUp
call ClrCountRAM
sf2 1h ;开启reload功能/enable timer2
lds EverHoldFlag,01h
jmp MainHalt
;自动侦测到反馈信号为高,同时键弹起,则停止自动收台。
VoutHighAndKeyUp:
rf2 01h ;关闭reload功能 2005-3-11 18:06
lds AutoScanFlag,00h
jmp MainHalt
;************************ 按键处理 ***************************
HaltPortCPro:
plc 01h ;Clear ioc Halt release request flag HRF1
andi* HaltPortC,1101b ;clear ioc Halt release flag
sca 10h
nop
nop
nop
nop
nop
;lcp 1fh,00h
ipc KeyValue
jz KeyUpRelease
KeyDownRelease:
sta KeySave
call ClrCountRAM
sf2 1h ;开启reload功能/enable timer2
jmp MainHalt
KeyUpRelease:
lda KeyHoldFlag
jz KeyUpDealWith1
;常按键键弹起处理
lds KeyHoldFlag,00h
sf2 1
lds AutoScanFlag,01h
jmp MainHalt
;单次按键键弹起处理
KeyUpDealWith1:
lda EverHoldFlag
jnz NoKeyPress ;经过常按键自动侦测马上键弹起后不作处理
lda KeySave
jb0 KeyModeChangePro
jb1 KeyPowerPressPro
jb2 KeyAddPressPro
jb3 KeySubPressPro
NoKeyPress:
lds KeySave,00h
lds EverHoldFlag,00h
call ClrCountRAM
jmp MainHalt
;===================================
ClrCountRAM:
lds Counter1,00h
lds Counter2,00h
lds CycScanKeyFlag,00h
lds KeyHoldFlag,00h
lds AutoScanFlag,00h
lds EverHoldFlag,00h
rts
;*********************************************************
;*********************************************************
;*********************************************************
KeyModeChangePro:
lda PortBState
jb0 GoToKeyModeChangePro
jmp MainHalt
GoToKeyModeChangePro:
call KeyModeChange
jmp MainHalt
KeyPowerPressPro:
call KeyPowerPress
jmp MainHalt
KeyAddPressPro:
lda PortBState
jb0 GoToKeyAddPressPro
jmp MainHalt
GoToKeyAddPressPro:
call KeyAddPress
jmp MainHalt
KeySubPressPro:
lda PortBState
jb0 GoToKeySubPressPro
jmp MainHalt
GoToKeySubPressPro:
call KeySubPress
jmp MainHalt
;=================ModeChangeKey处理程式==============
KeyModeChange:
lda SysModeFlag
jz GoToChangeAMMode
call InitFMState
jmp FreqUpDownKeyExit
GoToChangeAMMode:
call InitAMState
jmp FreqUpDownKeyExit
;=================PowerKey处理程式===================
KeyPowerPress:
lda PortBState
jb0 GoToSetPowerAsLow
call SetPowerAsHigh
lda DispSaveL
sta DispFreqL
lda DispSaveM
sta DispFreqM
lda DispSaveH
sta DispFreqH
lda DispSaveU
sta DispFreqU
jmp FreqUpDownKeyExit
GoToSetPowerAsLow:
call SetPowerAsLow
lda DispFreqL
sta DispSaveL
lda DispFreqM
sta DispSaveM
lda DispFreqH
sta DispSaveH
lda DispFreqU
sta DispSaveU
lds DispFreqL,00h
lds DispFreqM,00h
lds DispFreqH,00h
lds DispFreqU,00h
jmp FreqUpDownKeyExit
;===============AddKey处理程式===============
KeyAddPress:
lda SysModeFlag
jz GoToFMAddPro
;;;;;;;;;;;AM模式;;;;;;;;;;;;
lds 70h,AMDispFreqUMax
eor DispFreqU
jnz GoToAMAddOneStep
lds 70h,AMDispFreqHMax
eor DispFreqH
jnz GoToAMAddOneStep
lds 70h,AMDispFreqMMax
eor DispFreqM
jnz GoToAMAddOneStep
lds 70h,AMDispFreqLMax
eor DispFreqL
jnz GoToAMAddOneStep
;加到1710K时,将522K送显示BUFFER
;将最小发射频率送FREQCOUNT
lds PrgCountL,AMBottomPrgCountL
lds PrgCountM,AMBottomPrgCountM
lds PrgCountH,AMBottomPrgCountH
lds PrgCountU,AMBottomPrgCountU
lds DispFreqL,AMDispFreqLMin
lds DispFreqM,AMDispFreqMMin
lds DispFreqH,AMDispFreqHMin
lds DispFreqU,AMDispFreqUMin
jmp FreqUpDownKeyExit
GoToAMAddOneStep:
call DispRAMToWork
addi* WorkReg+0,9
daa* WorkReg+0
adci* WorkReg+1,0
daa* WorkReg+1
adci* WorkReg+2,0
daa* WorkReg+2
adci* WorkReg+3,0
call WorkToDispRAM
call AMCountRAMAddOneStep
jmp FreqUpDownKeyExit
GoToFMAddPro:
;;;;;;;;;;;FM模式;;;;;;;;;;;;
lds 70h,FMDispFreqUMax
eor DispFreqU
jnz GoToFMAddOneStep
lds 70h,FMDispFreqHMax
eor DispFreqH
jnz GoToFMAddOneStep
lds 70h,FMDispFreqMMax
eor DispFreqM
jnz GoToFMAddOneStep
lds 70h,FMDispFreqLMax
eor DispFreqL
jnz GoToFMAddOneStep
;加到108.0M时,87.0M送显示BUFFER
;将最小发射频率送FREQCOUNT
lds PrgCountL,FMBottomPrgCountL
lds PrgCountM,FMBottomPrgCountM
lds PrgCountH,FMBottomPrgCountH
lds PrgCountU,FMBottomPrgCountU
lds DispFreqL,FMDispFreqLMin
lds DispFreqM,FMDispFreqMMin
lds DispFreqH,FMDispFreqHMin
lds DispFreqU,FMDispFreqUMin
jmp FreqUpDownKeyExit
GoToFMAddOneStep:
call DispRAMToWork
addi* WorkReg+0,1
daa* WorkReg+0
adci* WorkReg+1,0
daa* WorkReg+1
adci* WorkReg+2,0
daa* WorkReg+2
adci* WorkReg+3,0
call WorkToDispRAM
call FMCountRAMAddOneStep
jmp FreqUpDownKeyExit
;===============SubKey处理程式===============
KeySubPress:
lda SysModeFlag
jz GoToFMSubPro
;;;;;;;;;;;AM模式;;;;;;;;;;;;
lds 70h,AMDispFreqUMin
eor DispFreqU
jnz GoToAMSubOneStep
lds 70h,AMDispFreqHMin
eor DispFreqH
jnz GoToAMSubOneStep
lds 70h,AMDispFreqMMin
eor DispFreqM
jnz GoToAMSubOneStep
lds 70h,AMDispFreqLMin
eor DispFreqL
jnz GoToAMSubOneStep
;减到552K时,将1710K送显示BUFFER
;将最小发射频率送FREQCOUNT
lds PrgCountL,AMTopPrgCountL
lds PrgCountM,AMTopPrgCountM
lds PrgCountH,AMTopPrgCountH
lds PrgCountU,AMTopPrgCountU
lds DispFreqL,AMDispFreqLMax
lds DispFreqM,AMDispFreqMMax
lds DispFreqH,AMDispFreqHMax
lds DispFreqU,AMDispFreqUMax
jmp FreqUpDownKeyExit
GoToAMSubOneStep:
call DispRAMToWork
subi* WorkReg+0,9
das* WorkReg+0
sbci* WorkReg+1,0
das* WorkReg+1
sbci* WorkReg+2,0
das* WorkReg+2
sbci* WorkReg+3,0
das* WorkReg+3
call WorkToDispRAM
call AMCountRAMSubOneStep
jmp FreqUpDownKeyExit
GoToFMSubPro:
;;;;;;;;;;;FM模式;;;;;;;;;;;;
lds 70h,FMDispFreqUMin
eor DispFreqU
jnz GoToFMSubOneStep
lds 70h,FMDispFreqHMin
eor DispFreqH
jnz GoToFMSubOneStep
lds 70h,FMDispFreqMMin
eor DispFreqM
jnz GoToFMSubOneStep
lds 70h,FMDispFreqLMin
eor DispFreqL
jnz GoToFMSubOneStep
;减到87.0M时,将108.0M送显示BUFFER
;将最小发射频率送FREQCOUNT
lds PrgCountL,FMTopPrgCountL
lds PrgCountM,FMTopPrgCountM
lds PrgCountH,FMTopPrgCountH
lds PrgCountU,FMTopPrgCountU
lds DispFreqL,FMDispFreqLMax
lds DispFreqM,FMDispFreqMMax
lds DispFreqH,FMDispFreqHMax
lds DispFreqU,FMDispFreqUMax
jmp FreqUpDownKeyExit
GoToFMSubOneStep:
call DispRAMToWork
subi* WorkReg+0,1
das* WorkReg+0
sbci* WorkReg+1,0
das* WorkReg+1
sbci* WorkReg+2,0
das* WorkReg+2
sbci* WorkReg+3,0
das* WorkReg+3
call WorkToDispRAM
call FMCountRAMSubOneStep
jmp FreqUpDownKeyExit
;==========================================
FreqUpDownKeyExit:
sf 02H ;SET BCF=1
fast
call Display
call TransDataControlByD0
slow
rf 02H ;SET BCF=0
rts
;**********************************************************
;**********************数据发射程式*************************
;**********************************************************
TransDataControlByD0:
mvl FixZero ;D0H
mvh FixZero
mvu FixZero
lda# @hl
sta GlobalTemp2
spa 1fh
;lds PortAState,08h
;opa PortAState
call SetMuteAsHigh ;2005-9-15 11:07
call SetCEAsLow ;2005-9-15 11:08
call SetCKAsLow ;2005-9-15 11:08
call SetDAAsLow ;2005-9-15 11:08
lds GlobalTemp0,08h
lds GlobalTemp3,04h
lds RAMROMFlag,01h
call TransferData
call PeriodEnd
lda AutoScanFlag
jnz GoToEnd
call Delay100ms
opa FixZero ;prevent mute
GoToEnd:
rts
;===================
TransDataControlByD2:
sf 02H ;SET BCF=1
fast
lds RAMROMFlag,00h ;D2H
lds GlobalTemp0,08h
lda SysModeFlag
jz IFInputFromIFIN1
IFInputFromIFIN2:
lds GlobalTemp1,0bh
jmp TransDataControlByD2_1
IFInputFromIFIN1:
lds GlobalTemp1,0ah
TransDataControlByD2_1:
mvl FixZero
mvh GlobalTemp1
mvu FixZero
ldl* GlobalTemp2,@hl
call TransferData
call PeriodEnd
call Delay27ms
;call Delay27ms
ldl* GlobalTemp2,@hl ;D1H
lds GlobalTemp0,02h
call TransferData
call ReadRadioData
call PeriodEnd
call JudgeIfLockDianTai
slow
rf 02H ;SET BCF=0
rts
TransferData:
;lds PortAState,0ch
;opa PortAState
call SetCEAsHigh ;2005-9-15 11:25
lda GlobalTemp2
jb0 Transmit0
;lds PortAState,0eh
;opa PortAState
;lds PortAState,0ch
;opa PortAState
;lds PortAState,08h
;opa PortAState
call SetCKAsHigh ;2005-9-15 11:26
call SetCKAsLow ;2005-9-15 11:26
call SetCEAsLow ;2005-9-15 11:26
jmp Transmit1
Transmit0:
;lds PortAState,0fh
;opa PortAState
;lds PortAState,0dh
;opa PortAState
;lds PortAState,09h
;opa PortAState
call SetCKAsHigh ;2005-9-15 11:41
call SetDAAsHigh ;2005-9-15 11:41
call SetCKAsLow ;2005-9-15 11:41
call SetCEAsLow ;2005-9-15 11:41
Transmit1:
dec* GlobalTemp3
sr0 GlobalTemp2
Transmit2:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -