//作者;【周平DIY 开发】
//时间;2014年、5月;15日。
#include <reg51.h>
sbit OUT1 = P2 ^ 1;
sbit k1 = p3 ^ 2;
sbit k3 = p3 ^ 3;
void delay(unsigned int i); //声明延时函数
void delay(unsigned int i)
{
unsigned char j;
for(i; i > 0; i--)
for(j = 155; j > 0; j--);
}
main()
{
求高手解答; 我想要加两个控制按键进来不知怎么样实现它!!!
最终的效果就是;当两个按键没有任何动作时,
单片机就默认执行【第二段程序】。当按下按键K1时就执行【第一段程序】,松开后回到默认的程序 , 循环执行默认的程序。 当按下k3时执行【第三段程序】,松开回到默认的程序,循环执行默认的程序。 如能帮忙解答,小弟在此跪谢啦!!!
这是第一段【 OUT1 = 0 ; delay(1500); // 延时 超低频阶段!!!
OUT1 = 1 ; delay(1500); // 】
这是第二段,默认段也是初始段【 OUT1 = 0 ; delay(200); // 延时 中频阶段!!!
OUT1 = 1 ; delay(500); // 延时 】
第三段 【 OUT1 = 0 ; delay(120); // 延时 高频阶段!!!
OUT1 = 1 ; delay(350); // 延时
OUT1 = 1 ; delay(2500); // 延时 主频! }】
#define uchar unsigned char
#define uint unsigned int
/* 函数申明 -----------------------------------------------*/
void delay(uint i);
/* 变量定义 ----------------------------------------------*/
sbit OUT1 = P1 ^ 0;
sbit key1 = P3 ^ 2;
sbit key3= P3 ^ 3;
/*
********************************************************************************
** 函数名称 : main(void)
** 函数功能 : 主函数
********************************************************************************
*/
void main()
{
while(1) //无限扫描
{
if(key1==0)
{
delay(5); //消抖动
if(key1==0) //确认按键被按下
{
OUT1 = 0 ;
delay(1500); // 延时 超低频阶段!!!
OUT1 = 1 ;
delay(1500);
}
}
if(key3==0)
{
delay(5); //消抖动
if(key3==0) //确认按键被按下
{
OUT1 = 0 ;
delay(120); // 延时 高频阶段!!!
OUT1 = 1 ;
delay(350); // 延时
OUT1 = 1 ;
delay(2500); // 延时
}
}
if(key1==1&key3==1)
{
delay(5); //消抖动
if(key1==1&key3==1)
{
OUT1 = 0 ;
delay(200); // 延时 中频阶段!!!
OUT1 = 1 ;
delay(500); // 延时
}
}
delay(10);
}
}
/*
********************************************************************************
** 函数名称 : delay(uint i)
** 函数功能 : 延时函数
********************************************************************************
*/
void delay(uint i)
{
unsigned char j;
for(i; i > 0; i--)
for(j = 155; j > 0; j--);
}
最佳答案
uchar Key_Scan(void)
{
unsigned char ucValue = 0;
if(k1 == 0)
{
ucValue |= 0x01;
}
if(k3 == 0)
{
ucValue |= 0x02;
}
if(Key_Code != ucValue)
{
Key_Code = ucValue;
return 0;
}
return 1;
}
void Key_Function(void)
{
if(Key_Scan())
{
switch(Key_Code)
{
case 0:
//无按键程序
break;
case 0x01:
//按键1处理
break;
case 0x02:
//按键2处理
break;
}
}
delay(10);
}
高手谢谢您啊,感谢万飞感谢!!!!!!
一周热门 更多>