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);
展开
 我来答
simonzty
2011-04-19 · TA获得超过1073个赞
知道小有建树答主
回答量:264
采纳率:100%
帮助的人:238万
展开全部
首先你的Data类型有问题,如果是int型数据,应该分高、低字节发送(Data/256和Data%256)。while指令是跟着上一条立即执行的,发送完TI会置1,跳出while往下执行。
你补充说的后一种是对的,CPU只是在等着TI置位,数据发送由硬件完成。
13324869
2011-04-17
知道答主
回答量:20
采纳率:0%
帮助的人:16.9万
展开全部
不是你理解的这样的。往SBUF里装入数据后,单片机的串口会自动发送,不需要CPU干预的。
CPU往SBUF里送完数后就执行while指令,等待硬件串口发送完毕的标志置一。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友9afc5e6
2011-04-17 · TA获得超过217个赞
知道小有建树答主
回答量:185
采纳率:100%
帮助的人:107万
展开全部
CPU是在发送没问题,但是不要忘了单片机是有前后台系统的,比如一个程序中带有定时器,那么主程序执行的时候单片机也同时在不停的计数,这是互不干涉的,所以本人认为CPU此时并未被完全占用,while(!TI);是紧跟着执行的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
47okey
2011-04-17 · TA获得超过1.2万个赞
知道大有可为答主
回答量:5900
采纳率:75%
帮助的人:2333万
展开全部
串口发送是一位位发的,没发完继续发。while(!TI)是在那等待发完,机器对TI置“1”。
追问
这个发送时由CPU进行的吗?
也就是说发送完毕了,机器自动对TI置1,然后CPU再执行while(!TI)

不知是不是这样理解?
追答
是,TI=1后 执行 while(!TI)后,就走了。while(!TI)是TI=0时在这里等待。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式