本文作者:sukai

串口编程(python串口编程)

sukai 2023-12-24 107

  接收采用中断实现

  #include pic.h

  unsigned char error=0x00; //错误数据帧,丢弃

  bit Q=0; //一次数据帧接收完成标志位

  unsigned char message[10]; //数据信息缓存区

  unsigned char j=0x00; //数据信息的长度

  void interruptisr(void) //接收中断处理

  {

  if(RCIFRCIE)

  {

  if(FERR)//监测是否有帧错误

  {

  error=RCREG;

  }

  if(OERR)

  {

  CREN=0 ;

  CREN=1 ; //接收模块被复位重置,OERR清零

  }

  message[j]=RCREG; //保存每一次接收到的数据

  ++j;

  if(j10)

  {

  Q=1; //10个数据字节接收完成标志

  j=0;

  }

  }

  }

  void usart_init() //串口初始化

  {

  INTCON=0 ; // 关闭所有的中断

  TRISC6=1 ;

  TRISC7=1 ;

  SPBRG=51;//波特率9600,6M时钟

  BRGH=1; //高速波特率

  SYNC=0;

  SPEN=1; //异步串口工作方式

  TXEN=1; //USART工作于发送器方式

  TXIE=0; //发送不需要中断处理

  RCIE=1; //接收需要中断处理

  CREN=1; //激活接收器

  PEIE = 1;

  GIE = 1;

  }

  void putch(unsigned char byte) //发送一个字节的数据

  {

  TXREG = byte;

  while(TRMT==0)

  {

  asm("nop");

  }

  return;

  }

  void main() //将上位机发送的数据通过串口显示

  {

  usart_init();

  while(1)

  {

  if(Q==1)

  {

  Q=0;

  for(j=0;j10;++j)

  putch(message[j]);

  }

串口编程(python串口编程)

  }

  }

  原文链接:https://www.eeworld.com.cn/mcu/article_2016110231133.html

阅读
分享