SCON=0x50; 串行口工作在方式1,允许串行接收 0x50是确定的嘛??

SCON=0x50; 串行口工作在方式1,允许串行接收 0x50是确定的嘛??,第1张

是确定的。

SCON是单片机串行口控制寄存器,用于控制串行通信的方式选择、接收和发送,指示串口的状态。字节地址98H,地址位98H~9FH。

SCON寄存器位定义:

其中SM0、SM1是工作方式控制位,REN接收允许控制位。

工作在方式1且允许数据接收,因此SM0、SM1、REN都为1。

则SCON应为0101 0000,即0x50。

扩展资料:

工作方式(SM0 SM1)

1、方式0( SM0 SM1 :0 0):串行口的工作方式0为移位寄存器I/O方式,可外接移位寄存器,一扩展I/O口,也可外接同步I/O设备。

发送 *** 作:当执行一条“MOVSBUF,A”指令时,启动发送 *** 作,由TXD输出移位脉冲,由RXD串行SBUF中的数据。发送完8位数据后自动置TI=1.请求中断。要继续发送时,TI必须有指令清零。

接收 *** 作:REN是串行口接收允许控制位。REN=0时禁止接收;REN=1时允许接收。当软件将REN置“1”时,即开始从RXD端口以fosc/12波特率输入数据,当接收到8位数据时,将中断标志RI置“1”。再次接收数据之前,必须用软件将RI清0。

2、方式1 ( SM0 SM1 :0 1) :串行口为10位通用异步接口。发送或接收一帧数据信息为10位,包括1位起始位“0”、8位数据位、1位停止位“1”。

发送数据:数据从TXD端口输出,当数据写入发送缓冲器SBUF时,就启动发送器发送。发送完一帧数据后,置中断标志TI=1,申请中断,通知CPU可以发送下一个数据了。

接收数据:首先使REN=1(允许接收数据),串行口从RXD接收数据,当采样到1至0跳变时,确认是起始位“0”,就开始接收一帧数据,当接收完一帧数据时,置中断标志RI=1,申请中断,通知CPU从SBUF取走接收到的数据 。

3、方式2 ( SM0 SM1 :1 0) :串行口为11位异步通信接口。发送或接收一帧信息包括1位起始位“0”、8位数据位、1位可编程位、1位停止位“1”。

发送数据:发送前,先根据通信协议由软件设置TB8为“奇偶校验位”或“数据标识位”,然后将要发送的数据写入SBUF,即能启动发送器。

接收数据:先置REN=1,使串行口为允许接收状态,同时还要将RI清“0”。然后再根据SM2的状态和所接收到的RB8的状态决定此串行口在信息到来后是否置RI=1,并申请中断,通知CPU接收数据。

4、方式3 ( SM0 SM1 :1 1) :为波特率可变的11位异步通信方式,除了波特率有所区别之外,其余方式都与方式2相同。

参考资料来源:百度百科-SCON控制寄存器

void UartInit(void) //19200bps@11.0592MHz

{

SCON = 0x50 //8位数据,可变波特率

AUXR &= 0xBF //定时器1时钟为Fosc/12,即12T

AUXR &= 0xFE //串口1选择定时器1为波特率发生器

TMOD &= 0x0F //设定定时器1为16位自动重装方式

TL1 = 0xF4 //设定定时初值

TH1 = 0xFF //设定定时初值

ET1 = 0 //禁止定时器1中断

TR1 = 1 //启动定时器1

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11282781.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存