PIC18F4580 串口调试助手接收不到数据?求高手指点

2020-02-06 10:27发布

#include <htc.h>
#include <pic18.h>

__CONFIG(1, INTCLKO);//INTIO 使用内部晶振 波特率9600bps
__CONFIG(2, PWRTEN & BOREN & BORV28 & WDTDIS);

void OSCInit(void);

void main()
{
  
    TRISC7 = 0;//TX1
    TRISC6 = 1;//RX1
    TRISD = 0 ;
    PORTD = 0 ;
    TXSTA = 0;         
    RCSTA = 0;

    SYNC = 0;//Async operation

    SPBRGH = 0;//Baud Rate Generator Register High Byte
    SPBRG = 0x19;//Baud Rate Generator Register Low Byte
    BRGH = 1;//High Baud Rate Select
    BRG16 = 1;//16-bit Baud Rate Register Enable
   
    SPEN = 1;//Serial Port Enable
    CREN = 1;//Continuous Receive Enable
    TXEN = 1;//Transmit Enable
   
    while(1)
        {
        if(RCIF==1)
        PORTD =0XFF;
        }
}

void OSCInit(void)//4Mhz
{
        IRCF2 = 1;
        IRCF2 = 1;
        IRCF0 = 0;
        while(!OSTS)
        {
        NOP();
        }
        while(!IOFS)
        {
        NOP();
        }
}

请高手帮我看看我这个哪里出错了,感激不尽!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
9条回答
adjda
2020-02-06 22:19
本帖最后由 adjda 于 2012-6-18 17:42 编辑

初始化内置震荡为4MHz的这三句:
        IRCF2 = 1;
        IRCF2 = 1;
        IRCF0 = 0;
是不是要改成:
     IRCF2 = 1;
         IRCF1 = 1;
         IRCF0 = 0;
你原先的语句,IRCF1 没有配置,默认为0;当然,如果你就是用2MHz,这个没有问题;
另,OSCCON最低2位还需要设置成 1X,选择内部时钟模块(手册,page 36)

这个芯片我没有用过,我只是看手册,对应查到的一点东西;没有实际验证,意见仅供参考;

一周热门 更多>