1. TQ2440按键接口电路
K1 -- EINT1 -- GPF1
K2 -- EINT4 -- GPF4
K3 -- EINT2 -- GPF2
K4 -- EINT0 -- GPF0
2. 按键参考代码
按键,则对应的led灯亮,松开则灭。
在流水灯程序基础上,修改Main.c,增加key.c , key.h
key.c
#include "2440addr.h"
#include "key.h"
void Key_Init(void)
{
rGPFCON &= ~((3<<2)|(3<<8)|(3<<4)|(3<<0));
rGPFCON |= KEY1|KEY2|KEY3|KEY4; //输入模式
rGPFDAT |= (1<<1)|(1<<4)|(1<<2)|(1<<0); //初始为高电平
}
int Key_Scan(void)
{
int keynum = 0;
if((rGPFDAT & (1<<1)) == 0)
{
keynum = 1;
}
if((rGPFDAT & (1<<4)) == 0)
{
keynum = 2;
}
if((rGPFDAT & (1<<2)) == 0)
{
keynum = 3;
}
if((rGPFDAT & (1<<0)) == 0)
{
keynum = 4;
}
return keynum;
}
key.h
#ifndef __KEY_H__
#define __KEY_H__
#define KEY1 (0<<2)
#define KEY2 (0<<8)
#define KEY3 (0<<4)
#define KEY4 (0<<2)
extern void Key_Init(void);
extern int Key_Scan(void);
#endif
Main.c
#include "led.h"
#include "common.h"
#include "key.h"
int Main()
{
Led_Init();
Key_Init();
while(1)
{
switch(Key_Scan())
{
case 1:
LED01_ON;
break;
case 2:
LED02_ON;
break;
case 3:
LED03_ON;
break;
case 4:
LED04_ON;
break;
default:
LED01_OFF;
LED02_OFF;
LED03_OFF;
LED04_OFF;
break;
}
}
}
完整的按键代码:点击打开链接
3. 蜂鸣器接口电路
TOUT0 -- GPB0 , 高电平 beep响
4.蜂鸣器参考代码
在以上代码基础上增加beep.c ,beep.h,修改Main.c,按键1按下时蜂鸣器响。
beep.c
#include "2440addr.h"
void Beep_Init(void)
{
rGPBCON &= ~(3<<0);
rGPBCON |= (1<<0);
rGPBUP &= ~(1<<0);
rGPBDAT &= ~(1<<0);
}
beep.h
#ifndef __BEEP_H__
#define __BEEP_H__
#define Beep_On() {rGPBDAT |= 1<<0;}
#define Beep_Off() {rGPBDAT &= ~(1<<0);}
extern void Beep_Init(void);
#endif
Main.c
#include "led.h"
#include "common.h"
#include "key.h"
#include "beep.h"
int Main()
{
Led_Init();
Key_Init();
Beep_Init();
while(1)
{
switch(Key_Scan())
{
case 1:
LED01_ON;
Beep_On();
break;
case 2:
LED02_ON;
break;
case 3:
LED03_ON;
break;
case 4:
LED04_ON;
break;
default:
LED01_OFF;
LED02_OFF;
LED03_OFF;
LED04_OFF;
Beep_Off();
break;
}
}
}
完整的按键代码:
点击打开链接