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

[复制链接]
 楼主| win2000_li 发表于 2008-1-9 22:26 | 显示全部楼层 |阅读模式
兄弟在搞PIC18F4550串行口通讯时,出现这样的问题。<br /><br />就是在上电后,串口一直发送0x00到PC机上。<br /><br />并且在设计时,是当PC机发送数据给下位机,下位机收到数据后,校验正确后,<br /><br />再发相应的数据给PC机,但也是有一固定几个而以。也不是一直发啊!!<br /><br />而且在ICD2硬件仿真的情况下,程序还没有执行,下位机就一直给PC机发送数<br /><br />据。<br /><br />最奇怪的是当我的程序运行后,下位机还一直给PC机发送数据,当我按相应的<br /><br />命令格式发送命令给下位机时,下位就不一直发数据了,而是返回正确的数据。<br /><br /><br />请哪位大侠指点一二。<br /><br />以下是我的初始化程序!!!<br />void&nbsp;UsartInit(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;INTCONbits.GIE&nbsp;=&nbsp;false;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//关中断<br />&nbsp;&nbsp;&nbsp;&nbsp;//特殊功能寄存器设置<br />&nbsp;&nbsp;&nbsp;&nbsp;TRISCbits.TRISC6&nbsp;=&nbsp;true;&nbsp;&nbsp;&nbsp;&nbsp;//RX<br />&nbsp;&nbsp;&nbsp;&nbsp;TRISCbits.TRISC7&nbsp;=&nbsp;true;&nbsp;&nbsp;&nbsp;&nbsp;//TX<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;//串口设定<br />&nbsp;&nbsp;&nbsp;&nbsp;SPBRG&nbsp;=&nbsp;0x81;&nbsp;&nbsp;&nbsp;&nbsp;//晶振20M时波特率:9600<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//接收数据寄存器器设置<br />&nbsp;&nbsp;&nbsp;&nbsp;RCSTA&nbsp;=&nbsp;0x00;<br />&nbsp;&nbsp;&nbsp;&nbsp;PIE1bits.RCIE&nbsp;=&nbsp;true;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//允许接收中断<br />&nbsp;&nbsp;&nbsp;&nbsp;PIR1bits.RCIF&nbsp;=&nbsp;false;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//中断位清0<br />&nbsp;&nbsp;&nbsp;&nbsp;RCSTAbits.CREN&nbsp;=&nbsp;true;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//使能接收<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//发送接收数据寄存器器设置<br />&nbsp;&nbsp;&nbsp;&nbsp;TXSTA&nbsp;=&nbsp;0x04;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//SYNC=0;BRGH=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;RCSTAbits.SPEN&nbsp;=&nbsp;true;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//使能串口<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//打开中断<br />&nbsp;&nbsp;&nbsp;&nbsp;INTCONbits.PEIE&nbsp;=&nbsp;true;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//允许所有关未屏蔽的外围中断<br />&nbsp;&nbsp;&nbsp;&nbsp;INTCONbits.GIE&nbsp;=&nbsp;true;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//开中断<br />}<br /><br /><br />
 楼主| 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高电平

  
hotpower 发表于 2008-1-10 13:55 | 显示全部楼层

哈哈~~~看错了...

虽没用过18系列,但感觉下2句必有1句有问题<br />&nbsp;&nbsp;&nbsp;&nbsp;TRISCbits.TRISC6&nbsp;=&nbsp;true;&nbsp;&nbsp;&nbsp;&nbsp;//RX<br />&nbsp;&nbsp;&nbsp;&nbsp;TRISCbits.TRISC7&nbsp;=&nbsp;true;&nbsp;&nbsp;&nbsp;&nbsp;//TX<br /><br />
ocon 发表于 2008-1-10 14:25 | 显示全部楼层

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

  
 楼主| win2000_li 发表于 2008-1-11 20:33 | 显示全部楼层

谢谢OCON,搞定了。

就是这里的问题!!<br /><br />谢谢!!!
richardvip 发表于 2008-1-13 11:09 | 显示全部楼层

楼上两位能否说得清楚些

我在调试时也遇到同样的问题,tx脚不是直接接232了吗,怎么是设成高阻了呢,还请两位赐教,谢谢了
lifengtao 发表于 2008-2-28 16:03 | 显示全部楼层

我也遇到了

我也遇到这种情况了,我的TX脚是设置成输出状态。不明白怎么能设成高阻状态?不就是输入和输出状态么?<br />后来我就不和那台电脑通讯了,直接单片机和单片机通讯就没问题。希望win2000_li&nbsp;和ocon&nbsp;再说说。
 楼主| win2000_li 发表于 2008-2-28 23:34 | 显示全部楼层

我也不是很清楚!!!

好像根IO里的结构有关系!!!<br /><br />我没有仔细研究。<br /><br />能用就行了。
lifengtao 发表于 2008-3-7 11:57 | 显示全部楼层

又有新发现

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

本版积分规则

142

主题

718

帖子

1

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