在uart.h中,定义了这个结构体:- typedef struct
 
 - { 
 
 -         u8        id;                                //串口号
 
  
-         u8        TX_read;                //发送读指针
 
 -         u8        TX_write;                //发送写指针
 
 -         u8        B_TX_busy;                //忙标志
 
  
-         u8         RX_Cnt;                        //接收字节计数
 
 -         u8        RX_TimeOut;                //接收超时
 
 -         u8        B_RX_OK;                //接收块完成
 
 - } COMx_Define;
 
  在uart.c文件中,使用了如下函数: 
 
- /*************** 装载串口发送缓冲 *******************************/
 
  
- void TX1_write2buff(u8 dat)        //写入发送缓冲,指针+1
 
 - {
 
 -         TX1_Buffer[COM1.TX_write] = dat;        //装发送缓冲
 
 -         if(++COM1.TX_write >= COM_TX1_Lenth)        COM1.TX_write = 0;
 
  
-         if(COM1.B_TX_busy == 0)                //空闲
 
 -         {  
 
 -                 COM1.B_TX_busy = 1;                //标志忙
 
 -                 TI = 1;                                        //触发发送中断
 
 -         }
 
 - }
 
 - /********************* UART1中断函数************************/
 
 - void UART1_int (void) interrupt UART1_VECTOR
 
 - {
 
 -         if(RI)
 
 -         {
 
 -                 RI = 0;
 
 -                 if(COM1.B_RX_OK == 0)
 
 -                 {
 
 -                         if(COM1.RX_Cnt >= COM_RX1_Lenth)        COM1.RX_Cnt = 0;
 
 -                         RX1_Buffer[COM1.RX_Cnt++] = SBUF;
 
 -                         COM1.RX_TimeOut = TimeOutSet1;
 
 -                 }
 
 -         }
 
  
-         if(TI)
 
 -         {
 
 -                 TI = 0;
 
 -                 if(COM1.TX_read != COM1.TX_write)
 
 -                 {
 
 -                          SBUF = TX1_Buffer[COM1.TX_read];
 
 -                         if(++COM1.TX_read >= COM_TX1_Lenth)                COM1.TX_read = 0;
 
 -                 }
 
 -                 else        COM1.B_TX_busy = 0;
 
 -         }
 
 - }
 
  请问结构体中的定义,在这两个函数中是怎么发挥作用的呢?为什么这两个函数要写的这么复杂? 
 
 
 
  |