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

📄 2808gpio_key.c

📁 2808程序
💻 C
字号:
#include "DSP280x_device.h"
unsigned long int i=0;
void IOinit(void);
void LedOut(Uint32 led);
int KeyIn(void);

void main(void)
{
    Uint32 keyNum;          //= 0x0000;      //  按键次数
    
     keyNum = 0x00000002; 
    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;
                       //  将GPIO32~GPIO34配置为一般I/O端口输出,作138译码地址选择信号
 	GpioCtrlRegs.GPBMUX1.bit.GPIO32 = 0;  // GPIO34 = GPIO34
    GpioCtrlRegs.GPBDIR.bit.GPIO32 = 1;   // GPIO34 = output 
	GpioCtrlRegs.GPBMUX1.bit.GPIO33 = 0;  // GPIO34 = GPIO34
    GpioCtrlRegs.GPBDIR.bit.GPIO33 = 1;   // GPIO34 = output 
	GpioCtrlRegs.GPBMUX1.bit.GPIO34 = 0;  // GPIO34 = GPIO34
    GpioCtrlRegs.GPBDIR.bit.GPIO34 = 1;   // GPIO34 = output 
                      //  将GPIO12~GPIO19配置为一般I/O端口,D0~D7
	GpioCtrlRegs.GPAMUX1.all=0x00000000;
	GpioCtrlRegs.GPADIR.all=0xffffffff;
	GpioDataRegs.GPADAT.all=0x00000000;     
	EDIS;   
}
int KeyIn(void)                                             //  查键子程序
{
    Uint32 key;
 	EALLOW;  
	GpioCtrlRegs.GPADIR.all=0xfff00fff;//  将GPIO12~GPIO19配置为输入,D0~D7
    EDIS; 
       GpioDataRegs.GPBDAT.all=0x00000001;                      //  选通键盘KEYC
   
    for (i=0; i<100; i++){}                                  //  延时// 判S1是否按下
    key=GpioDataRegs.GPADAT.all|0xfff00fff;
    if (key==0xffffefff)

    {GpioDataRegs.GPADAT.all==GpioDataRegs.GPADAT.all|0xffffefff;
    	for (i=0; i<100;i++){}                              //  延时消抖动
       	key=GpioDataRegs.GPADAT.all|0xfff00fff;
        if (key==0xffffefff)
        {
    		while ((GpioDataRegs.GPADAT.all|0xffffffff)==0xffffefff)   //  判S1是否送开
    		{
    			GpioDataRegs.GPADAT.bit.GPIO12 =!GpioDataRegs.GPADAT.bit.GPIO12;
    		for (i=0;i<1000;i++){}     
    		}
    		return (1);		      
    	  }
    }
    return (0);
}
void LedOut(Uint32 led)
{
 	EALLOW;  
                                               // 将GPIOB8~GPIOB15配置为输出,D0~D7
    	GpioCtrlRegs.GPADIR.bit.GPIO12 = 1;   // GPIO34 = output  
        GpioCtrlRegs.GPADIR.bit.GPIO13 = 1;   // GPIO34 = output 
        GpioCtrlRegs.GPADIR.bit.GPIO14 = 1;   // GPIO34 = output 
        GpioCtrlRegs.GPADIR.bit.GPIO15 = 1;   // GPIO34 = output 
        GpioCtrlRegs.GPADIR.bit.GPIO16 = 1;   // GPIO34 = output 
        GpioCtrlRegs.GPADIR.bit.GPIO17 = 1;   // GPIO34 = output 
        GpioCtrlRegs.GPADIR.bit.GPIO18 = 1;   // GPIO34 = output 
        GpioCtrlRegs.GPADIR.bit.GPIO19 = 1;   // GPIO34 = output
	EDIS;	
    GpioDataRegs.GPBDAT.all = 0x00000006;  //12~19 
	GpioDataRegs.GPBDAT.all = 0x00000006;            // 
	led=led<<12;
	GpioDataRegs.GPADAT.all =-led;
	for (i=0;i<100;i++){}               //  延时
    GpioDataRegs.GPBDAT.all = 0x00000001;     //  锁存高8位
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -