📄 2ifinput.asm
字号:
lda GlobalTemp2
jb0 Transmit3
;lds PortAState,0ah
;opa PortAState
;lds PortAState,08h
call SetCKAsHigh ;2005-9-15 11:42
call SetDAAsLow
jmp Transmit4
Transmit3:
;lds PortAState,0bh
;opa PortAState
;lds PortAState,09h
;nop
call SetCKAsHigh ;2005-9-15 11:43
call SetDAAsHigh ;2005-9-15 11:43
Transmit4:
dec* GlobalTemp3
jz Transmit5
;opa PortAState
call SetCKAsLow ;2005-9-15 11:42
sr0 GlobalTemp2
jmp Transmit2
Transmit5:
;opa PortAState
call SetCKAsLow ;2005-9-15 11:43
lds GlobalTemp3,04h
dec* GlobalTemp0
jz Transmit7
lda RAMROMFlag
jz Transmit6
lda# @hl
sta GlobalTemp2
jmp Transmit2
Transmit6:
ldl* GlobalTemp2,@hl
jmp Transmit2
Transmit7:
rts
;==================================
PeriodEnd:
;lds PortAState,0ch
;opa PortAState
;lds PortAState,08h
;opa PortAState
call SetMuteAsHigh
call SetCEAsHigh
nop
nop
call SetCEAsLow
call SetCKAsLow
call SetDAAsLow
spa 1fh
rts
;==================================
ReadRadioData: ;read IF data store address:7bh~7fh
lds GlobalTemp0,05h
lds GlobalTemp2,00h
lds GlobalTemp1,07h
lds 70h,0bh
mvl 70h
mvh GlobalTemp1
mvu FixZero
spa 1eh ;DA Pin is set input state
lds PortAState,0ah
lds GlobalTemp3,01h
ReadRadioData3:
opa PortAState
lds 70h,08h
opa 70h
nop
nop
ipa 70h
jb0 ReadRadioData0
jmp ReadRadioData1
ReadRadioData0:
lda GlobalTemp3
or* GlobalTemp2
ReadRadioData1:
sl0 GlobalTemp3
jnz ReadRadioData3
ReadRadioData2:
lds GlobalTemp3,01h
lda GlobalTemp2
sta# @hl
lds GlobalTemp2,00h
dec* GlobalTemp0
jnz ReadRadioData3
lds 70h,08h
opa 70h
;spa 1eh
;====Highest 4 bits of D1 don't be read====
opa PortAState
nop
opa 70h
nop
opa PortAState
nop
opa 70h
nop
opa PortAState
nop
opa 70h
nop
opa PortAState
nop
opa 70h
rts
;================================
JudgeIfLockDianTai:
lds 70h,0dh
mvu FixZero
mvh 70h
lda SysModeFlag
jz JudgeIfFM
JudgeIfAM:
lda 7fh
jnz JudgeIfEnd
lds 70h,04h
mvl 70h
call JudgeIfLockDianTai0
rts
JudgeIfFM:
lds 71h,02h
lda 7fh
eor 71h
jnz JudgeIfEnd
lds 70h,00h
mvl 70h
call JudgeIfLockDianTai0
rts
JudgeIfLockDianTai0:
ldl 70h,@hl
sub 7bh
ldh* 70h,@hl
sbc 7ch
ldl 70h,@hl
sbc 7dh
ldh* 70h,@hl
sbc 7eh
jnc JudgeIfEnd
ldl 70h,@hl
sub 7bh
ldh* 70h,@hl
sbc 7ch
ldl 70h,@hl
sbc 7dh
ldh* 70h,@hl
sbc 7eh
jc JudgeIfEnd
lds AutoScanFlag,01h
JudgeIfEnd:
rts
Delay27ms:
plc 7fh
she 10h
tm2x 101000110b ;7/2^8=0.02734 2005-8-21 12:37上午
halt
rts
Delay62ms:
plc 7fh
she 10h
tm2x 101001111b ;16/2^8=0.0625 2005-8-21 12:37上午
;tm2x 010000000B ;1Second
halt
rts
Delay100ms:
plc 7fh
she 10h
tm2x 101011001b ;16+8+1+1/2^8=0.10156
halt
rts
;************************************************************
;************************************************************
;************************************************************
;函数功能:初始化清变量
InitRAM:
lds AddrL,00h
lds AddrH,0dh
lds PrgCountL,FMBottomPrgCountL
sta FMPrgCountL
lds PrgCountM,FMBottomPrgCountM
sta FMPrgCountM
lds PrgCountH,FMBottomPrgCountH
sta FMPrgCountH
lds PrgCountU,FMBottomPrgCountU
sta FMPrgCountU
lds Freq0,03h
lds Freq1,05h
lds DispFreqL,FMDispFreqLMin
sta FMDispFreqL
lds DispFreqM,FMDispFreqMMin
sta FMDispFreqM
lds DispFreqH,FMDispFreqHMin
sta FMDispFreqH
lds DispFreqU,FMDispFreqUMin
sta FMDispFreqU
lds AMPrgCountL,AMBottomPrgCountL
lds AMPrgCountM,AMBottomPrgCountM
lds AMPrgCountH,AMBottomPrgCountH
lds AMPrgCountU,AMBottomPrgCountU
lds AMDispFreqL,AMDispFreqLMin
lds AMDispFreqM,AMDispFreqMMin
lds AMDispFreqH,AMDispFreqHMin
lds AMDispFreqU,AMDispFreqUMin
lds SysModeFlag,00h
lds Counter1,00h
lds Counter2,00h
lds AutoScanFlag,00h
lds KeyHoldFlag,00h
lds CycScanKeyFlag,00h
lds EverHoldFlag,00h
lds KeyValue,00h
;lds IC24C02Addr1,00h
;lds IC24C02Addr2,00h
;lds IC24C02Buff1,00h
;lds IC24C02Buff2,00h
;lds ReceiveData,00h
;lds ReceiveTime,00h
;lds MemoryNum,00h
;======================
lds FixZero,00h
lds RAMROMFlag,00h
lds GlobalTemp0,00h
lds GlobalTemp1,00h
lds GlobalTemp2,00h
lds GlobalTemp3,00h
;======================
lds WorkReg,00h
;lds Halt05S,00h
lds HaltPortC,00h
lds Halt15ms,00h
lds PortAState,00h
;======================
lds 70h,08h
lds 71h,00h
mvl 71h
mvh 70h
mvu 71h
lds GlobalTemp0,08h
lds GlobalTemp1,08h
Clear80HToffHRAM:
mrw# @hl,71h
mrw# @hl,71h
dec* GlobalTemp0
jnz Clear80HToffHRAM
lds GlobalTemp0,08h
dec* GlobalTemp1
jnz Clear80HToffHRAM
rts
;==========================================
InitFMState:
lds Freq0,03h
lds Freq1,05h
lds SysModeFlag,00h
call SetBandSwitchAsHigh
call SetIO1AsHigh
;;;;;;;;;;;;;;;;;;;;
lda PrgCountL
sta AMPrgCountL
lda PrgCountM
sta AMPrgCountM
lda PrgCountH
sta AMPrgCountH
lda PrgCountU
sta AMPrgCountU
lda DispFreqL
sta AMDispFreqL
lda DispFreqM
sta AMDispFreqM
lda DispFreqH
sta AMDispFreqH
lda DispFreqU
sta AMDispFreqU
;;;;;;;;;;;;;;;;;;;
lda FMPrgCountL
sta PrgCountL
lda FMPrgCountM
sta PrgCountM
lda FMPrgCountH
sta PrgCountH
lda FMPrgCountU
sta PrgCountU
lda FMDispFreqL
sta DispFreqL
lda FMDispFreqM
sta DispFreqM
lda FMDispFreqH
sta DispFreqH
lda FMDispFreqU
sta DispFreqU
rts
;==========================================
InitAMState:
lds Freq0,09h
lds Freq1,04h
lds SysModeFlag,01h
call SetBandSwitchAsLow
call SetIO1AsLow
;;;;;;;;;;;;;;;;;;;;
lda PrgCountL
sta FMPrgCountL
lda PrgCountM
sta FMPrgCountM
lda PrgCountH
sta FMPrgCountH
lda PrgCountU
sta FMPrgCountU
lda DispFreqL
sta FMDispFreqL
lda DispFreqM
sta FMDispFreqM
lda DispFreqH
sta FMDispFreqH
lda DispFreqU
sta FMDispFreqU
;;;;;;;;;;;;;;;;;;;
lda AMPrgCountL
sta PrgCountL
lda AMPrgCountM
sta PrgCountM
lda AMPrgCountH
sta PrgCountH
lda AMPrgCountU
sta PrgCountU
lda AMDispFreqL
sta DispFreqL
lda AMDispFreqM
sta DispFreqM
lda AMDispFreqH
sta DispFreqH
lda AMDispFreqU
sta DispFreqU
rts
;===========================================
AMBottomCountToCountRAM:
lds PrgCountU,AMBottomPrgCountU
lds PrgCountH,AMBottomPrgCountH
lds PrgCountM,AMBottomPrgCountM
lds PrgCountL,AMBottomPrgCountL
rts
;===========================================
;函数功能:将最小显示值87.5送工作寄存器
AMDispFreqMinToWork:
lds WorkReg+3,AMDispFreqUMin
lds WorkReg+2,AMDispFreqHMin
lds WorkReg+1,AMDispFreqMMin
lds WorkReg+0,AMDispFreqLMin
rts
;函数功能:将最大显示值108.0送工作寄存器
AMDispFreqMaxToWork:
lds WorkReg+3,AMDispFreqUMax
lds WorkReg+2,AMDispFreqHMax
lds WorkReg+1,AMDispFreqMMax
lds WorkReg+0,AMDispFreqLMax
rts
;函数功能:将最小频率4452h送工作寄存器
AMCountRAMMinToWork:
lds WorkReg+3,AMBottomPrgCountU
lds WorkReg+2,AMBottomPrgCountH
lds WorkReg+1,AMBottomPrgCountM
lds WorkReg+0,AMBottomPrgCountL
rts
;函数功能:将最大频率5456h送工作寄存器
AMCountRAMMaxToWork:
lds WorkReg+3,AMTopPrgCountU
lds WorkReg+2,AMTopPrgCountH
lds WorkReg+1,AMTopPrgCountM
lds WorkReg+0,AMTopPrgCountL
rts
;函数功能:将显示RAM送工作寄存器
DispRAMToWork:
mrw WorkReg+3,DispFreqU
mrw WorkReg+2,DispFreqH
mrw WorkReg+1,DispFreqM
mrw WorkReg+0,DispFreqL
rts
;函数功能:将工作寄存器送显示RAM
WorkToDispRAM:
mwr DispFreqU,WorkReg+3
mwr DispFreqH,WorkReg+2
mwr DispFreqM,WorkReg+1
mwr DispFreqL,WorkReg+0
rts
;函数功能:AM频率单步加30H
AMCountRAMAddOneStep:
call CountRAMToWork
addi* WorkReg+0,AMOneStepCountL
adci* WorkReg+1,AMOneStepCountM
adci* WorkReg+2,AMOneStepCountH
adci* WorkReg+3,AMOneStepCountU
call WorkToCountRAM
rts
;函数功能:FM频率单步加14H
FMCountRAMAddOneStep:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -