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

📄 marco.h

📁 51的IO口模拟UARTRS232 波特率9600 Fosc:22.1184MHz 已在keilc51调试通过
💻 H
字号:
/*
 *******************************************************************************
 * 文件名称: macro.H								*
 * 当前版本: 1.0V									*
 * 作    者: JACK.REN								*
 * 完成日期: March./20/2006							*
 *--------------------------------------------------*
 * 取代版本: 										*
 * 作    者: 										*
 * 完成日期: 										*
 *--------------------------------------------------*
 *******************************************************************************
 */

#include	"macro_id.H"
#include 	<reg51.H>
#include <intrins.h>



#define		Fosc1	11059200L
#define		Fosc2	22118400L
#define		Fosc	Fosc2

// isp监测端口
sbit		ISP_OK = P1^6;

/*定义模拟232串口通讯中接收发送引脚*/
//  实际使用端口
//sbit		A_RXD = P4^1;
//sbit		A_TXD = P4^3;
// 调试使用端口
sbit		A_RXD = P3^0;
sbit		A_TXD = P3^1;


#define		InitAUART232_IO()		A_RXD = A_TXD = 1;

//定时器timer0在不产生中断时,作为波特率的计数初值0
#define		InitT0_reg()		TR0 = 0; TL0 = TH0 = 0;

#if (Fosc == Fosc1)
	//9600bps 就是 1000000/9600=104.167微秒 执行的timer是104.167*11.0592/12= 96 
	//定时器timer0在不产生中断时,作为波特率的计数终值192
	#define		UART_baudrate		12 //(96/7)-1

#else
	//9600bps 就是 1000000/9600=104.167微秒 执行的timer是104.167*22.1184/12= 192 
	//定时器timer0在不产生中断时,作为波特率的计数终值192
	#define		UART_baudrate		24//default 192
#endif

#define		BaudrateDelay( Val )	while((Val)--);







//	定义IO端口模拟UART232接收状态标志位
bit			IO_UART_Get_FlagReg;
//	IO_UART_Get_FlagReg = 0模拟UART232接收正确;
//	IO_UART_Get_FlagReg = 0模拟UART232接收失败;
#define		IO_UART_Get_OK		0
#define		IO_UART_Get_Err		1
//	定义IO端口模拟UART232发送状态标志位
bit			IO_UART_Send_FlagReg;
//	IO_UART_Send_FlagReg = 0模拟UART232发送正确;
//	IO_UART_Send_FlagReg = 0模拟UART232发送失败;
#define		IO_UART_Send_OK		0
#define		IO_UART_Send_Err	1


//	宏定义对TIMER_0 进行初始化
//定时器1为工作模式2(8位自动重装),0为模式2(8位自动重装)
#define		T0_ModSet()	TMOD = 0x02;PCON = 0x00;
//#define		T0_ModSet()	TMOD %= 0xF0;TMOD |= 0x02;PCON = 0x00;

// 保护定时器timer 0
uint_8  xdata iTL0, iTH0,iTMOD,iPCON;
bit iTR0,iET0;
// 保护定时器timer 0现在状态
#define		PUSH_TIMER_0()	iTR0 = TR0;iET0 = ET0;iTMOD = TMOD,iPCON = PCON,TR0 = ET0 = 0;iTL0 = TL0;iTH0 = TH0;
// 恢复定时器timer 0进入函数时状态
#define		POP_TIMER_0()	TR0 = 0;TMOD = iTMOD,PCON = iPCON,TL0 = iTL0; TH0 = iTH0;TR0 = iTR0;ET0 = iET0;
// CPU Interrupt macros define
#define		En_CPU_ISR()		EA = 1
#define		Dis_CPU_ISR()		EA = 0

// Timer 0 macros define
#define		T0_INTFlag			F0
#define 	Enable_T0()			ET0 = 1
#define 	Disable_T0()		ER0 = 0
#define 	Start_T0()			TR0 = 1
#define 	Stop_T0()			TR0 = 0

// Timer 2 macros define
#define 	Enable_T2()			ET2 = 1
#define 	Disable_T2()		ER0 = 0
#define		Start_T2()			TR2 = 1
#define		Stop_T2()			TR2 = 0
#define		T1S					10
#define		T20S				160
#define		T30S				300
#define		T100S				2000//600
#define		T1F 				1
#define		T2F					2




#define		ErrorCode			255	//错误编码

#define		EventOK				1	// 事件准备完成



⌨️ 快捷键说明

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