搞pic单片机真要看看手册。。。。

[复制链接]
 楼主| zjswuyunbo 发表于 2010-1-28 15:29 | 显示全部楼层 |阅读模式
while(!TXIF)  continue;
        TXREG = buf[0];
        while(!TXIF)  continue;
        TXREG = buf[1];
        while(!TXIF)  continue;
        TXREG = buf[2];
        while(!TXIF)  continue;
        TXREG = buf[3];
上面并没有发出4个数据。。。。。
改为下面的
        while(!TXIF)  continue;
        TXREG = buf[0];
        DelayUs(5);
        while(!TXIF)  continue;
        TXREG = buf[1];
        DelayUs(5);
        while(!TXIF)  continue;
        TXREG = buf[2];
        DelayUs(5);
        while(!TXIF)  continue;
        TXREG = buf[3];
才能发出4个数据。。。。。
感慨下,看了手册,大概是TXIF变化比代码执行慢,覆盖了之前的数据。。。。。
wshlxa 发表于 2010-1-29 13:15 | 显示全部楼层
共同学习,积累经验
yewuyi 发表于 2010-1-29 13:42 | 显示全部楼层
这属于基本常识的问题。
 楼主| zjswuyunbo 发表于 2010-1-29 22:50 | 显示全部楼层
好像其他的单片机并没有这样的问题…
牛牛特工 发表于 2010-2-1 09:34 | 显示全部楼层
本帖最后由 牛牛特工 于 2010-2-1 09:44 编辑

检测TRMT(发送移位寄存器空)进行发送  
而不是仅检测 TXIF(BUF空)  TXIF 通常是常高的
仅会在填入TXREG后置低一小段时间
即TXREG被送入移位寄存器后置高(此时发送才刚刚开始)

这个问题我也遇到过 别人告诉我的 后来看手册也确实是如此
你可以参看pic自己的Sample
叶公应该也知道这个 他就是不说
 楼主| zjswuyunbo 发表于 2010-2-1 09:47 | 显示全部楼层
谢谢,楼上的指教!!
学习了。。。
 楼主| zjswuyunbo 发表于 2010-2-1 09:48 | 显示全部楼层
叶公应该也知道这个 他就是不说:L
nlgz 发表于 2010-2-2 20:19 | 显示全部楼层
pic 的就这样,还以为别的单片机也都这样。
zaizia 发表于 2010-2-25 16:21 | 显示全部楼层
学习了
guangods 发表于 2012-12-22 14:14 | 显示全部楼层
还没正式开始PIC的学习!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

163

主题

1578

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部