16F1823 为什么USAT接收不了数据呢

2019-03-25 19:22发布

#include <pic.h>
__CONFIG(0x09e2);  // config1
__CONFIG(0x1fff);  // config2.

#define NUM_OF_BUFFER    15              //缓冲区大小 BYTE(s)
unsigned char  recv_buffer_[NUM_OF_BUFFER];
unsigned char  rx_counter_;

void Initialize()
{
    OSCCON = 0x00;    //时钟源配置,使用外部晶振 11.0592M
  //----------------------
    TRISA = 0x3B;    //00111011B; //配置端口方向
    TRISC = 0x30;    //00110000B;  //配置端口方向
  //初始化端口的值
    RA2 = 1;      
    RC0= 0;
  //PORTC = 0x0A;
  //_delay(0x20);
//--------------------
    TXSTA = 0x00;     //发送控制寄存器
    RCSTA = 0x90;     //接收控制寄存器
    BAUDCON = 0x01;   //波特率控制寄存器 8位波特发生器
   SPBRG = 0x08;    //设置波特率为  19200
//------------------------
   OPTION_REG = 0xc7;    //OPTION寄存器 Timer0 采用256分频
   TMR0 = 0x94;          //定时器0 初始值,使RA2产生 200 Hz的方波
//------------------------
  
//INTCON = 0xE0;      //中断寄存器
    GIE = 1;
    PEIE = 1;
    TMR0IE = 1;
    TMR0CS = 0;
//PIE1 = 0xA1;         //外设中断允许寄存器1
    RCIE = 1;
}

void interrupt HandleInt()
{
    if(TMR0IE  && TMR0IF)
    {
        TMR0IF = 0;
        TMR0 = 0x94;      //重新设置定时器的值
         RA2 = !RA2;
    }
  
    else if(RCIE && RCIF)
    {
        recv_buffer_[rx_counter_++] = RCREG;  
        if(rx_counter_ == 15)
        {
           rx_counter_ = 0;
        }
    }
}

void main()
{
/******* INITALIZE **********/
    Initialize();
    while(1)
    {
        ;
    }
}

[ 本帖最后由 没发动机的摩托 于 2012-10-13 20:43 编辑 ] 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
没发动机的摩托
1楼-- · 2019-03-25 21:29
这个程序不能够接收到数据  但是能够发生200HZ的方波 ,这是为什么呢 各位高手帮我看看 是什么原因 我刚开始接触PIC单片机
胡同那有鬼
2楼-- · 2019-03-26 02:40
 精彩回答 2  元偷偷看……

一周热门 更多>