?? es51_ii_lib.h
字號:
/* ES51-II 函數庫 */
#ifndef __ES51_II_LIB_H__
#define __ES51_II_LIB_H__
/*--------------------------------------------------------------------------
// EasyStudy51-II 庫函數
// 編寫: wolfe
// 版本: V1.0 2008.10
// 修改:
--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------
全局變量
--------------------------------------------------------------------------*/
// 數碼管顯示緩沖區;可直接操作此緩沖區控制數碼管顯示
extern unsigned char SMG_BUFF[4];
// 不帶小數點的數碼管段碼表[0~F]
extern unsigned char code SMG_TABLE[16];
// 帶小數點的數碼管段碼表[0~F]
extern unsigned char code SMG_TABLE_DP[16];
// 此變量是在INT1中斷中所讀取的鍵值;
// 此變量只包含KEY1~KEY4的鍵值,并不包含INT0和COUNT鍵
extern unsigned char KeyVal;
// 字符串發送完畢標志
// 在調用PutStr()函數前查詢前一字符串是否發送完畢
extern bit bTxDone;
// 字符串接收完畢標志位
// 在調用GetStr()函數后查詢此變量,可判斷字符串接收是否完成
extern bit bRxDone;
/*--------------------------------------------------------------------------
軟件延時函數
--------------------------------------------------------------------------*/
// 延時nms函數,軟件延時
void DelayMS(unsigned int ms);
// 延時S函數,軟件延時
void DelayS(unsigned char secs);
// 匯編實現的軟件延時函數
void ES51_DELAY1MS(void);
// 匯編實現的軟件延時函數
void ES51_DELAY500MS(void);
/*--------------------------------------------------------------------------
LED控制函數
--------------------------------------------------------------------------*/
// 跑馬燈占用了T0
// 若T0有其他用途,則不能調用跑馬燈程序
// 或者你可以在不同時刻分配T0為何種功能,這樣可以解決資源占用的問題;
// 流水燈樣式宏定義
#define LEDALLLOOP 0 // 全亮->全滅
#define LEDRIGHTLOOP 1 // 自右向左
#define LEDLEFTLOOP 2 // 自左向右
#define LEDMIDDLELOOP 3 // 中間散開->向中間靠攏
// 用定時器實現流水燈
// type: 跑馬燈樣式
// delay100ms: 跑馬燈延時長短,100毫秒單位
void LoopLEDON(unsigned char type,unsigned char delay100ms);
// 關閉跑馬燈;
// 禁止T0中斷,停止T0
void LoopLEDOFF(void);
// 根據索引值index點亮LED,不改變其他LED狀態
// index: 范圍1~8
void TurnOnLED(unsigned char index);
// 根據索引值index熄滅LED,比改變其他LED狀態
// index: 范圍1~8
void TurnOffLED(unsigned char index);
/*--------------------------------------------------------------------------
蜂鳴器控制函數
--------------------------------------------------------------------------*/
// 蜂鳴器發聲控制函數
// delayms_on/delayms_off:發聲/不發聲延時長短,以ms為單位
// 發聲長短通過延時實現,
void CtrlBuzzer(unsigned int delayms_on,unsigned int delayms_off);
// 蜂鳴器控制函數
// long_nub: 長聲次數
// short_nub: 短聲次數
// 此函數調用CtrlBuzzer()函數實現;
void Buzzer(unsigned char long_nub,unsigned char short_nub);
/*--------------------------------------------------------------------------
數碼管控制函數
--------------------------------------------------------------------------*/
// 數碼管動態掃描,占用了T1
// 若T1有其他用途(如撥特率發生器),則不能使用以下函數,
// 對于撥特率發生器也可以用T2;
// 打開數碼管顯示
// 啟動T1定時,允許T1溢出中斷
void SMGDisplayON(void);
// 關閉數碼管顯示
// 關閉T12定時,禁止T1溢出中斷
void SMGDisplayOFF(void);
// 數碼管顯示函數
// ::::::注意,所有參數必須是無符號數.
// 如在數碼管顯示十進制數: SMGprintf("%u",變量); 變量類型為:unsigned int
// 若在數碼管顯示十六進制數: SMGprintf("%x",變量); 變量類型為:unsigned int
// 若在數碼管顯示浮點數: SMGprintf("%f",變量); 變量類型為:float
// 若不指定小數后幾位,則只顯示1位小數;
// 若指定小數點,則必須確保位數不大于6位(小數點也算);
// 若在數碼管顯示字符串: SMGprintf("%s","12df"); 其中字符串只能為0~F,對于A-F不區分大小寫
int SMGprintf(const char *fmstr, ...);
// 寫數碼管顯示緩沖區,ASCII碼,只允許寫0~9;
// index: 修改緩沖區的起始地址,范圍1~4;
// length: 修改的長度,范圍1~4,根據索引值不同,取值范圍不同;
// dp: 顯示是否帶小數點,0:不帶小數點顯示;1:帶小數點顯示;
// *dat: 為數據的首地址;
void SMGBuffWrite(unsigned char index,unsigned char length,bit dp,unsigned char *dat);
/*--------------------------------------------------------------------------
按鍵處理函數
--------------------------------------------------------------------------*/
// 外部中斷0初始化程序,外部單獨接一鍵
// 初始化為下降沿觸發并允許INT0中斷
// 庫中沒有包含INT0中斷函數,需用戶編寫
void INT0_Init_KeyINT0(void);
// 外部中斷1初始化程序,KEY1~KEY4共享
// 初始化為下降沿觸發并允許INT0中斷
// 調用此函數后,用戶可查詢變量keyVal來獲得鍵值
// ::::KeyVal僅包含了KEY1~KEY4,并不包含INT0鍵和COUNT鍵
// ::::在中斷函數中已經消抖.
void INT1_Init_KeyShare(void);
// 以下鍵值是包括INTO鍵和COUNT鍵的鍵值
// 調用函數GetKeyVal()返回鍵值
// 若無鍵按下,返回VAL_KEYNULL;
#define VAL_KEY1 0x3e
#define VAL_KEY2 0x3d
#define VAL_KEY3 0x3b
#define VAL_KEY4 0x37
#define VAL_KEYINT0 0x1f
#define VAL_KEYCOUNT 0x2f
#define VAL_KEYNULL 0x3f
// 查詢讀取鍵值函數
// 此返回的鍵值包含了INT0和COUNT按鍵,各個返回的鍵值的含義如上.
unsigned char GetKeyVal(void);
/*--------------------------------------------------------------------------
串行口操作函數
--------------------------------------------------------------------------*/
// 串行口初始化程序,T2,2400bps
void InitSerialPort(void);
// 中斷方式接收字符串,以回車符['\r']結束接收;
// 在調用此函數前,應確保所接收字符串不會導致緩沖區溢出;
void GetStr_(char *pbuff );
// 中斷方式發送字符串,以字符串結尾標志停止發送
// 在調用此函數前需判斷前一字符串是否發送完畢;
// 在前一字符串未發送完畢的情況下調用此函數將引起放棄發送前一字符串,轉而發送新的字符串;
void PutStr_( char *pstr );
// 中斷方式接收數據
void GetData_(unsigned char length,char *pbuff);
// 中斷方式發送一組數據
void PutData_(unsigned char length,char *pbuff);
// keil提供的庫函數也可以實現以下四個函數的功能,并且功能比以下的函數強大
//
// 查詢方式接收一字節數據數據
void PutChar( char txd);
// 查詢方式接收一字節數據
char GetChar(void);
// 查詢方式輸出字符串
void PutStr(char *pstr);
// 查詢方式接收字符串
void GetStr(char *pbuff);
/*--------------------------------------------------------------------------
IIC總線操作函數
--------------------------------------------------------------------------*/
// 操作結束
void I2c_Stop(void);
// 操作起始
void I2c_Start(void);
// IIC總線寫一字節數據
void I2c_WrByte(unsigned char dat);
// IIC總線讀一字節數據
unsigned char I2c_RdByte(void);
/*--------------------------------------------------------------------------
24CXX讀寫函數
--------------------------------------------------------------------------*/
// 24Cxx讀一字節數據
// slave: 器件從地址
// addr: 片內字節地址
unsigned char EEPROM_RdOneByte(unsigned char slave,unsigned char addr);
// 24Cxx寫一字節數據
// slave: 器件從地址
// addr: 片內字節地址
// dat: 需寫到器件某地址的值
void EEPROM_WrOneByte(unsigned char slave,unsigned char addr,unsigned char dat);
#endif //__ES51_II_LIB_H__
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -