找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 8652|回复: 4
打印 上一主题 下一主题
收起左侧

利用单片机中断按键控制点亮LED灯程序

[复制链接]
跳转到指定楼层
楼主
功能说明:
利用中断按键,每按1次亮1个LED灯,8次后全亮,第9次全灭,第10次又从第1个LED灯开始亮,周而复始循环点亮。


单片机源程序
  1. #include<reg51.h>
  2. #include<intrins.h>
  3. #define ledP1
  4. sbit key =P3^2;
  5. int i,a=0;
  6. chartable[]={0xff,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00};
  7. voiddelay_ms(unsigned int xms)  //延时函数
  8. {
  9.   unsigned int i,j;
  10.   for(i=xms;i>0;i--)
  11.    {
  12.      for(j=124;j>0;j--);
  13.    }
  14. }

  15. voidmain()  //主函数
  16. {
  17.   EA = 1;
  18.   EX0 = 1;
  19.   TCON = 0x01;
  20. while(1)
  21.         {
  22.          if(i<=8)
  23.          {
  24.        i=a;
  25.           led=table;
  26.           delay_ms(500);  //延时0.5s
  27.           }
  28.         }
  29. }

  30. voidExternal_Interrupt_0() interrupt 0
  31. {
  32. if(key==0)
  33.    {
  34.      delay_ms(50);  //延时50ms,消抖
  35.      if(key==0)     //再判断是否按下
  36.      {
  37.       while(!key);   //松手检测
  38. a++;
  39.          if(a==9)
  40.           { a=0; }
  41.      }
  42.    }
  43. }
复制代码


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:66287 发表于 2019-1-3 09:00 | 只看该作者

led = table;  这句错了吧,应该是led = table;
回复

使用道具 举报

板凳
ID:284488 发表于 2019-1-3 12:05 | 只看该作者
不好意思漏打了,正确应该是”led = table[i];” 。
回复

使用道具 举报

地板
ID:460866 发表于 2019-1-3 13:04 | 只看该作者
led = table;  这句错了吧,应该是led = table
回复

使用道具 举报

5#
ID:661801 发表于 2019-12-11 18:40 | 只看该作者
led=table[i];  还是不对呀
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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