打印

PIC18为什么会是这样的???

[复制链接]
2506|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
win2000_li|  楼主 | 2008-1-9 22:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
兄弟在搞PIC18F4550串行口通讯时,出现这样的问题。

就是在上电后,串口一直发送0x00到PC机上。

并且在设计时,是当PC机发送数据给下位机,下位机收到数据后,校验正确后,

再发相应的数据给PC机,但也是有一固定几个而以。也不是一直发啊!!

而且在ICD2硬件仿真的情况下,程序还没有执行,下位机就一直给PC机发送数

据。

最奇怪的是当我的程序运行后,下位机还一直给PC机发送数据,当我按相应的

命令格式发送命令给下位机时,下位就不一直发数据了,而是返回正确的数据。


请哪位大侠指点一二。

以下是我的初始化程序!!!
void UsartInit(void)
{
    INTCONbits.GIE = false;     //关中断
    //特殊功能寄存器设置
    TRISCbits.TRISC6 = true;    //RX
    TRISCbits.TRISC7 = true;    //TX

    //串口设定
    SPBRG = 0x81;    //晶振20M时波特率:9600
    
    //接收数据寄存器器设置
    RCSTA = 0x00;
    PIE1bits.RCIE = true;        //允许接收中断
    PIR1bits.RCIF = false;        //中断位清0
    RCSTAbits.CREN = true;        //使能接收
    
    //发送接收数据寄存器器设置
    TXSTA = 0x04;                //SYNC=0;BRGH=1;
        
    RCSTAbits.SPEN = true;        //使能串口
          //打开中断
    INTCONbits.PEIE = true;     //允许所有关未屏蔽的外围中断
    INTCONbits.GIE = true;      //开中断
}


沙发
win2000_li|  楼主 | 2008-1-10 00:16 | 只看该作者

为为

自已顶一个!!!!!!!

使用特权

评论回复
板凳
ddb_21ic| | 2008-1-10 13:44 | 只看该作者

没仔细看,好像TX脚初始状态为低电平了,应该为高电平

使用特权

评论回复
地板
hotpower| | 2008-1-10 13:46 | 只看该作者

232电平是-10V以下,3232反向后为TTL高电平

使用特权

评论回复
5
hotpower| | 2008-1-10 13:55 | 只看该作者

哈哈~~~看错了...

虽没用过18系列,但感觉下2句必有1句有问题
    TRISCbits.TRISC6 = true;    //RX
    TRISCbits.TRISC7 = true;    //TX

使用特权

评论回复
6
ocon| | 2008-1-10 14:25 | 只看该作者

那个0x00是感应过来的交流信号,因为你把TX脚设成高阻了。

使用特权

评论回复
7
win2000_li|  楼主 | 2008-1-11 20:33 | 只看该作者

谢谢OCON,搞定了。

就是这里的问题!!

谢谢!!!

使用特权

评论回复
8
richardvip| | 2008-1-13 11:09 | 只看该作者

楼上两位能否说得清楚些

我在调试时也遇到同样的问题,tx脚不是直接接232了吗,怎么是设成高阻了呢,还请两位赐教,谢谢了

使用特权

评论回复
9
lifengtao| | 2008-2-28 16:03 | 只看该作者

我也遇到了

我也遇到这种情况了,我的TX脚是设置成输出状态。不明白怎么能设成高阻状态?不就是输入和输出状态么?
后来我就不和那台电脑通讯了,直接单片机和单片机通讯就没问题。希望win2000_li 和ocon 再说说。

使用特权

评论回复
10
win2000_li|  楼主 | 2008-2-28 23:34 | 只看该作者

我也不是很清楚!!!

好像根IO里的结构有关系!!!

我没有仔细研究。

能用就行了。

使用特权

评论回复
11
lifengtao| | 2008-3-7 11:57 | 只看该作者

又有新发现

电脑接收到很多00的问题,和单片机的管脚设置没多大关系,只要你能用单片机自发自收成功就行。
单片机和电脑通讯,中间需要一个由232芯片组成的转接口,我用遇到的问题就出现在这个转接口上,公司里用的这个不是我做的,可能是焊接问题也许是芯片问题或者其它原因,总之我换了一个 就好了。
如果用USB转232 接口  也许不需要由232芯片组成的转接口也能接收,但还是有一个稳定。。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

142

主题

718

帖子

1

粉丝