📄 wrs485t.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 + -