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();
        }
}

请高手帮我看看我这个哪里出错了,感激不尽!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
surf_131
1楼-- · 2020-02-06 16:06
找个GPS模块,TTL电平的,连续不断发送数据到RX,查你的程序,直到收到数据。
让别人替你改,你怎么得经验?怎么提高技能?
whyisp
2楼-- · 2020-02-06 19:39
 精彩回答 2  元偷偷看……
adjda
3楼-- · 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)

这个芯片我没有用过,我只是看手册,对应查到的一点东西;没有实际验证,意见仅供参考;
craigtao
4楼-- · 2020-02-07 03:50
最近也打算入手PIC18F4580这个芯片学习,主要学学can总线这块,不知道楼主现在用的怎么样了啊
yklstudent
5楼-- · 2020-02-07 09:09
craigtao 发表于 2014-9-10 10:21
最近也打算入手PIC18F4580这个芯片学习,主要学学can总线这块,不知道楼主现在用的怎么样了啊 ...

为什么不用新型号 PIC18F25K80、PIC18F45K80等呢
中英文资料齐全
craigtao
6楼-- · 2020-02-07 09:19
yklstudent 发表于 2014-9-10 10:55
为什么不用新型号 PIC18F25K80、PIC18F45K80等呢
中英文资料齐全

我现在找了一块二手的,想入门,还有学习一下 1939协议,我是初学者的,

一周热门 更多>