c/c++ 51 单片机 串口 硬件
D7D6D5D4D3D2D1D0SM0SM1SM2RENTB8RB8T1RI以上是scon(串行口控制寄存器)的各位对应表。有这样一段代码:aa=SBUF;//接受状态i...
D7 D6 D5 D4 D3 D2 D1 D0
SM0 SM1 SM2 REN TB8 RB8 T1 RI
以上是scon(串行口控制寄存器)的各位对应表。有这样一段代码:
aa = SBUF; //接受状态
if((aa&ox08)==ox08) //若命令未被接受,发复位信号
{
TB8 =1;
err();
}
我想知道的是:TB8在什么时候为0,什么时候为1? 展开
SM0 SM1 SM2 REN TB8 RB8 T1 RI
以上是scon(串行口控制寄存器)的各位对应表。有这样一段代码:
aa = SBUF; //接受状态
if((aa&ox08)==ox08) //若命令未被接受,发复位信号
{
TB8 =1;
err();
}
我想知道的是:TB8在什么时候为0,什么时候为1? 展开
1个回答
展开全部
当串口模式为2、3(9位数据)时,需要用到RB8和TB8,其余模式是不会用到的,TB8是接收到的第9位数据,所以其值取决于发送方的值。
更多追问追答
追问
TB8会不会在收到消息的前后其值发生改变?我总感觉自己理解的 不透彻,但我又不知道怎么去问这个问题。暂时只能这样问
追答
上面说反了,当RI=1(串行数据接收完毕)时,RB8为接收到的第九位数(一般为校验值),TB8的值只能由软件改写,硬件不会改变该位的值。所以当发送时,先给该位赋值。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询