打印

一个月前写的PIC串口接收程序 更换MCU后无法接收串口数据了

[复制链接]
1714|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lydzzhx|  楼主 | 2017-1-11 15:19 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 lydzzhx 于 2017-1-11 15:21 编辑

一个月前写的PIC18串口接收程序 更换MCU后无法接收串口数据了
手头有两块PIC18 一个月前写的串口的收发程序 调试正常 后来重新打板更换MCU后 居然不能接收串口数据了 串口发送正常 用串口精灵可以收到PIC发出的字符串
仔细检查了新PCB没有线路问题在RX引脚用示波器能观察到串口精灵发出的串口波形 TX能正常发出字符串 怀疑更换MCU的时候热风枪高温损坏MCU (两块MCU都坏 并能发出TX的可能性大吗)
单步调试发现PIR 刚开始的时候高位中断 读一次后为零 然后持续为零 麻烦高手帮忙分析一下 在线等新的MCU 和新的解答


波特率 9600 处理器PIC184522K
//***********************************************************
//功能:主程序
//文件名:PIC18F45K22.C                                    
//作  者:QQ:46439147                                         
//日  期:2008年11月10日   
//版  本:Ver.1                              
//***********************************************************
void    main(void)
{  int n;
     P18F_init();// p18f初始化
  RS_init(); //串口初始化
  RCONbits.IPEN=1;//开启中断的高低优先级
  INTCON=0XC0;//开总中断外围模块中断
  Delay(100);
  while(1)
  {
   TRISEbits.TRISE1 = 0; //设置LED
   RS_RX1(10);//接收10个字符串
  }
}
//***********************************************************
//功能:串口1(RC7)接受数据子程序           
//函数名:RS_RX1(unsigned char rn)                                       
//作  者:QQ:46439147                                          
//日  期:2016年12月14日   
//版  本:Ver.1                              
//***********************************************************   
void RS_RX1(unsigned char rn)
{
  unsigned char rx;
  ANSELC=0X00;//关闭PC口的模拟输入
    TRISCbits.TRISC7 = 1; //设置D0口为输入
  RCSTA1bits.SPEN=1;//使能串口1
  TXSTA1bits.SYNC=0;//串口1异步模式
  PIE1bits.RC1IE==1;//允许串口中断
  PIR1bits.RC1IF==0;//串口标志位清零
  RCSTA1bits.CREN=1; //允许串口接受数据
  for(rx=0;rx<rn;rx++)
  {
  LED1==0;
     while(!PIR1bits.RC1IF);//接收缓冲区满
     PIR1bits.RC1IF=0;  //清除中断标志信号
  RendBuf1[rx]=RCREG1;
  LED1==1; //用LED观察是否收到数据
  Delay(100);
  LED1==0;
     }
     RCSTA1bits.CREN=0; //禁止串口接受数据

}

//***********************************************************
//功能:RS_232初始化程序           
//文件名:RS_232.C                                    
//作  者:QQ:46439147                                          
//日  期:2009年09月14日   
//版  本:Ver.1                              
//***********************************************************   
void    RS_init(void)
{   

//*******************1号串口(PC6)初始化C口****************************************
        RCSTA1bits.SPEN=1;//使能串口1
  TXSTA1bits.SYNC=0;//串口1异步模式
  SPBRG1=0x81;//设置串口1波特率20M晶体9600(0x81/129) 19200(0x40/64)115200(0x0A/10)
  TXSTA1bits.BRGH=1;//串口1高速模式
  RCSTA1bits.CREN=1;//串口1接收使能
  TXSTA1bits.TXEN=1;//串口1发射使能
}
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:其实我是个电工

39

主题

99

帖子

1

粉丝