嵌入式学习小组
直播中

陈小艳

7年用户 196经验值
私信 关注

求基于STM8单片机建立的MAX485操作库程序?

基于STM8单片机建立的MAX485操作库程序

回帖(1)

潘凌

2020-11-12 11:17:46
  #include “STM8S207R8.h”
  void Init_UART1(void)
  {
  UART1_CR1=0x00;
  UART1_CR2=0x00;
  UART1_CR3=0x00;
  // 设置波特率,必须注意以下几点:
  // (1) 必须先写BRR2
  // (2) BRR1存放的是分频系数的第11位到第4位,
  // (3) BRR2存放的是分频系数的第15位到第12位,和第3位
  // 到第0位
  // 例如对于波特率位9600时,分频系数=2000000/9600=208
  // 对应的十六进制数为00D0,BBR1=0D,BBR2=00
  UART1_BRR2=0x00;
  UART1_BRR1=0x0d;
  UART1_CR2=0x2c;//允许接收,发送,开接收中断
  }
  void UART1_sendchar(u8 data)
  {
  while((UART1_SR & 0x80)==0x00);
  UART1_DR=data;
  }
  @far @interrupt void UART1_Recv_IRQHandler (void)
  {
  u8 data;
  data=UART1_DR;
  showLine(6,2,lcd_buffer,“0x%x2”,(u16)data);
  return;
  }
  void Init_UART3(void)
  {
  UART3_CR1=0x00;
  UART3_CR2=0x00;
  UART3_CR3=0x00;
  // 设置波特率,必须注意以下几点:
  // (1) 必须先写BRR2
  // (2) BRR1存放的是分频系数的第11位到第4位,
  // (3) BRR2存放的是分频系数的第15位到第12位,和第3位
  // 到第0位
  // 例如对于波特率位9600时,分频系数=2000000/9600=208
  // 对应的十六进制数为00D0,BBR1=0D,BBR2=00
  UART3_BRR2=0x00;
  UART3_BRR1=0x0d;
  UART3_CR2=0x2c;//允许接收,发送,开接收中断
  }
  void UART3_sendchar(u8 data)
  {
  while((UART3_SR & 0x80)==0x00);
  UART3_DR=data;
  }
  @far @interrupt void UART3_Recv_IRQHandler (void)
  {
  u8 data;
  data=UART3_DR;
  showLine(6,2,lcd_buffer,“0x%x2”,(u16)data);
  return;
  }
  main()
  {
  u8 tmp=0;
  Init_UART3();
  Init_UART1();
  _asm(“rim”);
  while(1)
  {
  UART3_sendchar(tmp);
  delay_ms(10);
  tmp++;
  delay_ms(1000);
  }
  }
举报

更多回帖

发帖
×
20
完善资料,
赚取积分