独立按键控制Led
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include
#include
//--定义要使用的IO口--//
//#define GPIO_KEY P0 //独立键盘用P1口
//#define GPIO_LED P2 //led使用P0口
//--声明全局函数--//
void Delay10ms(unsigned int c); //延时10ms
unsigned char Key_Scan();
/*******************************************************************************
* 函 数 名 : main
* 函数功能 : 主函数
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void main(void)
{ unsigned char ledture,ledkey;
ledture=0x00;
while(1)
{
ledkey=Key_Scan();
switch(ledkey)
{ case(0x01):ledture=0x01;break;
case(0x02):ledture=0x02;break;
case(0x04):ledture=0x04;break;
case(0x08):ledture=0x08;break;
case(0x10):ledture=0x10;break;
case(0x20):ledture=0x20;break;
case(0x40):ledture=0x40;break;
case(0x80):ledture=0x80;break;
default:break;
}
P2=ledture;
}
}
/*******************************************************************************
* 函 数 名 : Key_Scan()
* 函数功能 : 扫描键盘
* 输 入 : 无
* 输 出 : 读取到的键值
*******************************************************************************/
unsigned char Key_Scan()
{unsigned char led1,i;
if(P0!=0x00)
{
Delay10ms(10);
if(P0!=0x00)
{led1=P0;
i=0;
while((i<50)&&(P0!=0x00))
{i++;
}
}
}
return led1;
}
/*******************************************************************************
* 函 数 名 : Delay10ms
* 函数功能 : 延时函数,延时10ms
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void Delay10ms(unsigned int c) //误差 0us
{
unsigned char a, b;
//--c已经在传递过来的时候已经赋值了,所以在for语句第一句就不用赋值了--//
for (;c>0;c--)
{
for (b=38;b>0;b--)
{
for (a=130;a>0;a--);
}
}
}