?? 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 + -