⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 7.2 led&key.c

📁 TI公司提供的I/O例程
💻 C
字号:
/***************************************************************************
** 功能描述: 按键记数程序,对S1的按键次数记数,以二进制显示在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;      //  按键次数
    InitSysCtrl();                 //  系统初始化程序,该子程序存放在DSP28_sysctrl.c中
 	DINT;                      //  关闭总中断
	IER = 0x0000;               //  关闭外设中断
	IFR = 0x0000;               //  清中断标志	
	IOinit();	                 // I/O初始化子程序	
	LedOut(keyNum);           // 16个LED都熄灭		
	while (1)
	{
 	    if (KeyIn()==1)      //  调用查键子程序
 	    {
 	    	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 + -