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

📄 wrs485t.asm

📁 C8051F系列单片机外围电路功能模块程序
💻 ASM
字号:
;参考程序C: 文件名:WRS485T.ASM发送ASCII码<abcd>.LCD显示:T>abcd
;实验仪通过UART1实现RS-485通信,运行前应将TX1和P00 短 接,RX1和P01短接.
$include (c8051f020.inc)          ;SFR declarations
SYSCLK		EQU	11059200   ; SYSCLK frequency in Hz
BAUDRATE	EQU     9600       ;Baud rate of UART in bps
BUZ		EQU		P3.5
P32		EQU		P3.2 ;接收/发送控制
TIMER1		EQU		SYSCLK/BAUDRATE/16
ReceiveBit	EQU		20H.0
        ORG		0
	AJMP	main
	ORG	0100H
main:
	MOV	WDTCN,#0deH	;关看门狗
	MOV	WDTCN,#0adH
	CLR	ReceiveBit
	LCALL	SYSCLK_Init	;初始化晶体
	LCALL	PORT_Init	;初始化交叉开关和I/O口
	LCALL	UART1_Init	;初始化UART0
	SETB	P32		    ;发送模式
  MOV  	P7,#54H     ;显示T>
	MOV  	P6,#0CH
	MOV  	P6,#0DH
	LCALL	Delay
	MOV  	P7,#3EH
	MOV  	P6,#0CH
	MOV  	P6,#0DH
	LCALL	Delay
	MOV	SBUF1,#61H  ;发送字符a
TINT:
	MOV	A,SCON1
	ANL	A,#02H
	CJNE	A,#02H,TINT	;送中断模式是否产生
	MOV	A,SCON1
	ANL	A,#0FDH
	MOV	SCON1,A		;清发送中断标志
    MOV  	P7,#61H   ;显示发送的字符a
	MOV  	P6,#0CH
	MOV  	P6,#0DH
	LCALL	Delay		;延时
	MOV	SBUF1,#62H  ;发送字符b
TINT1:
	MOV	A,SCON1
	ANL	A,#02H
	CJNE	A,#02H,TINT1	;送中断模式是否产生
	MOV	A,SCON1
	ANL	A,#0FDH
	MOV	SCON1,A		;清发送中断标志
  MOV  	P7,#62H   ;显示发送的字符b
	MOV  	P6,#0CH
	MOV  	P6,#0DH
	LCALL	Delay		;延时
MOV	SBUF1,#63H  ;发送字符c
TINT2:
	MOV	A,SCON1
	ANL	A,#02H
	CJNE	A,#02H,TINT2	;送中断模式是否产生
	MOV	A,SCON1
	ANL	A,#0FDH
	MOV	SCON1,A		;清发送中断标志
  MOV  	P7,#63H   ;显示发送的字符c
	MOV  	P6,#0CH
	MOV  	P6,#0DH
	LCALL	Delay		;延时
MOV	SBUF1,#64H  ;发送字符d
TINT3:
	MOV	A,SCON1
	ANL	A,#02H
	CJNE	A,#02H,TINT3	;送中断模式是否产生
	MOV	A,SCON1
	ANL	A,#0FDH
	MOV	SCON1,A		;清发送中断标志
  MOV  	P7,#64H   ;显示发送的字符d
	MOV  	P6,#0CH
	MOV  	P6,#0DH
	LCALL	Delay		;延时
  sjmp $
	RET
;使能外部11.0592MHz晶体作为系统时钟
SYSCLK_Init:
	MOV   OSCXCN, #67h            ;使能外部晶体
        CLR   A                       ;等待最少1ms 
        DJNZ  acc, $                  ;等待512us
        DJNZ  acc, $                  ;等待512us
osc_wait:                             ;查询XTLVLD-->1
        MOV   a, OSCXCN
        JNB   acc.7, osc_wait
        ORL   OSCICN, #08h            ;选择外部晶体作为系统时钟 
        RET
;初始化I/O口
PORT_Init:
	ORL	XBR2,#44H	;使能UART1,交叉开关和弱上拉 
	ORL	P0MDOUT,#01H	;使能TX1作为推挽输出
	ORL	P1MDOUT,#40H	;使能LED作为推挽输出
	ORL	P3MDOUT,#0dfH
	RET
UART1_Init:
	MOV	SCON1,#50H	;SCON1: 模式1, 8位UART,使能RX
	MOV	TMOD,#20H	;TMOD: 定时器1, 模式2, 8位重载
        MOV	TH1,#0B8H	;设置作为波特率定时器1的重载值
				              ;TH1=256-11059200/9600/16=256-72=184=0B8H
	SETB	TR1		;开定定时器1
	ORL	CKCON,#10H	;定时器1用系统时钟作为时基
	ORL	PCON,#10H	;SMOD1 = 1
	RET

;延时子程序
Delay:  MOV   R7, #08h			
Delay1: MOV   R6, #80h
Delay0: MOV   R5, #00h
        DJNZ  R5, $
        DJNZ  R6, Delay0
        DJNZ  R7, Delay1
	RET
	END

⌨️ 快捷键说明

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