51单片机里怎样才能让SBUF一次性写入两个字节?

如题所述

这个,做不到。51单片机串口的发送缓冲器只有8位宽,无法一次写入两个字节。
只能分时写入,也就是在发送缓冲器的数据复制到移位寄存器之后,将第二个字节写入发送缓冲器,从而实现不间断地16位串行发送。追问

通过串口助手在上位机向单片机发送一个两位数,并在单片机上用LED灯将这个两位数的二进制形式表示出来。(例如:42的二进制数是00101010,0代表灯灭,1代表灯亮)

大哥我一看你就是个大神,能不能帮我写一个上面的吗,我将感恩戴德,不共戴天。

温馨提示:内容为网友见解,仅供参考
无其他回答

51单片机里怎样才能让SBUF一次性写入两个字节?
51单片机 串口的发送 缓冲器 只有8位宽,无法一次写入两个字节。只能分时写入,也就是在发送缓冲器的数据复制到 移位寄存器 之后,将第二个字节写入发送缓冲器,从而实现不间断地16位串行发送。

51单片机里怎样才能让SBUF一次性写入两个字节?
这个,做不到。51单片机串口的发送缓冲器只有8位宽,无法一次写入两个字节。只能分时写入,也就是在发送缓冲器的数据复制到移位寄存器之后,将第二个字节写入发送缓冲器,从而实现不间断地16位串行发送。

用51单片机中的SBUF怎么传输两个字节的数据
都是一个字节一个字节的发送的。可以这样 void send(short int dat){ SBUF = dat>>8;while(TI == 0);TI = 0;SBUF=dat &0XFF;while(TI == 0);TI = 0;}

单片机串口一次发送两个字节的问题
SBUF=sendL;while(TI==0);TI=0;直接观察TI来判断是否发送成功,而不是靠延时,最好是你写成专门的发送函数,这样程序更清晰

关于51单片机SBUF问题
发送完毕后硬件将TI 置1,软件等到TI为1后将其清0,并进行下次发送,即再次写入SBUF。接收数据时,硬件将接收到的数据放入SBUF,并置为SI标志位,软件可使用中断触发或轮询机制发现SI的变化,将数据从SBUF读出,存入设计的目标存储单元。具体可参考单片机串口部分的手册。

SBUF的详细介绍!(51单片机)
1. SBTF的详细介绍 SBTF,即串口数据缓冲寄存器,是MCS-51串行口的重要组成部分。它包含两个在物理上独立的串行数据缓冲寄存器SBTF,它们共用一个地址99H。这两个缓冲寄存器都是字节寻址的寄存器,字节地址均为99H。在串行发送时,CPU向SBTF写入数据,此时99H表示发送SBTF;在串行接收时,CPU从SBTF读出数据,...

关于51单片机SBUF的理解
1. SBTF实际上是由两个部分组成:一个用于读取接收字节,另一个用于写入发射字节。这两个部分共享同一个地址,因此在进行串口通信时需要特别注意。2. 在串口通信接收数据时,当接收到一个完整的字节,会产生一个接收中断标志,即RI(Receive Interrupt)自动由硬件置为1。此时,可以读取该字节。读取后的...

求解单片机串口中断接收寄存器sbuf中只能存一个字节
SBUF每次只能存储一个字节,如果是字符串的话,那就一个字符一个字符的去发送,,然后先把接收到的放入缓存,完全发送完毕再进行处理

求单片机串口中断接收程序,怎样一次性接受多个字符?
在开中断ES=1后,加一个延时函数.我用过很多这样的了.请多给点分,以后我还可以帮你.程序如下:include<reg52.h> unsigned char flag,i,j;unsigned int k;unsigned char a[10];unsigned char code table[6]="I get ";void init(){ TMOD=0x20; \/\/设定定时器工作方式2 TH1=0xfd; \/...

51单片机如何进行多字节串口接收?!!!
以你的程序为例改进,在中断服务接收中,每次接收中断只收1个字符,完成后退出。void uart_interrupt(void) interrupt 4 using 0 { static unsigned char i=0;unsigned char buf;if(RI==1){ buf=SBUF;switch(i){ case 0:if(buf==0x23)i=1;break;case 1:case 2:case 3:case 4:case ...

相似回答