求助PIC18F串口设置的错误问题

[复制链接]
5422|4
 楼主| chaiwq2003 发表于 2008-1-29 11:58 | 显示全部楼层 |阅读模式
#include&nbsp;&ltp18f4525.h&gt<br />#include&nbsp;&ltusart.h&gt<br />#include&nbsp;&ltsw_uart.h&gt<br /><br />void&nbsp;main(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;data='A';<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;int&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;TXSTAbits.SYNC=0;&nbsp;//异步<br />&nbsp;&nbsp;&nbsp;&nbsp;TXSTAbits.TX9=0;&nbsp;//8位<br />&nbsp;&nbsp;&nbsp;&nbsp;RCSTAbits.CREN=0;&nbsp;//禁止接收&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;TXSTAbits.BRGH=0;&nbsp;//低速<br />&nbsp;&nbsp;&nbsp;&nbsp;PIE1bits.TXIE=0;&nbsp;//禁止中断<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;BAUDCONbits.BRG16=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;SPBRG=0x06;&nbsp;&nbsp;&nbsp;&nbsp;//晶振4MHZ&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//RCSTAbits.SPEN=0;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;TXSTAbits.TXEN=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;while(1)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(TXSTA&0x02)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(i=0;i&lt300;i++);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TXREG=data;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//WriteUSART(data);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(i=0;i&lt30000;i++);<br />&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;}<br />}<br /><br /><br />用Proteus仿真练习PIC18F4525串口通信,使用一个虚拟串口,对UART的设置如上,仿真结果发现没有数据发送出去&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;
 楼主| chaiwq2003 发表于 2008-1-29 12:00 | 显示全部楼层

哪位由实验成功的C实例给参考一下啊,谢谢了

尝试了OpenUART(USART_TX_INT_OFF&nbsp;&&nbsp;USART_RX_INT_OFF&nbsp;&&nbsp;USART_BRGH_LOW&nbsp;&&nbsp;USART_EIGHT_BIT&nbsp;&<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;USART_ASYNCH_MODE&nbsp;&&nbsp;BAUD_8_BIT_RATE,&nbsp;6);<br /><br />但是编译报告出错Error&nbsp;[1204]&nbsp;too&nbsp;many&nbsp;arguments&nbsp;in&nbsp;function&nbsp;call<br /><br />没有解决掉<br />...
 楼主| chaiwq2003 发表于 2008-1-29 13:06 | 显示全部楼层

晶振设置为单片机内部晶振,4MHz,所求波特率为9600

晶振设置为单片机内部晶振,4MHz,所求波特率为9600
兰天白云 发表于 2008-1-29 21:00 | 显示全部楼层

这玩意还不会用

  
 楼主| chaiwq2003 发表于 2008-1-30 11:59 | 显示全部楼层

搞定了

在昨天即将下班时终于搞定了<br /><br />错误由两个:<br />1.&nbsp;关于波特率的计算,有三种模式计算公式<br />&nbsp;&nbsp;&nbsp;异步模式,高速:FOSC/(16*(spbrg+1))<br />&nbsp;&nbsp;&nbsp;异步模式,低速:FOSC/(64*(spbrg+1))<br />&nbsp;&nbsp;&nbsp;同步模式,FOSC/(4*(spbrg+1))<br />&nbsp;&nbsp;&nbsp;其中,FOSC&nbsp;为振荡器频率,spbrg为波特率发生器寄存器<br /><br />&nbsp;&nbsp;&nbsp;程序中的spbrg数值算错了<br /><br />2.&nbsp;正确的UART函数为OpenUSART()而不是OpenUART(),都是让&ltMPLAB&nbsp;C18&nbsp;C编译器函数库&gt中Page114页的&quot;软件UART函数&quot;中的内容给害的,里面写的是OpenUART(),编译时怎么都通不过<br /><br />哈哈,终于解决了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

29

主题

83

帖子

0

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