51单片机执行完串口发送指令SBUF=Data; CPU是不是一直在发送数据位,此时CPU是不是被占用了?
intData;SBUF=Data;while(!TI);while(!TI);这一句是在执行完上一条指令后立即进行还是等数据发送完后才进行?假如SBUF=Data;执行...
int Data;
SBUF=Data;
while(!TI);
while(!TI);这一句是在执行完上一条指令后立即进行还是等数据发送完后才进行?
假如SBUF=Data;执行,到发送完毕TI置位有一段时间,这段时间我们人为放大以便说明。问题就是单片机CPU是在执行一位一位的串口发送;
还是由另一个独立单元(类似于定时器)在执行串口发送,而单片机CPU已经在等待while(!TI); 展开
SBUF=Data;
while(!TI);
while(!TI);这一句是在执行完上一条指令后立即进行还是等数据发送完后才进行?
假如SBUF=Data;执行,到发送完毕TI置位有一段时间,这段时间我们人为放大以便说明。问题就是单片机CPU是在执行一位一位的串口发送;
还是由另一个独立单元(类似于定时器)在执行串口发送,而单片机CPU已经在等待while(!TI); 展开
4个回答
展开全部
不是你理解的这样的。往SBUF里装入数据后,单片机的串口会自动发送,不需要CPU干预的。
CPU往SBUF里送完数后就执行while指令,等待硬件串口发送完毕的标志置一。
CPU往SBUF里送完数后就执行while指令,等待硬件串口发送完毕的标志置一。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
CPU是在发送没问题,但是不要忘了单片机是有前后台系统的,比如一个程序中带有定时器,那么主程序执行的时候单片机也同时在不停的计数,这是互不干涉的,所以本人认为CPU此时并未被完全占用,while(!TI);是紧跟着执行的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
串口发送是一位位发的,没发完继续发。while(!TI)是在那等待发完,机器对TI置“1”。
追问
这个发送时由CPU进行的吗?
也就是说发送完毕了,机器自动对TI置1,然后CPU再执行while(!TI)
不知是不是这样理解?
追答
是,TI=1后 执行 while(!TI)后,就走了。while(!TI)是TI=0时在这里等待。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询