📄 uart1.c
字号:
//-----------------------------------------------------------------------------
// uart1.c
//-----------------------------------------------------------------------------
//
//-----------------------------------------------------------------------------
// Includes
//-----------------------------------------------------------------------------
#include <reg52.h>
#include "cpu/cpu.h"
#include "misc/general.h"
//-----------------------------------------------------------------------------
// Constants Define
//-----------------------------------------------------------------------------
#define UART1_BAUD 9600 // 12T
//-----------------------------------------------------------------------------
// Function Prototype
//-----------------------------------------------------------------------------
void Uart1_Send_Byte ( char c );
char Uart1_Receive_Byte ( void );
//-----------------------------------------------------------------------------
// Uart1 Send Byte Routine
//-----------------------------------------------------------------------------
void Uart1_Send_Byte ( char c )
{
char i;
TR2 = OFF; TF2 = CLEAR;
RCAP2L = 0xD0; RCAP2H = 0xFF;
TL2 = 0xD0; TH2 = 0xFF;
Uart1_Txd = HIGH;
TR2 = ON;
while ( !TF2 ); TF2 = CLEAR;
while ( !TF2 ); TF2 = CLEAR;
Uart1_Txd = LOW;
while ( !TF2 ); TF2 = CLEAR;
while ( !TF2 ); TF2 = CLEAR;
for ( i = 8; i > 0; i-- )
{
Uart1_Txd = c & LSB;
c >>= 1;
while ( !TF2 ); TF2 = CLEAR;
while ( !TF2 ); TF2 = CLEAR;
}
Uart1_Txd = HIGH;
while ( !TF2 ); TF2 = CLEAR;
while ( !TF2 ); TF2 = CLEAR;
TR2 = OFF;
}
//-----------------------------------------------------------------------------
// Uart1 Receive Byte Routine
//-----------------------------------------------------------------------------
char Uart1_Receive_Byte ( void )
{
char i, j, c, mask;
bit pick;
i = 0x14; j = 0xFF; pick = 1; c = 0; mask = 1;
do {
Clear_Dog;
do {
if ( Uart1_Rxd == LOW ) pick = 0;
} while ( --j && pick );
} while ( --i && pick );
TR2 = OFF; TF2 = CLEAR;
RCAP2L = 0xD0; RCAP2H = 0xFF;
TL2 = 0xD0; TH2 = 0xFF;
TR2 = ON;
// while ( !TF2 ); TF2 = CLEAR;
for ( i = 8; i > 0; i-- )
{
while ( !TF2 ); TF2 = CLEAR;
while ( !TF2 ); TF2 = CLEAR;
if ( Uart1_Rxd == HIGH ) c |= mask;
mask <<= 1;
}
while ( !TF2 ); TF2 = CLEAR;
// while ( !TF2 ); TF2 = CLEAR;
TR2 = OFF;
return c;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -