📄 uart.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 + -