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

📄 hardware.h

📁 c51的各典型应用模块库
💻 H
字号:
/*********************************************************************
	微 雪 电 子   WaveShare   http://www.waveShare.net            	
		                                                        
目    的:    建立MCS51的硬件提取库,增加各类补丁,方便移植
	
目标系统:   基于任何兼容C51的微处理器
		                                                                
应用软件:   Keil C                                               
		                                                                
版    本:   Version 1.0                                                          
		                                                                
圆版时间:   2004-08-25
	
开发人员:   SEE

说    明:   若用于商业用途,请保留此段文字或注明代码来源
	
	深 圳 微 雪 电 子 保 留 所 有 的 版 权     
*********************************************************************/

/*01010101010101010101010101010101010101010101010101010101010101010101
----------------------------------------------------------------------
版本更新记录:
	版    本:   Version 1.1
	圆版时间:   2005-03-25

----------------------------------------------------------------------
入口参数说明:

----------------------------------------------------------------------
待定参数说明:

----------------------------------------------------------------------	
对外变量说明:

----------------------------------------------------------------------
对外函数说明:

----------------------------------------------------------------------
10101010101010101010101010101010101010101010101010101010101010101010*/

#ifndef Hardware_H
#define Hardware_H

#include <intrins.h>
#include <math.h>
#include <string.h>
#include <stdio.h>

/* hard configs */
#ifndef flash
	#define flash	code
#endif

//#ifndef const
	//#define const	code	//有待检验是否可以这么做
//#endif

#ifndef NOP
	#define NOP()   _nop_()
#endif

/* io configs */


/* interrupt configs */
#define DIS_INT  EA=0		//disable interrupt
#define EN_INT   EA=1		//enable interrupt

/* WDT configs */
sfr WDTRST = 0xA6;			//AT89S51的WDT操作补丁

/*--------------------------------------------------------------------
  宏名称:timer1的计数方式初始化
  宏功能:
注意事项:EA=1才能使初始化有效
提示说明:
输    入:
返    回:
--------------------------------------------------------------------*/
//#define SET_T1_COUNTER_MODE
/*--------------------------------------------------------------------
  宏名称:timer0的计数方式初始化
  宏功能:
注意事项:EA=1才能使初始化有效
提示说明:
输    入:
返    回:
--------------------------------------------------------------------*/
//#define SET_T0_COUNTER_MODE
/*--------------------------------------------------------------------
  宏名称:EX1的低电平初始化
  宏功能:
注意事项:EA=1才能使初始化有效
提示说明:无
输    入:
返    回:
--------------------------------------------------------------------*/
//#define SET_EX1_LOW_MODE	{EX1=1; IT1=0; //EA=1;}
/*--------------------------------------------------------------------
  宏名称:EX1的下降延初始化
  宏功能:
注意事项:EA=1才能使初始化有效
提示说明:无
输    入:
返    回:
--------------------------------------------------------------------*/
//#define SET_EX1_FALL_MODE	{EX1=1; IT1=1; //EA=1;}
/*--------------------------------------------------------------------
  宏名称:EX0的低电平初始化
  宏功能:
注意事项:EA=1才能使初始化有效
提示说明:无
输    入:
返    回:
--------------------------------------------------------------------*/
//#define SET_EX0_LOW_MODE	{EX0=1; IT0=0; //EA=1;}
/*--------------------------------------------------------------------
  宏名称:EX0的低电平初始化
  宏功能:
注意事项:EA=1才能使初始化有效
提示说明:无
输    入:
返    回:
--------------------------------------------------------------------*/
//#define SET_EX0_FALL_MODE	{EX0=1; IT0=1; //EA=1;}
/*--------------------------------------------------------------------
函数名称:T1的10ms级初始化
函数功能:
注意事项:基于1MIPS,AT89S/AT89C系列对应12M晶振,AT89LP系列对应1M晶振
         n_10ms<=6,所以该函数的最大初始化时间为60ms
         EA=1才能使初始化有效
提示说明:调用T1_init10ms(5),得到timer1的50ms初始化
输    入:
返    回:
--------------------------------------------------------------------*/
//uint16 gT1Value;
//uint8 gTH1,gTL1;
//void T1_init10ms(uint8 n_10ms)
//{
//	gT1Value=65536-n_10ms*10000;   
//	gTH1=gT1Value>>8;   	//gTH1=gT1Value/256;
//	//gTH1&=0x00ff			//can omit here
//	gTL1=gT1Value&0x00ff;   //gTL1=gT1Value%256;
//	TMOD|=0x10;
//	TH1=gTH1;
//	TL1=gTL1;
//	ET1=1;
//	TR1=1;
//	//EA=1;			
//}
/*--------------------------------------------------------------------
函数名称:T1的10us级初始化
函数功能:
注意事项:基于1MIPS,AT89S/AT89C系列对应12M晶振,AT89LP系列对应1M晶振
	     n_10us<=25,所以该函数的最大初始化时间为250us
	     EA=1才能使初始化有效
提示说明:调用T1_init10us(5),得到timer1的50us初始化
输    入:
返    回:
--------------------------------------------------------------------*/
//void T1_init10us(uint8 n_10us)
//{
//	gTH1=256-n_10us*10;   	
//	gTL1=256-n_10us*10;   	
//	TMOD|=0x20;				//timer1工作于方式2:自动重装初值
//	TH1=gTH1;    
//	TL1=gTL1; 
//	ET1=1;    
//	TR1=1;
//	//EA=1;			
//}
/*--------------------------------------------------------------------
函数名称:T0的10ms级初始化
函数功能:
注意事项:基于1MIPS,AT89S/AT89C系列对应12M晶振,AT89LP系列对应1M晶振
	     n_10ms<=6,所以该函数的最大初始化时间为60ms
	     EA=1才能使初始化有效
提示说明:调用T0_init10ms(5),得到timer0的50ms初始化
输    入:
返    回:
--------------------------------------------------------------------*/
//uint16 gT0Value;
//uint8 gTH0,gTL0; 
//void T0_init10ms(uint8 n_10ms)
//{
//	gT0Value=65536-n_10ms*10000;
//	gTH1=gT0Value>>8;   	//gTH1=gT0Value/256;
//	//gTH1&=0x00ff			//can omit here
//	gTL0=gT0Value&0x00ff;   //gTL0=gT0Value%256;
//	TMOD|=0x01;
//	TH0=gTH0;
//	TL0=gTL0;
//	ET0=1;	
//	TR0=1;
//	//EA=1;
//}
/*--------------------------------------------------------------------
函数名称:T0的10us级初始化
函数功能:
注意事项:基于1MIPS,AT89S/AT89C系列对应12M晶振,AT89LP系列对应1M晶振
	     n_10us<=25,所以该函数的最大初始化时间为250us
	     EA=1才能使初始化有效
提示说明:调用T0_init10us(5),得到timer0的50us初始化
输    入:
返    回:
--------------------------------------------------------------------*/
//void T0_init10us(uint8 n_10us)
//{
//	gTH1=256-n_10us*10;    
//	gTL0=256-n_10us*10;    
//	TMOD|=0x02;   			//timer0工作于方式2:自动重装初值
//	TH0=gTH0;     						
//	TL0=gTL0; 
//	ET0=1;    
//	TR0=1;  
//	//EA=1;          
//}
/*--------------------------------------------------------------------
  宏名称:UART波特率初始化
  宏功能:
注意事项:基于1MIPS,AT89S/AT89C系列对应11.0592M晶振
		 占用T1
	     EA=1才能使初始化有效
提示说明:无
输    入:
返    回:
--------------------------------------------------------------------*/
/* UART工作方式:1位起始位、1位停止位,8位数据位; T1工作方式:自动重装初值 */
//#define SET_UART_MODE1	{SCON=0x50; TMOD|=0x20; ES=1; TR1=1; //EA=1;} 
//#define SET_BAUD19200		{TH1=0xfd; TL1=0xfd; PCON|=0x80;} 
//#define SET_BAUD9600		{TH1=0xfd; TL1=0xfd;} 
//#define SET_BAUD4800		{TH1=0xfa; TL1=0xfa;} 
//#define SET_BAUD2400		{TH1=0xf4; TL1=0xf4;} 
//#define SET_BAUD1200		{TH1=0xe8; TL1=0xe8;} 
//#define EN_UART_SOFT_TX
//#define EN_UART_HARD_TX
//#define EN_UART_SOFT_RX
//#define EN_UART_HARD_RX
/*--------------------------------------------------------------------
  宏名称:初始化狗~喂狗~
  宏功能:初始化WDT、喂WDT
注意事项:首次调用"FEED_WDT"将初始化WDT,首次调用"FEED_WDT"将喂WDT
提示说明:基于1MIPS,AT89S/AT89C系列外挂12M晶振,则喂狗间隔时间不得超过16ms
输    入:无
返    回:
--------------------------------------------------------------------*/
//#define FEED_WDT {WDTRST=0x1E; WDTRST=0xE1;}	
/*--------------------------------------------------------------------
函数全称:50us 延时
函数功能:当然是 50ms延时 啦
注意事项:基于1MIPS,AT89S系列对应12M晶振,W77、W78系列对应3M晶振
提示说明:调用delay50us(20),得到1ms延时
输    入:	
返    回:
--------------------------------------------------------------------*/
void delay50us(sint16 t)
{
    sint8 j;		
    for(;t>0;t--)
        for(j=19;j>0;j--)
            ;
}
/*--------------------------------------------------------------------
函数全称:50ms 延时
函数功能:当然是 50ms延时 啦
注意事项:基于1MIPS,AT89S系列对应12M晶振,W77、W78系列对应3M晶振
提示说明:调用delay50ms(20),得到1s延时
输    入:
返    回:
--------------------------------------------------------------------*/
void delay50ms(sint16 t)
{
    sint16 j;   
    for(;t>0;t--)	
        for(j=6245;j>0;j--)
            ;
}

#endif

⌨️ 快捷键说明

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