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

2025-01-17 11:30:49
推荐回答(4个)
回答1:

首先你的Data类型有问题,如果是int型数据,应该分高、低字节发送(Data/256和Data%256)。while指令是跟着上一条立即执行的,发送完TI会置1,跳出while往下执行。
你补充说的后一种是对的,CPU只是在等着TI置位,数据发送由硬件完成。

回答2:

不是你理解的这样的。往SBUF里装入数据后,单片机的串口会自动发送,不需要CPU干预的。
CPU往SBUF里送完数后就执行while指令,等待硬件串口发送完毕的标志置一。

回答3:

CPU是在发送没问题,但是不要忘了单片机是有前后台系统的,比如一个程序中带有定时器,那么主程序执行的时候单片机也同时在不停的计数,这是互不干涉的,所以本人认为CPU此时并未被完全占用,while(!TI);是紧跟着执行的。

回答4:

串口发送是一位位发的,没发完继续发。while(!TI)是在那等待发完,机器对TI置“1”。