注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
没发动机的摩托的个人空间 https://home.eeworld.com.cn/space-uid-449372.html [收藏] [复制] [分享] [RSS]
日志

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

已有 891 次阅读2012-10-13 20:25

#include

#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)
    {
        ;
    }
}
评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章