JP165跳线帽断开、JP10连接J12(为了实现按键控制LED灯的效果)、JP5连接JP8、J21接左边
3.5.2 示例代码
下面代码都使用多文件编程模型,这里贴出每个文件的主要代码。
下面代码实现的效果是,按下按键控制LED灯。
Main.c文件:
int main()
{
u8 key;
LED=0; //关闭所有LED灯,51单片机默认输出高电平,LED默认高电平点亮
while(1)
{
key=Key_Scan();
if(key)
{
LED=~LED; //控制8盏灯
}
}
}
Key.h文件代码:
u8 Key_Scan(void);
sbit key1=KEY^0;
sbit key2=KEY^1;
sbit key3=KEY^2;
sbit key4=KEY^3;
sbit key5=KEY^4;
sbit key6=KEY^5;
sbit key7=KEY^6;
sbit key8=KEY^7;
Key.c文件代码:
#include "key.h"
/*
按键扫描函数
*/
u8 Key_Scan(void)
{
static u8 flag=0;
if((KEY!=0xFF)&&(flag==0)) //判断有没有按键按下
{
DelayMs(20); //消抖
flag=1; //标志按键已经被按下
if(key1==0)return 1;
if(key2==0)return 2;
if(key3==0)return 3;
if(key4==0)return 4;
if(key5==0)return 5;
if(key6==0)return 6;
if(key7==0)return 7;
if(key8==0)return 8;
}
else if(KEY==0xFF) //判断按键是否全部松开
{
flag=0; //清除按下标志位
}
return 0;
}
Led.h文件代码:
sbit LED1=P0^0;
sbit LED2=P0^1;
sbit LED3=P0^2;
sbit LED4=P0^3;
sbit LED5=P0^4;
sbit LED6=P0^5;
sbit LED7=P0^6;
sbit LED8=P0^7;
Type.h文件代码:
typedef unsigned char u8;
typedef unsigned short u16;
typedef unsigned int u32;