求助PIC24FJ256GA106 的串口接收问题

[复制链接]
 楼主| glj77 发表于 2009-4-29 19:26 | 显示全部楼层 |阅读模式
现在用这个芯片作串口通信时,发送正常,但接收不正常,不知是何原因,代码如下:&nbsp;<br /><br /><br />#include&nbsp;&ltp24fxxxx.h&gt&nbsp;<br /><br />_CONFIG1(JTAGEN_OFF&nbsp;&&nbsp;GCP_OFF&nbsp;&&nbsp;GWRP_OFF&nbsp;&&nbsp;COE_OFF&nbsp;&&nbsp;FWDTEN_OFF&nbsp;&&nbsp;ICS_PGx3&nbsp;&&nbsp;BKBUG_ON)&nbsp;<br />_CONFIG2(FCKSM_CSDCMD&nbsp;&&nbsp;OSCIOFNC_OFF&nbsp;&&nbsp;POSCMOD_HS&nbsp;&&nbsp;FNOSC_PRIPLL&nbsp;&&nbsp;IOL1WAY_OFF&nbsp;&&nbsp;FNOSC_PRIPLL)&nbsp;<br /><br /><br />void&nbsp;UART1_put(unsigned&nbsp;char&nbsp;dat)&nbsp;<br />{&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;U1TXREG&nbsp;=&nbsp;dat;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(!U1STAbits.TRMT);&nbsp;<br />}&nbsp;&nbsp;&nbsp;<br /><br /><br /><br />int&nbsp;main(void)&nbsp;<br />{&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;dat&nbsp;=&nbsp;0xAA;&nbsp;<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Unlock&nbsp;Registers&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;asm&nbsp;volatile&nbsp;(&nbsp;&quot;&nbsp;MOV&nbsp;#OSCCON,&nbsp;w1&nbsp;
&nbsp;&quot;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;&nbsp;MOV&nbsp;#0x46,&nbsp;w2&nbsp;&nbsp;&nbsp;
&nbsp;&quot;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;&nbsp;MOV&nbsp;#0x57,&nbsp;w3&nbsp;&nbsp;&nbsp;
&nbsp;&quot;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;&nbsp;MOV.b&nbsp;&nbsp;w2,&nbsp;[w1]&nbsp;
&nbsp;&quot;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;&nbsp;MOV.b&nbsp;&nbsp;w3,&nbsp;[w1]&nbsp;
&nbsp;&quot;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;&nbsp;BCLR&nbsp;OSCCON,&nbsp;#6&nbsp;&nbsp;&nbsp;&nbsp;&quot;&nbsp;);&nbsp;&nbsp;<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;RPOR4bits.RP9R&nbsp;=&nbsp;3;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//RP9&nbsp;设置成&nbsp;U1TXD&nbsp;&nbsp;外设编号=3&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;RPINR18bits.U1RXR&nbsp;=&nbsp;8;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//RP8&nbsp;设置成&nbsp;U1RXD&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Lock&nbsp;Registers&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;asm&nbsp;volatile&nbsp;(&nbsp;&quot;&nbsp;MOV&nbsp;#OSCCON,&nbsp;w1&nbsp;
&nbsp;&quot;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;&nbsp;MOV&nbsp;#0x46,&nbsp;w2&nbsp;&nbsp;&nbsp;
&nbsp;&quot;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;&nbsp;MOV&nbsp;#0x57,&nbsp;w3&nbsp;&nbsp;&nbsp;
&nbsp;&quot;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;&nbsp;MOV.b&nbsp;&nbsp;w2,&nbsp;[w1]&nbsp;
&nbsp;&quot;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;&nbsp;MOV.b&nbsp;&nbsp;w3,&nbsp;[w1]&nbsp;
&nbsp;&quot;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;&nbsp;BSET&nbsp;OSCCON,&nbsp;#6&nbsp;&nbsp;&nbsp;&nbsp;&quot;&nbsp;);&nbsp;<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;TRISBbits.TRISB8&nbsp;=&nbsp;1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//输入&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;TRISBbits.TRISB9&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//输出&nbsp;<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;U1BRG&nbsp;&nbsp;=&nbsp;&nbsp;(&nbsp;16000000&nbsp;+&nbsp;8ul&nbsp;*&nbsp;9600&nbsp;)&nbsp;/&nbsp;16&nbsp;/&nbsp;9600&nbsp;-&nbsp;1;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;U1MODEbits.UARTEN&nbsp;=&nbsp;1;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;U1STAbits.UTXEN&nbsp;=&nbsp;1;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;//UART1_put(0x55);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//发送测试是OK的&nbsp;<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;while(1)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(_U1RXIF)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;如果接收到数据&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_U1RXIF&nbsp;=&nbsp;0;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dat&nbsp;=&nbsp;U1RXREG;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UART1_put(dat);&nbsp;&nbsp;&nbsp;&nbsp;//问题在这里,一直会发送&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br />}&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;程序的本意是收1个字符,然后发送回去&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;发送是没有问题的,但无法正确接收&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;怀疑串口的IO配置有问题,但看不出有什么问题,硬件电路绝对OK,可以排除,郁闷了好久了,大家有没有碰到过这样的情况?&nbsp;<br /><br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;还有2个线索,1是&nbsp;那两段解锁和加锁的汇编代码,不管有或没有,串口的发送都是正常的,难道不需要解锁?&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2是设置成环回模式时,可以收到自己发出的字符&nbsp;<br />现在主要是设置IO重定义的那2句是不是有问题,但看数据手册上的代码也是这样操作的&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;RPOR4bits.RP9R&nbsp;=&nbsp;3;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//RP9&nbsp;设置成&nbsp;U1TXD&nbsp;&nbsp;外设编号=3&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;RPINR18bits.U1RXR&nbsp;=&nbsp;8;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//RP8&nbsp;设置成&nbsp;U1RXD
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

19

帖子

1

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

11

主题

19

帖子

1

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