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

📄 uart0rf.asm

📁 C8051F系列单片机外围电路功能模块程序
💻 ASM
字号:
;UART0RF.ASM                  ;C8051F UART0 方式0 发送、接收实验
$include (c8051f020.inc)               ; SFR declaration
MTD       EQU   40H    ;设接收缓冲首地址为40H
MRD       EQU   40H    ;设发送缓冲首地址为40H
ORG       0
AJMP      MAIN
ORG       100H
MAIN: 
MOV   WDTCN, #0DEh           ;关看门狗定时器
MOV   WDTCN, #0ADh
LCALL  UARTINT
SETB   P1.2        ;P1.2=1,实验电路处于接收串行数据输入的状态
MOV    R2,#2   	 	;R2,连续传送两个字节
CLR    P1.1    		;置数,将16位并口状态数据置入74LS165內的寄存器
SETB   P1.1
LCALL  VUARTNI ;归一化子程序,读入74LS165发来的串行数据,并存入40H,41H中去
CLR    P1.2    		;P1.2=0,实验电路处于串行数据输出的状态
ACALL  DELAY
CLR    P1.0    		;清除74LS164的输出口
SETB   P1.0
MOV    R2,#2    		;R=2,连续传送两个字节
LCALL  VUARTNO ;归一化子程序,将40H,41H內的数据从串行发送到74LS164去
AJMP    MAIN
;UART方式0状态下,发送N个字节的归一化子程序。
VUARTNO:MOV   R0,#MTD  	;送缓冲区首地址入R0
MOV   SCON0,#0    	    ;UART方式0设定
SOUT:MOV   A,@R0      	;发送数据入A中
CLR   TI         	    ;发送标志清零
MOV   SBUF0,A     	    ;启动发送
WAIO:JNB   TI,WAIO    	;发送等待
INC   R0         	    ;指向下一个发送数据的地址
DJNZ  R2,SOUT    	    ;N个数据发送完否?未完转SOUT
RET              	    ;N个数据发送完,子程序结束
;UART方式0状态下,接收N个字节的归一化子程序
VUARTNI:MOV   R0,#MRD     ;送缓冲区首地址入R0
SIN: CLR   RI            ;清除接收结束标志
MOV   SCON0,#10H        	;UART方式0设定,启动REN=1
WAI:    JNB   RI,WAI    	;接收等待,接收完一帧,数据入SBUF中
MOV   A,SBUF0      	;接收到的数据从A转入接收缓冲区中
MOV   @R0,A;
INC   R0          	;指向下一个接收数据的地址
DJNZ  R2,SIN;     	;N个数据接收完否? 未完转SIN
RET               	;N个数据接收完,子程序结束。
DELAY:MOV   R7,#10H    	;延时子程序
DY:MOV     R6,#0FFH
DJNZ  R6,$
DJNZ  R7,DY
RET
UARTINT:    MOV  XBR0,#04				;选择TX0、RX0连到P0.0,P0.1两个引脚
			MOV  XBR2,#40H               ;允许功能选择开关				
			MOV  P0MDOUT, #01             ;选择P0.0为推拉方式,P0.1为漏极开路
MOV  P1MDOUT ,#7H             ;选择P1.0,P1.1.P1.2为推拉方式
			MOV OSCXCN,#67H               ;选择片外晶振频率(11.0592MHZ)
	WAIT:   MOV  A, OSCXCN
			JNB  ACC.7,WAIT              ;等待外部晶体振荡器稳定
MOV  OSCICN,#08              ;选择外部晶体振荡器,关闭内部振荡器
			RET
END

⌨️ 快捷键说明

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