PIC16F690 串口通信问题,拜托各位帮忙,将完整C程序附上,能发不能收!!!!【恢复】

2020-02-06 10:26发布

 串口通信,与PC机通信,可以发送但是不能接收,以下是我的程序,请指教啊!!!! 

   void interrupt ISrR(void) 

  { 

    if(RCIF&&RCIE) //判断是否为串口接收中断 

     { 

        RCIF=0; 

        PORTC_2=!PORTC_2;   //指示灯的作用,发现只能进一次中断,在上电的时候 

        if(OERR)  

         {                

              CREN=0;CREN=1; 

            } 

         

     } 

  }  

void main(void) 

{   

   unsigned char j; 

   SPBRG=25;   //波特率设为9600 

   TXSTA=0x24;//使能发送 

   RCSTA=0x90;// 使能接收 

   RCIF=0;    //清零外部中断  

   GIE=1;     //开放全局中断 

   PEIE=1;    //使能外设中断 

   TRISC=0x00;//将PORC定为输出 

   TRISB=0x20;//将PORB RXD 设为输入口,TXD 设为输出口 

   PORTC_2=0; 

   PORTC_4=1; //485通信片选,发送使能                            

      for(j=0;j<3;j++) 

          { 

          TXREG=0x69; 

          while(!TRMT);//如果发送在正在进行,那么等待 

         } 

  PORTC_4=0; //485通信片选,接收发送使能  

  RCIE=1;    //使能接收中断 

  while(1); //等待接收中断  

 } 
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
12条回答
zhu555
1楼-- · 2020-02-07 00:12
 精彩回答 2  元偷偷看……
flor
2楼-- · 2020-02-07 04:09
回复【7楼】zhu555
-----------------------------------------------------------------------

正解
myw8539
3楼-- · 2020-02-07 09:55
运行后,检查中断标志是否有效!
2d732
4楼-- · 2020-02-07 14:20
在690的数据手册中提到这个:If the RX/DT pin is shared with an analog peripheral the analog I/O.function must be disabled by clearing the corresponding ANSEL bit.
所以楼上那位大哥是正解。
2d732
5楼-- · 2020-02-07 18:24
我也是被这个问题受困很久,看到radarOV123 的
加下以下两句:
    ANSEL  = 0x00;
    ANSELH = 0x00;
后立刻见效。再回头看690的datasheet,结果人家是提到这点的。看来看书不能马虎。
120542121
6楼-- · 2020-02-07 19:21
 精彩回答 2  元偷偷看……

一周热门 更多>