📄 rfremote.asm
字号:
;================================================================
;编码波形输出
;Note: Encoding waveform output
;Wave format:
; |<---Pilot-->|<-bit0->|<-bit1->| |<-stop->|
; H L H L H L H
; |----| |--| |-----| | |--------|
; | | | | | | | | |
; | | | | | | |........| |
;__| |_______| |_____| |__| | |______
;
;说明:根据波形宽度设定合理的中断时间,在中断中发送波形。起始、
;数字、停止位的宽度均需自行设定。宽度=中断时间×(相应设定数值+1)。
;数据先传送低位再传送高位。
;使用步骤如下:
; 1. 设定波形输出脚位、波形脉宽
; 2. 要传送的数据由低到高依次存入
; RF_remotedata_val+0、RF_remotedata_val+1.....
; 3. 设定RF_remotestart_f为1
; 4. call RF_remote_init ;at @@main
; call RF_remote_process ;at @@int_rs
; 5. 发送结束,RF_remotefinish_f为1
;
; Ram use: 4+发送字节数
; stack layer: 1
; Version 1.0, 02/03/2004 Author: Recal Chao
;================================================================
;.data
; O_RFremote equ px.x ;设定波形输出脚位
; Om_RFremote equ pxm.x
;RF_pilot_Lval equ # ;
;RF_pilot_Hval equ # ;
;RF_bit0_Lval equ # ;
;RF_bit0_Hval equ # ;
;RF_bit1_Lval equ # ;
;RF_bit1_Hval equ # ;
;RF_stop_Lval equ # ;
;RF_stop_Hval equ # ;
;RF_databit_val equ # ;
;RF_remotecountH ds 1
;RF_remotecountL ds 1
;RF_remotedata_val ds 2
;RF_databit_count ds 1
;RF_remote_mode ds 1
; 1 = remote pilot, 2 = remote data, 3 = remote stop bit
;RF_flag ds 1
; RF_remotestart_f equ RF_flag.0 ;1==satart remote
; RF_remoteover_f equ RF_flag.1 ;1==remote temp over
; RF_remotefinish_f equ RF_flag.2 ;1==remote finish
; RF_remotelevel_f equ RF_flag.3 ;control output 0/1
;.code
RF_remote_init: ;Note: call at @@main
bts1 RF_remotestart_f
jmp RF_remote_init90
bclr RF_remotestart_f
mov_ RF_databit_count,RF_databit_val
mov_ RF_remotecountH,RF_pilot_Hval
mov_ RF_remotecountL,RF_pilot_Lval
mov a,#1
mov RF_remote_mode,a
bclr RF_remotelevel_f
bclr RF_remotefinish_f
RF_remote_init90:
ret
;--------------------------------
RF_remote_process: ;Note: call at @@int_rs
mov a,RF_remote_mode
@jmp_a 4
jmp RF_remote_process90
jmp RF_remote_pilot
jmp RF_remote_data
jmp RF_remote_stop
jmp RF_remote_process90
RF_remote_pilot:
bts0 RF_remoteover_f
jmp @f
call RF_remote
jmp RF_remote_process90
@@:
bclr RF_remoteover_f
call RF_remotedata_setting
mov a,#2
mov RF_remote_mode,a
jmp RF_remote_data
RF_remote_data:
bts0 RF_remoteover_f
jmp @f
call RF_remote
jmp RF_remote_process90
@@:
bclr RF_remoteover_f
call RF_remotedata_setting
decms RF_databit_count
jmp RF_remote_data
mov a,#3
mov RF_remote_mode,a
mov_ RF_remotecountL,RF_stop_Lval
mov_ RF_remotecountH,RF_stop_Hval
jmp RF_remote_stop
RF_remote_stop:
bts0 RF_remoteover_f
jmp @f
call RF_remote
jmp RF_remote_process90
@@:
bclr RF_remoteover_f
bset RF_remotefinish_f
mov a,#0
mov RF_remote_mode,a
bclr O_RFremote
bset Om_RFremote
RF_remote_process90:
; ret
jmp RF_remote_process_ret
;--------------------------------
RF_remote:
bts1 RF_remotelevel_f
jmp RF_remoteL_level
RF_remoteH_level:
decms RF_remotecountH
jmp @f
bset O_RFremote
bset Om_RFremote
bclr RF_remotelevel_f
bset RF_remoteover_f
jmp RF_remote90
@@:
bset O_RFremote
bset Om_RFremote
jmp RF_remote90
RF_remoteL_level:
decms RF_remotecountL
jmp @f
bclr O_RFremote
bset Om_RFremote
bset RF_remotelevel_f
jmp RF_remote90
@@:
bclr O_RFremote
bset Om_RFremote
RF_remote90:
ret
;--------------------------------
RF_remotedata_setting:
rrcm RF_remotedata_val+1
rrcm RF_remotedata_val+0
jc RF_remotedata_set1
RF_remotedata_set0:
mov_ RF_remotecountH,RF_bit0_Hval
mov_ RF_remotecountL,RF_bit0_Lval
jmp RF_remotedata_setting90
RF_remotedata_set1:
mov_ RF_remotecountH,RF_bit1_Hval
mov_ RF_remotecountL,RF_bit1_Lval
RF_remotedata_setting90:
ret
;-------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -