找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

关于MCU SUBF串口发送的问题求大佬解释

查看数: 1918 | 评论数: 5 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2019-4-16 15:31

正文摘要:

如图所示,用pcf8591通过AD转换获取数值并通过串口返回,图为样例程序现在不懂的点在于连写了四个SUBF,在第一个SUBF操作完成后,发送中断不就置1了吗,这个程序是如何执行的。 此外,如果我只想通过串口返回D0光敏 ...

回复

ID:513688 发表于 2019-4-22 21:43
非常感谢以上大佬,问题已经解决了
ID:94031 发表于 2019-4-16 17:18
程序不全不好判断。
ID:213173 发表于 2019-4-16 17:04
/**********串口发送函数*************/
void SendOneByte(unsigned char c)
{
    SBUF = c;                //发送数据
    while(!TI);        //等待发送完成
    TI = 0;                        //发送中断请求标志位清0
}
//发送字符串(这里4个字节:D[0]~D[3])
void xxxx()
{
        unsigned char i;
        //其它语句
        //........
        ES=0;                        //关串口中断(如果使用了串口中断)
        for(i=0;i<4;i++)
        {
                SendOneByte(D[i]);//调用串口发送函数
        }
        ES=1;                //开串口中断(如果使用了串口中断)
}
ID:123289 发表于 2019-4-16 16:56
在第一个SUBF操作完成后,需要等一段时间(串行发送需要时间的),串行完数据后,才将发送标记置1!然而,中断是否发生还取决于,你让不让它中断(中断允许位是否已被你置1)。
程序中DELAY(200),就是等待它串行完成,而后再发第二个。可以猜到,“中断允许位是被清0的,即不允许中断”。
ID:158375 发表于 2019-4-16 16:38
没看全你的程序:估计程序不管发送中断,就靠延时来发送;
延时发送不可取,应该用中断发送,写好发送中断即可;这里面有好多工作要做。

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表