我这个简单程序发送发任何值,收到的都是00

2019-03-25 19:17发布

这是代码:
#include<pic.h>
__CONFIG( FCMEN_OFF & IESO_OFF & CLKOUTEN_OFF & BOREN_OFF & CPD_OFF & CP_OFF & MCLRE_ON & PWRTE_OFF & WDTE_ON & FOSC_INTOSC);
//__CONFIG( FCMEN_OFF & IESO_OFF & CLKOUTEN_OFF & BOREN_ON & CPD_OFF & CP_OFF & MCLRE_OFF & PWRTE_OFF & WDTE_OFF & FOSC_INTOSC);
//__CONFIG(PLLEN_OFF & LVP_OFF & STVREN_OFF & WRT_OFF & BORV_19 );        // 8.63用配置
__CONFIG(PLLEN_OFF & LVP_OFF & STVREN_OFF & WRT_OFF & BORV_LO );        // 8.83用配置
unsigned char state;
unsigned char Receive(void)
{        if(RCIF==0)
        {
     state=RCREG;
     return(state);
    }      
}
void send(unsigned char state)
{
        TXREG=state;
        while(TRMT==1);
}
void USART_init(void)
{
        SYNC=0;
        BRGH=1;
        TXEN=1;
        TX9 =0;
    //BRG16=0;
        SPBRG=0X19;
        SPEN=1;
    CREN=1;
    RX9 =0;
    OERR=0;
    INTCON = 0XC0;
    RCIE = 1;//允许USART接收中断
    //RCIF = 0;        // 清串口中断
        //RCIE = 1;        // 串口接收中断使能
        INTEDG = 1;
}
void Port_init(void)
{
        OSCCONbits.IRCF3 = 1; //1   
        OSCCONbits.IRCF2 = 1; //1
        OSCCONbits.IRCF1 = 0; //1
        OSCCONbits.IRCF0 = 1; //0 //使用了内部晶振4MHZ,所以不用额外设置
        TRISB2=0;
        TRISB1=1;
}
void main(void)
{
        Port_init();
        USART_init();
        while(1)
        {
   Receive();
   send(state);
    }
} 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
鲍飞飞
1楼-- · 2019-03-26 02:08
我用串口助手给他发送的,中间经过了MAX232,
我发的都是其他数据,接收到的都是00
鲍飞飞
2楼-- · 2019-03-26 04:54
我采用仿真模式,在模式下看到RCREG这个寄存器一直为0,而测试RB1管脚,就是单片机RX管脚得到波形的。
说明硬件没问题。
鲍飞飞
3楼-- · 2019-03-26 08:31
 精彩回答 2  元偷偷看……
鲍飞飞
4楼-- · 2019-03-26 08:32
别都看着不说话啊,我看着点击率30几,回复全是我一个人的
cdf777
5楼-- · 2019-03-26 13:04
你没有中断函数入口啊
电感奇兵
6楼-- · 2019-03-26 18:48
个人分享:如何学习单片机
http://bbs.big-bit.com/forum.php ... &fromuid=100824

一周热门 更多>