main.c
来自「F2812实现电机控制源程序.rar」· C语言 代码 · 共 115 行
C
115 行
/*********************************************************************
** Module Name: Key **
** Author: Cbq **
** Version: 1.0 **
** CreateDate: 2009-03-15 **
** Description: **
** Remark: Huozq **
** Revision History: 2008-11-10 **
**********************************************************************/
/*********************************************************************
** 实验目的:通过学习本实验来掌握按键的处理 **
** 实验说明:通过读取按键端口的数值,来判断哪个按键按下,K1~K8按下 **
** 分别对应数据1,2,4,8,16,32,64,128 **
** 实验结果:将按下的键码通过数码管显示出来 **
**********************************************************************/
#include "DSP28_Device.h"
void WriteLED(unsigned char data);
void delay(unsigned long t);
Uint16 GetKey(void);
unsigned int * SPI_CS = (unsigned int *) 0x4500;
unsigned int * KeyReg = (unsigned int *) 0x4800;
unsigned long int a;
Uint16 SpiCode[]={0xFFFF,0x7E7E,0x2929,0x2c2c,0x6666,0xa4a4,0xa0a0,0x3e3e,0x2020};
void main(void)
{ unsigned int i,k;
/*初始化系统*/
InitSysCtrl();
/* 关中断 */
DINT;
IER = 0x0000;
IFR = 0x0000;
/* 初始化PIE控制寄存器 */
InitPieCtrl();
/* 初始化PIE参数表 */
InitPieVectTable();
/* 初始化外设寄存器 */
InitPeripherals();
///初始化IO口
InitGpio();
///初始化SPI
InitSpi();
/*设置CPU*/
EINT; // Enable Global interrupt INTM
ERTM; // Enable Global realtime interrupt DBGM
*SPI_CS=0x00;
for(;;)
{
k=GetKey(); //读取键值
i=0;
while(k!=0)
{
k=k>>1;
i++;
} //转换为键码,1~8分别对应1,2,4,8,16,32,64,128
WriteLED(SpiCode[i]); //将所获得的键码显示在数码管上
delay(1000);
}
}
void WriteLED(unsigned char data)
{
if(Spi_TxReady() == 1)
SpiaRegs.SPITXBUF = data;
while( Spi_TxReady()!=1);
delay(1000);
*SPI_CS=0x01;
*SPI_CS=0x00;
}
void delay(unsigned long t)
{
while(t>0)
t--;
}
unsigned int GetKey(void)
{
unsigned int temp,temp1;
temp = *KeyReg;
temp = temp & 0xff;
delay(100);
temp1 = *KeyReg;
temp1 = temp1 & 0xff; //去抖动
if(temp1==temp)
return(~temp & 0xff); //这里取反是为了观察方便
else
return 0xff;
}
//===========================================================================
// No more.
//===========================================================================
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?