请教STC15单片机中串口库函数中的几个定义

2020-03-08 19:21发布

在uart.h中,定义了这个结构体:
  1. typedef struct
  2. {
  3.         u8        id;                                //串口号

  4.         u8        TX_read;                //发送读指针
  5.         u8        TX_write;                //发送写指针
  6.         u8        B_TX_busy;                //忙标志

  7.         u8         RX_Cnt;                        //接收字节计数
  8.         u8        RX_TimeOut;                //接收超时
  9.         u8        B_RX_OK;                //接收块完成
  10. } COMx_Define;
复制代码在uart.c文件中,使用了如下函数:

  1. /*************** 装载串口发送缓冲 *******************************/

  2. void TX1_write2buff(u8 dat)        //写入发送缓冲,指针+1
  3. {
  4.         TX1_Buffer[COM1.TX_write] = dat;        //装发送缓冲
  5.         if(++COM1.TX_write >= COM_TX1_Lenth)        COM1.TX_write = 0;

  6.         if(COM1.B_TX_busy == 0)                //空闲
  7.         {  
  8.                 COM1.B_TX_busy = 1;                //标志忙
  9.                 TI = 1;                                        //触发发送中断
  10.         }
  11. }
复制代码
  1. /********************* UART1中断函数************************/
  2. void UART1_int (void) interrupt UART1_VECTOR
  3. {
  4.         if(RI)
  5.         {
  6.                 RI = 0;
  7.                 if(COM1.B_RX_OK == 0)
  8.                 {
  9.                         if(COM1.RX_Cnt >= COM_RX1_Lenth)        COM1.RX_Cnt = 0;
  10.                         RX1_Buffer[COM1.RX_Cnt++] = SBUF;
  11.                         COM1.RX_TimeOut = TimeOutSet1;
  12.                 }
  13.         }

  14.         if(TI)
  15.         {
  16.                 TI = 0;
  17.                 if(COM1.TX_read != COM1.TX_write)
  18.                 {
  19.                          SBUF = TX1_Buffer[COM1.TX_read];
  20.                         if(++COM1.TX_read >= COM_TX1_Lenth)                COM1.TX_read = 0;
  21.                 }
  22.                 else        COM1.B_TX_busy = 0;
  23.         }
  24. }
复制代码请问结构体中的定义,在这两个函数中是怎么发挥作用的呢?为什么这两个函数要写的这么复杂?

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。