⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rfremote.asm

📁 基本完成迷控制算法
💻 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 + -