求解读51单片机用四个按键独立控制四个led的c程序

求解读51单片机用四个按键独立控制四个led的c程序,第1张

#include<reg51.h>

//k2~k4 分别控制le1~le4 

void delay(unsigned int x) //延时函数

{

  while(x--)  //延时数减一

}

 void key_event (unsigned char d) //根据扫描到的键值,亮相应的LED

 {

   switch(d)

  {

  case 14: P1^=(1<<0) break //k1 键按下

  case 13: P1^=(1<<1)  break//k2键按下了

  case 11: P1^=(1<<2)  break//k3键按下了

  case 7:  P1^=(1<<3)  break//k4键按下了

   //

  default: P1^=(1<<7)  break//缺省值,都不亮

  }

}

 

void key()  //按键扫描

{

 static char i

 unsigned char a

 unsigned char b

 a=P2//0000aaaa ,00007654 3210

 a>>=4//a=a>>4 //移动4位,a 取值

 if(a!=15) //至少有个键按下

 {

   if(i==0) //0 的时候,标示没有建按下

   {

     delay(1000) //延时 1000次

b=P2 //把按键的口赋给变量 b

b>>=4 //移动四位,b 取值

if(a==b) //如果a和b相等

{

 key_event(b)  //这次按键有效

 i=1 //1 不允许其它键按下

}

   }

 }

 else

 {

  i=0 //不是有效键按下,清 0 

 }

}

void main() //主函数开始

{

 while(1) //进入循环,检测按键按下情况

 {

   key()

  

 }

}

楼主的要求,不够详尽。

http://blog.163.com/asm_c/blog/static/2482031132014427210656/

参考。

你的显示子程序的名称是:

void DigDispaly()

可是在主程序调用时,却写成了

DigDisplay()

比较一下,这两个一样吗,难道都不是你自己写的吗?


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7805664.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-10
下一篇 2023-04-10

发表评论

登录后才能评论

评论列表(0条)

保存