找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2053|回复: 0
收起左侧

每一个按键控制一个灯,实现按键按下一次小灯的状态取反一次。

[复制链接]
ID:853254 发表于 2020-12-2 21:15 | 显示全部楼层 |阅读模式
程序代码:
#include <reg51.h>
#define ucharunsigned char  
#define uintunsigned int
uchar keyval;
sbitP2_0=P2^0;
sbitP2_1=P2^1;
sbitP2_2=P2^2;
sbitP2_3=P2^3;
sbitP2_4=P2^4;
sbitP2_5=P2^5;
sbitP2_6=P2^6;
sbitP2_7=P2^7;
void delay(uint j)   /*延时函数*/
{  uchart;
   while (j--)
  {  for(t = 0; t < 125; t++);  
  }
}
void keyscan()
{
P1=0xff;
  keyval=P1;
if(keyval!=0xff)
  {
    delay(10);
    keyval=P1;
   if(keyval!=0xff)
    {keyval=~keyval;while(P1!=0xff);}
  }
}   
void main(  )  
{
   keyval=0;
  while(1)
   {  keyscan();
    switch(keyval)
      {
    case 1:P2_0=~P2_0; break;
    case 2:P2_1=~P2_1;  break;
    case 4:P2_2=~P2_2;  break;
    case 8:P2_3=~P2_3;  break;
    case 16:P2_4=~P2_4; break;
    case 32:P2_5=~P2_5; break;
    case 64:P2_6=~P2_6; break;
    case 128:P2_7=~P2_7;break;
  }
   }   
}


这是仿真图

这是仿真图
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表