?? 7.2 led&key.c
字號:
/***************************************************************************
** 功能描述: 按鍵記數(shù)程序,對S1的按鍵次數(shù)記數(shù),以二進制顯示在16個LED上**
***************************************************************************/
#include "DSP28_Device.h"
unsigned long int i = 0;
void IOinit(void);
void LedOut(Uint16 led);
int KeyIn(void);
void main(void)
{
Uint16 keyNum = 0x0000; // 按鍵次數(shù)
InitSysCtrl(); // 系統(tǒng)初始化程序,該子程序存放在DSP28_sysctrl.c中
DINT; // 關(guān)閉總中斷
IER = 0x0000; // 關(guān)閉外設(shè)中斷
IFR = 0x0000; // 清中斷標志
IOinit(); // I/O初始化子程序
LedOut(keyNum); // 16個LED都熄滅
while (1)
{
if (KeyIn()==1) // 調(diào)用查鍵子程序
{
keyNum = keyNum + 1;
LedOut(keyNum);
}
}
}
void IOinit(void)
{
EALLOW;
// 將GPIOE0~GPIOE2配置為一般I/O端口輸出,作138譯碼地址選擇信號
GpioMuxRegs.GPEMUX.all = GpioMuxRegs.GPEMUX.all&0xfff8;
GpioMuxRegs.GPEDIR.all = GpioMuxRegs.GPEDIR.all|0x0007;
// 將GPIOB8~GPIOB15配置為一般I/O端口,D0~D7
GpioMuxRegs.GPBMUX.all = GpioMuxRegs.GPBMUX.all&0x00ff;
EDIS;
}
int KeyIn(void) // 查鍵子程序
{
EALLOW;
// 將GPIOB8~GPIOB15配置為輸入,D0~D7
GpioMuxRegs.GPBDIR.all = GpioMuxRegs.GPBDIR.all&0x00ff;
EDIS;
GpioDataRegs.GPEDAT.all = 0xfff8; // 選通鍵盤低8位
for (i=0; i<100; i++){} // 延時
// 判S1是否按下
if ((GpioDataRegs.GPBDAT.all|0x00ff)==0xfeff)
{
for (i=0; i<100000;i++){} // 延時消抖動
if ((GpioDataRegs.GPBDAT.all|0x00ff)==0xfeff)
{
while ((GpioDataRegs.GPBDAT.all|0x00ff)==0xfeff) // 判S1是否送開
{
GpioDataRegs.GPDDAT.bit.GPIOD1 = !GpioDataRegs.GPDDAT.bit.GPIOD1;
for (i=0;i<1000;i++){}
}
return (1);
}
}
return (0);
}
void LedOut(Uint16 led)
{
EALLOW;
// 將GPIOB8~GPIOB15配置為輸出,D0~D7
GpioMuxRegs.GPBDIR.all = GpioMuxRegs.GPBDIR.all|0xff00;
EDIS;
GpioDataRegs.GPEDAT.all = 0xfffb; // LEDB清零
GpioDataRegs.GPBDAT.all =-led;
for (i=0;i<100;i++){} // 延時
GpioDataRegs.GPEDAT.all = 0xffff; // 鎖存高8位
GpioDataRegs.GPEDAT.all = 0xfffa; // LEDA清零
GpioDataRegs.GPBDAT.all =- (led<<8);
for (i=0; i<100; i++){}
GpioDataRegs.GPEDAT.all = 0xffff; // 鎖存低8位
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -