51单片机执行完串口发送指令SBUF=Data; CPU是不是一直在发送数据位,此时CPU是不是被占用了?

int Data;
SBUF=Data;
while(!TI);
while(!TI);这一句是在执行完上一条指令后立即进行还是等数据发送完后才进行?
假如SBUF=Data;执行,到发送完毕TI置位有一段时间,这段时间我们人为放大以便说明。问题就是单片机CPU是在执行一位一位的串口发送;
还是由另一个独立单元(类似于定时器)在执行串口发送,而单片机CPU已经在等待while(!TI);

首先你的Data类型有问题,如果是int型数据,应该分高、低字节发送(Data/256和Data%256)。while指令是跟着上一条立即执行的,发送完TI会置1,跳出while往下执行。
你补充说的后一种是对的,CPU只是在等着TI置位,数据发送由硬件完成。
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-04-17
不是你理解的这样的。往SBUF里装入数据后,单片机的串口会自动发送,不需要CPU干预的。
CPU往SBUF里送完数后就执行while指令,等待硬件串口发送完毕的标志置一。
第2个回答  2011-04-17
CPU是在发送没问题,但是不要忘了单片机是有前后台系统的,比如一个程序中带有定时器,那么主程序执行的时候单片机也同时在不停的计数,这是互不干涉的,所以本人认为CPU此时并未被完全占用,while(!TI);是紧跟着执行的。
第3个回答  2011-04-17
串口发送是一位位发的,没发完继续发。while(!TI)是在那等待发完,机器对TI置“1”。追问

这个发送时由CPU进行的吗?
也就是说发送完毕了,机器自动对TI置1,然后CPU再执行while(!TI)

不知是不是这样理解?

追答

是,TI=1后 执行 while(!TI)后,就走了。while(!TI)是TI=0时在这里等待。

51单片机SBUF什么意思?
51单片机中的SBUF是指串行口数据缓冲寄存器,它是一个双缓冲寄存器,包含发送缓冲器和接收缓冲器。在51单片机的串行通信中,SBUF用于暂存要发送的数据或接收的数据。当单片机发送数据时,数据从累加器A传输到SBUF的发送缓冲器,并随后通过串行口发送出去;而在接收数据时,接收到的数据暂时存储在SBUF的接收缓...

51单片机SBUF什么意思?
51单片机SBUF意思是SBUF串行口数据缓冲寄存器,分为输入和输出,但使用时用同一个名字。比如MOV SBUF,A(是输出),MOV A,SBUF(是输入)。SBUF既是接收缓冲器又是发送缓冲器,同一时间只能为一种,要么接收,要么发送。a=SBUF是把接收缓冲器中的数据复制给a。SBUF=a是把a中的数据复制给发送缓冲器。...

要设置51系列单片机串口工作于所需工作方式,应是对哪个专用寄存器进行...
1. 数据缓冲寄存器SBUF是用于51系列单片机串口通信的关键寄存器,它实际上包含两个部分:一个用于发送,一个用于接收。当CPU写入SBUF时,它实际上是在写入发送寄存器;而读取SBUF时,则是从接收寄存器中读取数据。接收器采用双缓冲设计,以防止CPU在处理上一帧数据时未能及时读取接收到的数据,从而避免数据重...

51单片机SBUF什么意思?
51单片机的SBUF指的是串行口数据缓冲寄存器,该寄存器用于串行数据的输入和输出操作,并且在学习时使用同一个名称。例如,当执行MOV SBUF,A指令时,表示数据从累加器A发送到SBUF,即进行数据的输出;而MOV A,SBUF指令则表示将SBUF中的数据读取到累加器A,即进行数据的输入。SBUF既作为接收缓冲器也作为发送...

51单片机的SBUF是存储一位数据发送一位吗
是的51单片机有21个寄存器。这21个寄存器不连续地分布在128个字节的SFR存储空间中。地址空间为80H-FFH,在这片SER空间里面,包含有128个位地址空间,地扯也是80H-FFH,但只有83个有效似地址,可对11个特殊功能寄存器的某些位作位寻址操作。

关于51单片机SBUF问题
SBUF是单片机硬件的串口接收、发送缓存器,软件往SBUF写入数据后,会自动触发单片机硬件的数据发送,发送完毕后硬件将TI 置1,软件等到TI为1后将其清0,并进行下次发送,即再次写入SBUF。接收数据时,硬件将接收到的数据放入SBUF,并置为SI标志位,软件可使用中断触发或轮询机制发现SI的变化,将数据从SBUF...

51单片机串口通讯,如图 这边给SBUF赋值后,单片机是 1 马上发送SBUF的值...
第二是正确的,边发送边执行以下程序,因为只要送数给SBUF后,就是硬件在管理了,不影响后续程序的执行。

51单片机串行口发送数据到上位机(1)
51单片机的串行口结构主要包括两个独立的数据缓冲寄存器(SBUF)、发送控制器、接受控制器、输入移位寄存器以及控制门电路。发送数据时,数据首先被写入SBUF寄存器,随后通过转换为串行数据并加上起始位和停止位后,通过TXD引脚发送出去。接收数据时,RXD引脚接收到的信号通过移位寄存器被逐位读入SBUF,最终在...

要设置51系列单片机串口工作于所需工作方式,应是对哪个专用寄存器进行...
SBUF 是可以直接寻址的专用寄存器。物理上,它对应着两个寄存器,即一个发送寄存 器一个接收寄存器,CPU 写SBUF 就是修改发送寄存器;读SBUF 就是读接收寄存器。接 收器是双缓冲的,以避免在接收下一帧数据之前,CPU 未能及时的响应接收器的中断,没 有把上一帧的数据读走而产生两帧数据重叠的问题。

SBUF的详细介绍!(51单片机)
即:若要通过串口发送数据,只需要往sbuf里写数据,发送完毕后会引起串口中断。发送指令: MOV SBUF,A ;CPU把累加器A中的内容写入发送的SBUF(99H),再由TXD引脚一位一位地向外发送,即:若接收数据,只需要在串口中断标志位置位后(通过中断方式或查询方式),就可读取sbuf中的内容了。接收指令:...

相似回答