?? main.c
字號:
//======================================================================
// The information contained herein is the exclusive property of
// Sunnnorth Technology Co. And shall not be distributed, reproduced,
// or disclosed in whole in part without prior written permission.
// (C) COPYRIGHT 2003 SUNNORTH TECHNOLOGY CO.
// ALL RIGHTS RESERVED
// The entire notice above must be reproduced on all authorized copies.
//======================================================================
//======================================================================
// 工程名稱: ex06_c_IOA_IN_IOB_OUT
// 功能描述: 《實(shí)驗(yàn)儀實(shí)驗(yàn)指導(dǎo)書》基礎(chǔ)應(yīng)用實(shí)驗(yàn)
// 使用C語言實(shí)現(xiàn)A口作為輸入口、B口作為輸出口
// 通過點(diǎn)亮不同發(fā)光二極管來顯示IOA口輸入鍵盤值
// IDE環(huán)境: SUNPLUS u'nSPTM IDE 2.0.0(or later)
// 涉及的庫: CMacro1016.lib
// 組成文件: main.c
// 硬件連接: 接KEYPAD接口的IOA7~0分別與COL1~8連接,IOA8與ROW連接;
// IOB15~8連接LED_SEG接口的a~h;
// LED_DIG接口的IOB6連接DIG5
// 維護(hù)記錄: 2005-09-12 v1.0
//
//======================================================================
//======================================================================
// 文件名稱: main.c
// 功能描述: 通過點(diǎn)亮不同發(fā)光二極管來顯示IOA口輸入鍵盤值
// 維護(hù)記錄: 2005-09-12 v1.0
//======================================================================
#define P_IOA_Data (volatile unsigned int *)0x7000
#define P_IOA_Buffer (volatile unsigned int *)0x7001
#define P_IOA_Dir (volatile unsigned int *)0x7002
#define P_IOA_Attrib (volatile unsigned int *)0x7003
#define P_IOB_Data (volatile unsigned int *)0x7005
#define P_IOB_Dir (volatile unsigned int *)0x7007
#define P_IOB_Attrib (volatile unsigned int *)0x7008
#define P_Watchdog_Clear (volatile unsigned int *)0x7012
unsigned int KeyScan(void); //鍵盤掃描函數(shù)
void Delay(void); //延時(shí)函數(shù)
//=====================================================================
// 語法格式: int main(void)
// 實(shí)現(xiàn)功能: 通過點(diǎn)亮不同發(fā)光二極管來顯示IOA口輸入鍵盤值
// 參數(shù): 無
// 返回值: 無
//=====================================================================
int main(void)
{
unsigned int uiKey; //定義保存鍵值變量
*P_IOA_Dir = 0x0100; //初始化IOA0~7為下拉輸入,IOA8輸出高
*P_IOA_Attrib = 0x0100;
*P_IOA_Data = 0x0100;
*P_IOB_Dir = 0xff40; //初始化IOB8~15為低電平輸出,IOB6輸出高
*P_IOB_Attrib = 0xff40;
*P_IOB_Data = 0x0040;
while(1)
{
uiKey = KeyScan(); //取鍵值
if(uiKey != 0) //判斷鍵值是否為0
{
uiKey = uiKey << 8; //鍵值左移8位,利用IOB高8位輸出
uiKey = uiKey | 0x0040; //IOB6輸出高電平
*P_IOB_Data = uiKey; //輸出鍵值到B口,控制點(diǎn)亮相應(yīng)的發(fā)光二極管
}
*P_Watchdog_Clear = 0x0001; //清看門狗
}
}
//========================================================
// 語法格式: unsigned int KeyScan(void)
// 實(shí)現(xiàn)功能: 獲得鍵盤值并返回
// 參數(shù): 無
// 返回值: 鍵盤值
//========================================================
unsigned int KeyScan(void)
{
unsigned int uiData;
unsigned int uiTemp;
uiData = *P_IOA_Data; //讀取IOA端口輸入
uiData = uiData&0x00ff; //僅取低八位有效值
if(uiData!=0) //非零則表示有鍵按下
{
Delay(); //延時(shí)消抖
uiTemp = *P_IOA_Data;
uiTemp = uiTemp&0x00ff; //僅取低八位有效值
if(uiData != uiTemp)
uiData = 0; //兩次讀數(shù)不相等,則置返回值為0
}
return uiData; //返回鍵值
}
//========================================================
// 語法格式: void Delay(void)
// 實(shí)現(xiàn)功能: 延時(shí)
// 參數(shù): 無
// 返回值: 無
//========================================================
void Delay(void)
{
unsigned int uiCount;
for(uiCount = 0;uiCount <= 3000;uiCount++)
{
*P_Watchdog_Clear = 0x0001; //清看門狗
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -