📄 w77e516双串口演示程序.txt
字号:
;****************************************************
;W77E516双串口演示程序
;串口0发送00H-0FH的16个数据,用定时器2作为波特率发生器
;串口1发送10H-1FH的16个数据,用定时器1作为波特率发生器
;长沙菊阳微电子有限公司 www.jywdz.com
;****************************************************
$nomod51
#include "D:\Keil\C51\ASM\reg520.inc" ;请根据您计算机上的Keil目录进行修改
ORG 0000H
LJMP START
ORG 30H
START:
MOV SP,#5FH ;初始化堆栈
;串口0发送00H-0FH的16个数据
MOV SCON0,#01000000B ;串口0工作于方式1
MOV A,#00H ;待送的第一个数据
MOV R1,#16 ;待送的数据个数
MOV RCAP2H,#0FFH
MOV RCAP2L,#0B8H ;4800波特,#B8h 11.0592M;#88h 18.432M;#7dh 20M;#70h 22.1184M
MOV TH2,#0FFH
MOV TL2,#0B8H ;4800波特,#B8h 11.0592M;#88h 18.432M;#7dh 20M;#70h 22.1184M
MOV PCON,#00H
SETB RCLK
SETB TCLK
SETB TR2
SEND0: MOV SBUF0,A
LOOP0: JBC TI,NEXT0 ;是否送完从00H开始的16个数据?
AJMP LOOP0
NEXT0: CALL DELAY ;延时
INC A
DJNZ R1,SEND0
;串口1发送10H-1FH的16个数据
MOV TMOD,#00100000B ;定时器T1设置为方式2作波特率发生器
MOV TH1,#0FAH ;4800波特定时初值:FA,11.0592M;F6,18.432M;F5,20M;F4,22.1184M
MOV TL1,#0FAH
SETB TR1 ;定时器T1开始运行。
MOV SCON1,#01000000B ;串口1工作于方式1
MOV A,#10H ;待送的数据
MOV R1,#16
SEND1: MOV SBUF1,A
LOOP1: JBC TI1,NEXT1 ;是否送完从10H开始的16个数据?
AJMP LOOP1
NEXT1: CALL DELAY ;延时
INC A
DJNZ R1,SEND1
SJMP $
;延时程序
DELAY:
MOV R7,#10
DELAY1: MOV R6,#200
DELAY2: NOP
NOP
NOP
NOP
DJNZ R6,DELAY2
DJNZ R7,DELAY1
RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -