📄 radio.src
字号:
JP NE,radio_read_byte
end_read_data:
radio_clr_cs
POP R2
POP R1
POP R0
ret
.IF 0
RADIO_READ_DATA_FROM_RADIO ENDP
.ENDIF
;********************************************************************
.IF 0
DELAY_TIME PROC
.ENDIF
DELAY_TIME:
nop
nop
nop
nop
nop
nop
nop
nop
NOP
NOP
NOP
NOP
NOP
nop
nop
nop
nop
nop
nop
ret
.IF 0
DELAY_TIME ENDP
.ENDIF
.IF 0
INIT_FM PROC
.ENDIF
INIT_FM:
LD FM_RAM_H,#07H
LD FM_RAM_L,#0adh
LD IN1_DATA2,FM_RAM_H
;TEST
LD IN1_DATA1,FM_RAM_L
LD IN1_DATA3,#22H
LD IN2_DATA1,#0E0H
LD IN2_DATA2,#0D4H
LD IN2_DATA3,#12H;#13H 64MS
RET
.IF 0
INIT_FM ENDP
.ENDIF
.IF 0
REMOVE_RADIO_IN1_VAL PROC
.ENDIF
REMOVE_RADIO_IN1_VAL:
LD RADIO_FIRST_VAL,IN1_DATA1
LD RADIO_SENC_VAL,IN1_DATA2
LD RADIO_THIR_VAL,IN1_DATA3
LD ACC_SEN_VAL,#28H
RET
.IF 0
REMOVE_RADIO_IN1_VAL ENDP
.ENDIF
.IF 0
REMOVE_RADIO_IN2_VAL PROC
.ENDIF
REMOVE_RADIO_IN2_VAL:
LD ACC_SEN_VAL,#29H
LD RADIO_FIRST_VAL,IN2_DATA1
LD RADIO_SENC_VAL,IN2_DATA2
LD RADIO_THIR_VAL,IN2_DATA3
RET
.IF 0
REMOVE_RADIO_IN2_VAL ENDP
.ENDIF
;**********************************************************************
;
; read byte to ACC_RET_VAL
;
.IF 0
VFD_ReadByte PROC
.ENDIF
VFD_ReadByte:
;**********************************************************************
PUSH R0
PUSH R1
vfd_set_in_mode ;将p2.7设为输入状态
clr R0
LD R1,#8H
read_vfd_da:
rr R0
vfd_clr_clk ;CLK为低电位
call DELAY_TIME
vfd_get_data
JP Z,no_set_1
OR R0,#80H
no_set_1:
vfd_set_clk ;CLK为高电位
call DELAY_TIME
DEC R1
CP R1,#00H
JP NE,read_vfd_da
readbyte_end:
vfd_set_out_mode ;将p2.7设为输出状态
LD ACC_RET_VAL,R0
POP R1
POP R0
ret
.IF 0
VFD_ReadByte ENDP
.ENDIF
;**********************************************************************
;**********************************************************************
;**********************************************************************
;
; SEND BYTE FROM ACC_SEN_VAL
;
.IF 0
VFD_SendByte PROC
.ENDIF
VFD_SendByte:
;**********************************************************************
PUSH R0
LD R0,#08H
send_vfd_da:
vfd_clr_clk ;CLK为低电位
call DELAY_TIME
vfd_clr_data ;数据为低电位
TM ACC_SEN_VAL,#1H
JP Z,send_low
vfd_set_data
send_low:
vfd_set_clk ;数据为高电位
RR ACC_SEN_VAL
vfd_set_clk ;CLK为高电位
call DELAY_TIME
DEC R0
CP R0,#00H
JP NE,send_vfd_da
send_end:
POP R0
ret
.IF 0
VFD_SendByte ENDP
.ENDIF
;**********************************************************************
;**********************************************************************
;
; INIT VFD
;
.IF 0
VFD_INIT PROC
.ENDIF
VFD_INIT:
;**********************************************************************
PUSH R0
vfd_clr_cs
LD ACC_SEN_VAL,#0BH
CALL VFD_SendByte
vfd_set_cs
call DELAY_TIME
vfd_clr_cs
LD ACC_SEN_VAL,#08CH
call VFD_SendByte
vfd_set_cs
call DELAY_TIME
vfd_clr_cs
LD ACC_SEN_VAL,#040H
call VFD_SendByte
vfd_set_cs
call DELAY_TIME
vfd_clr_cs
LD ACC_SEN_VAL,#0C0H
call VFD_SendByte
LD R0,#24H
clear_vfd:
LD ACC_SEN_VAL,#0H
call VFD_SendByte
DEC R0
CP R0,#00H
JP NE,clear_vfd
vfd_init_end:
vfd_set_cs
POP R0
ret
.IF 0
VFD_INIT ENDP
.ENDIF
;**********************************************************************
;
; VFD_Read_Key
; Current_Key range 0+80H------------23+80H valib FFH invalib
.IF 0
VFD_Read_K PROC
.ENDIF
VFD_Read_K:
vfd_clr_cs
PUSH R0
PUSH R1
LD vfd_previous_key,#80H
LD ACC_SEN_VAL,#42H
call VFD_SendByte
call VFD_ReadByte
LD R9,ACC_RET_VAL
call VFD_ReadByte
LD R10,ACC_RET_VAL
call VFD_ReadByte
LD R11,ACC_RET_VAL
call VFD_ReadByte
LD R12,ACC_RET_VAL
call VFD_ReadByte
LD R13,ACC_RET_VAL
call VFD_ReadByte
LD R14,ACC_RET_VAL
vfd_set_cs
LD Current_Key,#80H
LD R1,#30H
CLR R0
ChangeOver:
RCF
rrc R9
rrc R10
rrc R11
rrc R12
rrc R13
rrc R14
JP c,con_read_k
jp sibai
con_read_k:
inc R0
LD Current_Key,vfd_previous_key
sibai:
inc vfd_previous_key
DEC R1
CP R1,#00H
JP NE,ChangeOver
end_read_k:
CP R0,#1H
JP Z,ret_read_k
LD Current_Key,#0FFH ;fail
ret_read_k:
POP R1
POP R0
ret
.IF 0
VFD_Read_K ENDP
.ENDIF
;***********************************************************************
;**********************************************************************
;
; VFD_refresh_Byte
.IF 0
VFD_Refresh_Byte proc
.ENDIF
VFD_Refresh_Byte:
;**********************************************************************
PUSH R0
PUSH R1
vfd_clr_cs
LD ACC_SEN_VAL,#0BH
call VFD_SendByte
vfd_set_cs
call DELAY_TIME
vfd_clr_cs
LD ACC_SEN_VAL,#8CH
call VFD_SendByte
vfd_set_cs
call DELAY_TIME
vfd_clr_cs
LD ACC_SEN_VAL,#40H
call VFD_SendByte
vfd_set_cs
call DELAY_TIME
vfd_clr_cs
LD ACC_SEN_VAL,#0C0H
call VFD_SendByte
LD R0,#0CH
LD R1,#VFD_SHOW_BYTE_ADDR
refresh_vfd:
LD ACC_SEN_VAL,@R1
call VFD_SendByte
INC R1
LD ACC_SEN_VAL,@R1
call VFD_SendByte
call VFD_SendByte
inc R1
DEC R0
CP R0,#00H
JP NE,refresh_vfd
ret_refresh_byte:
vfd_set_cs
POP R1
POP R0
ret
.IF 0
VFD_Refresh_Byte endp
.ENDIF
;**********************************************************************
;
; write led val from a
;
.IF 0
VFD_WriteLed proc
.ENDIF
VFD_WriteLed:
;**********************************************************************
PUSH R0
LD R0,ACC_SEN_VAL
vfd_clr_cs
LD ACC_SEN_VAL,#41H
call VFD_SendByte
LD ACC_SEN_VAL,R0
call VFD_SendByte
vfd_set_cs
POP R0
ret
.IF 0
VFD_WriteLed endp
.ENDIF
;**********************************************************************
;**********************************************************************
;
; read sw to a
;
.IF 0
VFD_GetSW proc
.ENDIF
;**********************************************************************
VFD_GetSW:
vfd_clr_cs
LD ACC_SEN_VAL,#43H
call VFD_SendByte
call VFD_ReadByte
vfd_set_cs
ret
.IF 0
VFD_GetSW endp
.ENDIF
;*********************************************************
;*********************************************************************
; point from acc_SEN_VAL
; 点亮屏上的点
.IF 0
VFD_SHOW_POINT PROC
.ENDIF
VFD_SHOW_POINT:
;*********************************************************************
PUSH R0
PUSH R1
LD R1,#07H
AND R1,ACC_SEN_VAL ;取得低三位
RR ACC_SEN_VAL
RR ACC_SEN_VAL
RR ACC_SEN_VAL
AND ACC_SEN_VAL,#1FH ;取得地址
CLR R2
LD R3,R1
LDC R0,#1E00H[RR2] ;将01234567转化成 1 2 4 8 10 20 40 80
ADD ACC_SEN_VAL,#VFD_SHOW_BYTE_ADDR ;取得VFD数据寄存器的值
LD R1,@ACC_SEN_VAL
OR R1,R0
LD @ACC_SEN_VAL,R1
POP R1
POP R0
ret
.IF 0
VFD_SHOW_POINT ENDP
.ENDIF
;*********************************************************************
; point from acc
; 灭屏上的点 ;add vfd_panel_point_addr
.IF 0
VFD_NOSHOW_POINT PROC
.ENDIF
VFD_NOSHOW_POINT:
;*********************************************************************
PUSH R0
PUSH R1
LD R1,#07H
AND R1,ACC_SEN_VAL ;取得低三位
RR ACC_SEN_VAL
RR ACC_SEN_VAL
RR ACC_SEN_VAL
AND ACC_SEN_VAL,#1FH ;取得地址
CLR R2
LD R3,R1
LDC R0,#1E00H[RR2] ;将01234567转化成 1 2 4 8 10 20 40 80
ADD ACC_SEN_VAL,#VFD_SHOW_BYTE_ADDR ;取得VFD数据寄存器的值
LD R1,@ACC_SEN_VAL
COM R0
AND R1,R0
LD @ACC_SEN_VAL,R1
POP R1
POP R0
ret
.IF 0
VFD_NOSHOW_POINT ENDP
.ENDIF
;**********************************************************************
; 8addr from VAL_VFD_ADDR
; data form ACC_SEN_VAL
;
.IF 0
VFD_SHOW_CHAR PROC
.ENDIF
;**********************************************************************
VFD_SHOW_CHAR:
PUSH R0
PUSH R2
PUSH R3
PUSH R4
RL VAL_VFD_ADDR
LD R0,#13H
SUB R0,VAL_VFD_ADDR
ADD R0,#VFD_SHOW_BYTE_ADDR ;找到VFD所对应的内存RAM
RL ACC_SEN_VAL ;找到字母所对应的段的高地址
CLR R2
LD R3,ACC_SEN_VAL
LD VAL_VFD_ADDR,#0C0H
AND VAL_VFD_ADDR,@R0
LDC R4,#1E88H[RR2] ;高六位
OR R4,VAL_VFD_ADDR
LD @R0,R4
INC R3 ;低八位
SUB R0,#01H
LDC R4,#1E88H[RR2]
LD @R0,R4
POP R4
POP R3
POP R2
POP R0
ret
.IF 0
VFD_SHOW_CHAR ENDP
.ENDIF
;**********************************************************************
;**********************************************************************
; STRING ADDR FROM ACC_SEN_VAL
.IF 0
VFD_SHOW_STRING PROC
.ENDIF
VFD_SHOW_STRING:
PUSH R0
PUSH R1
PUSH R2
PUSH R3
LD R3,ACC_SEN_VAL
CLR R2
CLR R1
con_show_string:
LDC R0,#01F30H[RR2]
CP R0,#CHAR_END
JP EQ,show_string_ret
LD VAL_VFD_ADDR,R1 ;ADDR
LD ACC_SEN_VAL,R0 ;CHAR
CALL VFD_SHOW_CHAR
INC R3 ;NEXT CHAR
JP con_show_string
show_string_ret:
PUSH R3
PUSH R2
PUSH R1
PUSH R0
RET
.IF 0
VFD_SHOW_STRING ENDP
.ENDIF
;************************************************************************
; PT2222 START
; SEND REMOTE CODE
.IF 0
REMOTE_SEND_HEARD_CODE proc
.ENDIF
REMOTE_SEND_HEARD_CODE:
;************************************************************************
CLR_REMOTE
LD ACC_SEN_VAL,#2AH
CALL REMOTE_DELAY_200uS
SET_REMOTE
LD ACC_SEN_VAL,#16H
CALL REMOTE_DELAY_200uS
RET
.IF 0
REMOTE_SEND_HEARD_CODE endp
.ENDIF
;*************************************************************************
;*************************************************************************
;
; remote code from acc
;
.IF 0
REMOTE_SEND_BYTE proc
.ENDIF
REMOTE_SEND_BYTE:
;*************************************************************************
PUSH R0
PUSH R1
LD R0,ACC_SEN_VAL
LD R1,#08H
send_remote_code:
;----------high pulse 0.6ms---------------
CLR_REMOTE
LD ACC_SEN_VAL,#02H
call REMOTE_DELAY_200uS
;------------------------------------------
;------low pulse 0.6 ms or 1.6 ms--------
SET_REMOTE
LD ACC_SEN_VAL,#02H
TM R0,#01H
JP Z,no_ld_7
LD ACC_SEN_VAL,#07H
no_ld_7:
call REMOTE_DELAY_200uS
RR R0
DEC R1
CP R1,#00H
JP NE,send_remote_code
POP R1
POP R0
ret
.IF 0
REMOTE_SEND_BYTE endp
.ENDIF
;***********************************************************************
;***********************************************************************
;
; delay time from ACC_SEN_VAL
; VAL_REMOTE_DELAY_TIME IN TIME0INT
.IF 0
REMOTE_DELAY_200uS PROC
.ENDIF
REMOTE_DELAY_200uS:
;***********************************************************************
clr VAL_REMOTE_DELAY_TIME
rem_delay:
CP ACC_SEN_VAL,VAL_REMOTE_DELAY_TIME
JP UGT,rem_delay
ret
.IF 0
REMOTE_DELAY_200uS ENDP
.ENDIF
;************************************************************************
;
; MAIN: cmd_code from acc_sen_val
;
.IF 0
REMOTE_SEND_CODE PROC
.ENDIF
REMOTE_SEND_CODE:
;************************************************************************
PUSH ACC_SEN_VAL
call REMOTE_SEND_HEARD_CODE
LD ACC_SEN_VAL,#00H
call REMOTE_SEND_BYTE
LD ACC_SEN_VAL,#0FFH
call REMOTE_SEND_BYTE
POP ACC_SEN_VAL
PUSH ACC_SEN_VAL
call REMOTE_SEND_BYTE
POP ACC_SEN_VAL
COM ACC_SEN_VAL
call REMOTE_SEND_BYTE
CLR_REMOTE
LD ACC_SEN_VAL,#02H
call REMOTE_DELAY_200uS
SET_REMOTE
ret
.IF 0
REMOTE_SEND_CODE ENDP
.ENDIF
;******************************************************************************
;******************************************************************************
.IF 0
GET_REMOTE_KEY PROC
.ENDIF
GET_REMOTE_KEY:
LD Current_Key,#0FFH
IR_KEY_DOWN_IS_LOW
JP Z,get_rem_key
LD Current_Key,Current_Key_Bak
get_rem_key:
DATA_OK_IS_HIGH
JP Z,get_ir_key
ret
get_ir_key:
CLR_DATA_OK
COM remote_cmd_code0
CP remote_cmd_code0,remote_cmd_code1
JP Z,get_code
ret
get_code:
LD Current_Key,remote_cmd_code0
LD Current_Key_Bak,Current_Key
ret
.IF 0
GET_REMOTE_KEY ENDP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -