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

📄 dfseript.asm

📁 UART通信协议介绍
💻 ASM
字号:
;--------------------------------------------------------
; 文件名: DFSERIPT.ASM
; 作者: Jason Tseng
;---------
#define DFSERIPT_ASM
#INCLUDE DFSERIPT.INC

PUBLIC TRANSMIT
PUBLIC RECEIVE
BAUDRATE EQU BAUDRATECONST 					;用户定义波特率为波特率常数
TX EQU TXPIN 								;用户定义TXPIN引脚指定为TX
RX EQU RXPIN 								;用户定义RXPIN引脚指定为RX
SDATA .SECTION 'DATA'
	COUNT DB ? 								;串行位计数器
	TXREG DB ? 								;发送数据寄存器
	RCREG DB ? 								;接收数据寄存器
	DELAY DB ? 								;延时计数器
SERIAL .SECTION 'CODE'	
	TRANSMIT PROC 							;TRANSMIT子程序
		MOV TXREG,A 						;将发送的数据赋给TXREG
		MOV A,BAUDRATE 						;设置波特率延时
		MOV DELAY,A 						;
		CLR TX 								;发送起始标志位"0"
		MOV A,9 							;设置发送数据的位数
		MOV COUNT,A 						;
	TXDELAY: 								;
		SDZ DELAY 							;波特率延时循环
		JMP TXDELAY 						;
		MOV A,BAUDRATE 						;重新载入波特率延时常数
		MOV DELAY,A 						;
		SDZ COUNT 							;检查数据发送是否完毕
		JMP SENDBIT 						;如果未发送完毕,跳到SENDBIT发送下一位
		JMP ENDTX 							;数据发送完毕,跳到ENDTX
	SENDBIT:
		RRC TXREG 							;带借位C循环右移txreg以获得发送的数据
		SNZ C 								;检查借位C
		JMP LOBIT 							;C=0跳到LOBIT发送 "0"
		SET TX 								;C=1发送"1"
		JMP TXDELAY 						;
	LOBIT: 									;
		CLR TX 								;发送"0"
		JMP TXDELAY 						;
	ENDTX: 									;
		NOP 								;延时
		NOP 								;
		SET TX 								;发送停止位
	T1: 									;
		SDZ DELAY 							;在发送每一位之间延时
		JMP T1 								;
		MOV A,BAUDRATE 						;
		MOV DELAY,A 						;
	T2: 									;
		SDZ DELAY 							;
		JMP T2 								;
		RET 								;
		TRANSMIT ENDP 						;
	RECEIVE PROC 							;接收子程序
		SZ RX 								;检查起始位"0"
		JMP RECEIVE 						;若无起始位,则跳到receive
		MOV A,9 							;接收到起始位则对接收数据进行初始化
		MOV COUNT,A 						;设置接收位数
		MOV A,BAUDRATE+1 					;设置波特率延时
		MOV DELAY,A 						;
	RXDELAY: 								;
		SDZ DELAY 							;波特率延时
		JMP RXDELAY 						;
		MOV A,BAUDRATE+1 					;重新载入波特率常数
		MOV DELAY,A 						;
		SDZ COUNT 							;检查数据接收是否完毕
		JMP RXBIT 							;如果接收未完毕则跳到RXBIT接收下一位数据
		MOV A,RCREG 						;如果接收完毕,则将准备接收数据
		RET 								;
	RXBIT: 									;
		SET C 								;先设置接收位为"1"
		SNZ RX 								;检查所接收位是否为"1"
		CLR C 								;若接收标志为"0",则清除接收位 "0"
		RRC RCREG 							;带借位循环右移rcreg
		JMP RXDELAY 						;
		RECEIVE ENDP 						;
	END
;-----
; End of DFSERIPT.ASM
;--------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -