打印

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

[复制链接]
4772|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
chaiwq2003|  楼主 | 2008-1-29 11:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <p18f4525.h>
#include <usart.h>
#include <sw_uart.h>

void main(void)
{
    char data='A';
    unsigned int i;
    
    TXSTAbits.SYNC=0; //异步
    TXSTAbits.TX9=0; //8位
    RCSTAbits.CREN=0; //禁止接收    
    TXSTAbits.BRGH=0; //低速
    PIE1bits.TXIE=0; //禁止中断
    
    BAUDCONbits.BRG16=0;
    SPBRG=0x06;    //晶振4MHZ    
    //RCSTAbits.SPEN=0;    
    TXSTAbits.TXEN=1;
    
    
    while(1)
    {
        if(TXSTA&0x02)
         {
            for(i=0;i<300;i++);
            TXREG=data;
            //WriteUSART(data);
            for(i=0;i<30000;i++);
            
         }
    }
}


用Proteus仿真练习PIC18F4525串口通信,使用一个虚拟串口,对UART的设置如上,仿真结果发现没有数据发送出去     
    
沙发
chaiwq2003|  楼主 | 2008-1-29 12:00 | 只看该作者

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

尝试了OpenUART(USART_TX_INT_OFF & USART_RX_INT_OFF & USART_BRGH_LOW & USART_EIGHT_BIT &
             USART_ASYNCH_MODE & BAUD_8_BIT_RATE, 6);

但是编译报告出错Error [1204] too many arguments in function call

没有解决掉
...

使用特权

评论回复
板凳
chaiwq2003|  楼主 | 2008-1-29 13:06 | 只看该作者

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

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

使用特权

评论回复
地板
兰天白云| | 2008-1-29 21:00 | 只看该作者

这玩意还不会用

使用特权

评论回复
5
chaiwq2003|  楼主 | 2008-1-30 11:59 | 只看该作者

搞定了

在昨天即将下班时终于搞定了

错误由两个:
1. 关于波特率的计算,有三种模式计算公式
   异步模式,高速:FOSC/(16*(spbrg+1))
   异步模式,低速:FOSC/(64*(spbrg+1))
   同步模式,FOSC/(4*(spbrg+1))
   其中,FOSC 为振荡器频率,spbrg为波特率发生器寄存器

   程序中的spbrg数值算错了

2. 正确的UART函数为OpenUSART()而不是OpenUART(),都是让<MPLAB C18 C编译器函数库>中Page114页的"软件UART函数"中的内容给害的,里面写的是OpenUART(),编译时怎么都通不过

哈哈,终于解决了

使用特权

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

本版积分规则

29

主题

83

帖子

0

粉丝