找回密码
 立即注册

QQ登录

只需一步,快速开始

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

16位单片机流水灯源程序

[复制链接]
跳转到指定楼层
楼主
ID:549668 发表于 2019-5-28 21:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. #include<reg51.h>
  2. #define uchar unsigned char
  3. sbit P3_7=P3^7;
  4. sbit P3_2=P3^2;
  5. sbit P3_3=P3^3;
  6. int v=3000;
  7. char LED1[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
  8. char LED2[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};
  9. char LED3[]={0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff};
  10. void jiasu() interrupt 0 { v=v-900;}
  11. void jiansu() interrupt 2 {v=v+900;}
  12. uchar delay(int time){
  13.    uchar j;
  14.    for(;time>0;time--)
  15.      for(j=125;j>0;j--){if(P3_7==0){while(P3_7==0);return 1;}}
  16.                           /*延迟并判断启停开关是否按下*/
  17.           }
  18. main(){
  19.    uchar i;
  20.    IT0=1;
  21.    IT1=1;
  22.    EX0=1;
  23.    EX1=1;
  24.    EA=1;
  25. kaiguan: P0=P2=0;
  26.    if(P3_7==0){while(P3_7==0);
  27.      while(1){
  28.          goto pattern1;
  29. pattern1: for(i=0;i<8;i++){P0=LED1[i];if(delay(v)) goto kaiguan;if(i==7)P0=0;}
  30.               for(i=0;i<8;i++){P2=LED1[i];if(delay(v)) goto kaiguan;if(i==7)P2=0;}
  31.                   goto pattern2;
  32. pattern2: for(i=7;i>0;i--){P2=LED1[i];if(delay(v)) goto kaiguan;if(i==1)P2=0;}
  33.               P2=0x01;delay(v);
  34.               P2=0;
  35.               for(i=7;i>0;i--){P0=LED1[i];;if(delay(v)) goto kaiguan;if(i==1)P0=0;}
  36.               P0=0x01;delay(v);
  37.               P0=0;
  38.                   goto pattern3;
  39. pattern3: for(i=0;i<8;i++){P0=LED2[i];;if(delay(v)) goto kaiguan ;}
  40.               for(i=0;i<8;i++){P2=LED2[i];;if(delay(v)) goto kaiguan ;}
  41.                P0=P2=0;delay(v);
  42.                   goto pattern4;
  43. pattern4: for(i=0;i<8;i++){P2=LED3[i];;if(delay(v)) goto kaiguan ;}
  44.           for(i=0;i<8;i++){P0=LED3[i];;if(delay(v)) goto kaiguan ;}
  45.               P0=P2=0;delay(v);
  46.                   goto pattern5;
  47. pattern5: for(i=0;i<8;i++){P0=LED2[i];P2=LED3[i];;if(delay(v)) goto kaiguan;}
  48.               P0=P2=0;
  49.                   goto pattern6;
  50. pattern6: for(i=0;i<8;i++){P0=LED3[i];P2=LED2[i];;if(delay(v)) goto kaiguan;}
  51.               P0=P2=0;
  52.            }}}
复制代码
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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