51单片机——串口1通信

Dear 丶 2022-10-10 01:47 328阅读 0赞

mark

  1. #include <STC15.H> //52头文件
  2. #include <UART.H>
  3. bit busy1;
  4. /*-------------------------------------------串口1初始化----------------------------------------------*/
  5. void Uart1Init(void)
  6. {
  7. PCON &= 0x7F; //波特率不倍速
  8. SCON = 0x50; //8位数据,可变波特率
  9. AUXR |= 0x40; //定时器1时钟为Fosc,即1T
  10. AUXR &= 0xFE; //串口1选择定时器1为波特率发生器
  11. TMOD &= 0x0F; //清除定时器1模式位
  12. TMOD |= 0x20; //设定定时器1为8位自动重装方式
  13. TL1 = 0xFD; //设定定时初值
  14. TH1 = 0xFD; //设定定时器重装值
  15. ET1 = 0; //禁止定时器1中断
  16. TR1 = 1; //启动定时器1
  17. REN = 1; //不开启这个无法接受数据
  18. ES = 1; //开启串口中断使能
  19. EA = 1;
  20. TI = 0;
  21. RI = 0;
  22. }
  23. /*-------------------------------------------中断+接收----------------------------------------------*/
  24. void Uart1() interrupt 4
  25. {
  26. if ((RI))
  27. {
  28. RI = 0; //清除RI位
  29. }
  30. if (TI)
  31. {
  32. TI = 0; //清除TI位
  33. busy1 = 0; //清忙标志
  34. }
  35. }
  36. /*-------------------------------------------发送----------------------------------------------*/
  37. void PutChar(BYTE dat)
  38. {
  39. while (busy1)
  40. ; //等待前面的数据发送完成
  41. busy1 = 1;
  42. SBUF = dat; //写数据到UART2数据寄存器
  43. }
  44. void PutString(char *s, u8 length) //发送字符串
  45. {
  46. while (length != 0) //检测字符串结束标志
  47. {
  48. PutChar(*s++); //发送当前字符
  49. length--;
  50. }
  51. }

发表评论

表情:
评论列表 (有 0 条评论,328人围观)

还没有评论,来说两句吧...

相关阅读

    相关 51单片机串口通信(UART)

    项目描述: 1.串口工作方式为1(8位UART,波特率可变),无校验位; 2.通信数据格式为:1位起始位 + 8位数据位 + 1位停止位; 3.上电后MCU给上位机