⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uart.c

📁 这是广西大学生设计大赛的源码
💻 C
字号:


#include "uart.h"
#include <REGX51.H>


/*

#define UARTBUFSIZE 4
typedef struct tUARTBUF
{
 BYTE bBuffer[UARTBUFSIZE];
 BYTE bWritePtr;
 BYTE bReadPtr;
 BYTE bCntData;
}
UARTBUF;

 

UARTBUF  uart_RcevBuf;
UARTBUF  uart_SendBuf;
BIT   uart_TranStopped;

 

void uartInit(void)
{
 BYTE save;

 uart_RcevBuf.bWritePtr = 0;
 uart_RcevBuf.bReadPtr = 0;
 uart_RcevBuf.bCntData = 0;
 //
 uart_SendBuf.bWritePtr = 0;
 uart_SendBuf.bReadPtr = 0;
 uart_SendBuf.bCntData = 0;
 uart_TranStopped = 1;

 // 57600 baud with 11.0592MHz osc
 save = TMOD;
 TMOD = (save & T0_MASK_) | (0x20 & T1_MASK_);
 TH1 = 255;
 TL1 = 255;
 TR1 = 1;

 PCON = SMOD_;

 REN  = 1;
 SM2  = 0;
 SM1  = 1;
 SM0  = 0;

 ES = 1;
}


void uartIntrq(void) interrupt SIO_VECTOR
{
 if (TI)
 {
  TI = 0;

  if (uart_SendBuf.bCntData)
  {
   uart_SendBuf.bReadPtr %= UARTBUFSIZE;
   SBUF = uart_SendBuf.bBuffer[ uart_SendBuf.bReadPtr ];
   uart_SendBuf.bReadPtr++;
   uart_SendBuf.bCntData--;
  }
  else
  {
   uart_TranStopped = 1;
  }
 }

 if (RI)
 {
  RI = 0;

  uart_RcevBuf.bWritePtr %= UARTBUFSIZE;
  uart_RcevBuf.bBuffer[ uart_RcevBuf.bWritePtr ] = SBUF;
  uart_RcevBuf.bWritePtr++;
  uart_RcevBuf.bCntData++;
 }
}


void uartSendByte(BYTE byte)
{
 uart_SendBuf.bWritePtr %= UARTBUFSIZE;
 uart_SendBuf.bBuffer[ uart_SendBuf.bWritePtr ] = byte;
 uart_SendBuf.bWritePtr++;
 uart_SendBuf.bCntData++;

 if (uart_TranStopped)
 {
  uart_TranStopped = 0;
  TI = 1;
 }
}


BYTE uartReceiveByte(void)
{
 BYTE rt;

 if (uart_RcevBuf.bCntData)
 {
  uart_RcevBuf.bReadPtr %= UARTBUFSIZE;
  rt = uart_RcevBuf.bBuffer[ uart_RcevBuf.bReadPtr ];
  uart_RcevBuf.bReadPtr++;
  uart_RcevBuf.bCntData--;
 }

 return rt;
}


BYTE uartCntReceive(void)
{
 return uart_RcevBuf.bCntData;
}

BYTE uartCntSend(void)
{
 return uart_SendBuf.bCntData;
}

*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -