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