标题: 关于MCU SUBF串口发送的问题求大佬解释 [打印本页]

作者: hch0086    时间: 2019-4-16 15:31
标题: 关于MCU SUBF串口发送的问题求大佬解释
如图所示,用pcf8591通过AD转换获取数值并通过串口返回,图为样例程序现在不懂的点在于连写了四个SUBF,在第一个SUBF操作完成后,发送中断不就置1了吗,这个程序是如何执行的。
此外,如果我只想通过串口返回D0光敏电阻值,此程序应该如何改写。
小白虚心求教,感激不尽。

qq_pic_merged_1555397767402.jpg (42.88 KB, 下载次数: 23)

qq_pic_merged_1555397767402.jpg

作者: 笨笨兔    时间: 2019-4-16 16:38
没看全你的程序:估计程序不管发送中断,就靠延时来发送;
延时发送不可取,应该用中断发送,写好发送中断即可;这里面有好多工作要做。
作者: yzwzfyz    时间: 2019-4-16 16:56
在第一个SUBF操作完成后,需要等一段时间(串行发送需要时间的),串行完数据后,才将发送标记置1!然而,中断是否发生还取决于,你让不让它中断(中断允许位是否已被你置1)。
程序中DELAY(200),就是等待它串行完成,而后再发第二个。可以猜到,“中断允许位是被清0的,即不允许中断”。
作者: wulin    时间: 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;                //开串口中断(如果使用了串口中断)
}
作者: xuyaqi    时间: 2019-4-16 17:18
程序不全不好判断。
作者: hch0086    时间: 2019-4-22 21:43
非常感谢以上大佬,问题已经解决了




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1