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

📄 uart1.c

📁 智能水表程序 来着互联网
💻 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 + -