我是初学者,想实现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 0x04ORTC = 0x00;break; //close LED case 0x05:; case 0x06:; case 0x07:; case 0x08:; case 0x09:; case 0xa0ORTC = 0x80;break;//Open LED //default:break; } } } void interrupt ISrR(void) { //判断是否为串口接收中断 if(RCIF) { RCIF=0; recData = RCREG; TXREG = recData; } } |
欢迎光临 英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流 (http://enroobbs.com/) | Powered by Discuz! X3.2 |