min 发表于 2012-8-20 10:28:15

各位老师帮忙看下串口通讯的程序



我是初学者,想实现PIC与PC机的串口通讯,程序的目的是想通过串口向PIC发消息,控制LED灯的开关;

这段代码写完后,发送消息时没有任何反应,各位老师帮忙看看,谢谢!

PIC型号:16f690



#include <pic.h>
//系统配置(只读位 编程时烧写这些位)
__CONFIG(INTIO & WDTDIS & PWRTEN & MCLRDIS & UNPROTECT \
& UNPROTECT & BORDIS & IESODIS & FCMDIS);
#define uchar unsigned char
#define uint unsigned int
uchar recData;

//*****************************************************************
//延时函数
void delay(int K);
//中断函数                     
void interrupt ISrR(void);               
                        
//-----------------------------------------------------------------------------
void delay(int K)                        //Simple Delay Loop
{
    char i,j;
    for (i = 0; i < 250; i++)
         for (j = 0; j < K; j++);
}

//-----------------------------------------------------------------------------
int main(void)
{
    recData = 0;
    uint i;                  
   

//初始化
    OSCCON = 0x65;          //时钟源设为内部振荡器4MHZ
    ANSEL= 0x00;
    ANSELH = 0x00;          //这两句不能少
    TRISB= 0x00;          //设为输出
    TRISC= 0x00;          //设为输出

    PORTC = 0x80;         //点亮LED灯 C7==LED
    //获得异步串口所需要的波特率
    BRGH = 1;
    BRG16= 0;             //8位波特率发生器
    SPBRG= 25;            //波特率设为9600 ,时钟为4MHZ,异步模式

    TXSTA= 0x24;          //使能发送
    RCSTA= 0x90;          //使能接收,连续接收
    //TXIE = 1;               //使能发送中断
    RCIE   = 1;             //允许接收中断
    GIE    = 1;             //打开全局中断
    PEIE   = 1;             //使能外设中断
    RCIF   = 0;             //清零外部中断标识,接收中断标志位   
   
    //TRISB= 0x20;          //将PORB RXD设为输入口,TXD设为输出口


    //死循环
    while(1)
   {
       switch(recData)
      {
         case 0x01:;
         case 0x02:;
         case 0x03:;
         case 0x04:PORTC = 0x00;break; //close LED
         case 0x05:;
         case 0x06:;
         case 0x07:;
         case 0x08:;
         case 0x09:;
         case 0xa0:PORTC = 0x80;break;//Open LED
      //default:break;
   }
}
}
void interrupt ISrR(void)
{
    //判断是否为串口接收中断
if(RCIF)
{      
       RCIF=0;
    recData = RCREG;
    TXREG = recData;   
   }
}


页: [1]
查看完整版本: 各位老师帮忙看下串口通讯的程序