发 帖  
原厂入驻New
[讨论] 无聊发个程序,求分析
2020-1-8 22:38:20  787 程序 LED
分享
  1. 求分析。
  2. #include<reg52.h>
  3. #define uchar unsigned char
  4. #define        duan P0
  5. sbit LED1=P1^0;
  6. sbit led2=P1^7;
  7. sbit led3=P1^2;
  8. sbit led7=P1^6;

  9. uchar code sz[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x7c,0x39,0x5e,0x79,0x71,0x00};
  10. sbit wei1 = P2^4;
  11. sbit wei2 = P2^5;
  12. sbit wei3 = P2^6;
  13. sbit wei4 = P2^7;
  14. unsigned int count0 = 0;
  15. unsigned int count1 = 0;
  16. unsigned int count2 = 1;
  17. unsigned int count3 = 0;
  18. unsigned int count4 = 0;
  19. unsigned int count5 = 0;
  20. unsigned int i=0,j=200;
  21. unsigned int m=0,q1,q2,q3,q4,num=0;

  22. void timer0_init()
  23. {
  24.         TMOD = 0x01;
  25.         TH0 = 0xff;
  26.         TL0 = 0x00;
  27.         EA = 1;
  28.         ET0 = 1;
  29.         TR0 = 1;
  30. }
  31. /*------------------------------------------------
  32.                     主函数
  33. ------------------------------------------------*/
  34. void main (void)
  35. {
  36.        led1=1;
  37.            led2=0;             //此方法使用bit位对单个端口赋值
  38.            led3=1;
  39.            led7=0;
  40.                            duan=0;
  41.                            wei1 = 1;
  42.                         wei2 = 1;
  43.                         wei3 = 1;
  44.                         wei4 = 1;
  45.                         timer0_init();
  46.                         count0=0;
  47.                         count1=0;
  48.                         count3=0;
  49.                         count4=0;
  50.                         count5=0;
  51. while (1)         //主循环
  52. {

  53. //______________显示0000-9999_____________________________________
  54. //计数1秒更新一次
  55.           IF(count4==5000)
  56.           {         
  57.                  count4=0;
  58.                  q1=num/1000;                         //千位
  59.                  q2=(num%1000)/100;                   //百位
  60.                  q3=(num%100)/10;            //十位
  61.                  q4=num%10;                                //个位
  62.                  num++;
  63.                  if(num==9999)
  64.                  {
  65.                          num=0;
  66.                  }
  67.           }
  68. //数码管显示0000-9999
  69.           if(count5==10)           //千位显示
  70.           {            
  71.                           duan = sz[q1];
  72.                              wei1 = 1;
  73.                         wei2 = 0;
  74.                         wei3 = 0;
  75.                         wei4 = 0;
  76.           }
  77.            if(count5==20)           //百位显示
  78.           {
  79.                           duan = sz[q2];
  80.                              wei1 = 0;
  81.                         wei2 = 1;
  82.                         wei3 = 0;
  83.                         wei4 = 0;

  84.           }
  85.            if(count5==30)           //十位显示
  86.           {
  87.                           duan = sz[q3];
  88.                              wei1 = 0;
  89.                         wei2 = 0;
  90.                         wei3 = 1;
  91.                         wei4 = 0;
  92.           }
  93.            if(count5==40)           //个位显示
  94.           {
  95.                           duan = sz[q4];
  96.                              wei1 = 0;
  97.                         wei2 = 0;
  98.                         wei3 = 0;
  99.                         wei4 = 1;
  100.                         count5=0;
  101.           }
  102. //------------------------------------------

  103. //_______________闪烁____________________________________________________
  104.          if(count2==1)                        //任务启动值
  105.                     {        if(count3==5000)                 //任务内容
  106.                  {
  107.                          led2=~led2;           
  108.                         count3=0;
  109.                  }               
  110.                 }
  111.          
  112.   }
  113. }

  114. void timer0() interrupt 1
  115. {
  116.         TH0 = 0xff;
  117.         TL0 = 0xa0;
  118.         count0++;
  119.         count1++;
  120.         count3++;
  121.         count4++;
  122.         count5++;
  123.          led3=~led3;
  124.         //______________呼吸灯_________________________________________________
  125. //变亮过程         
  126.                 if((i<200)&&(j==200))
  127.                 {         
  128.                         if(count0==i)
  129.                         {
  130.                                 led1=1;         
  131.                         }
  132.                         if(count1==200)
  133.                         {        
  134.                             count0=0;
  135.                                 count1=0;
  136.                                 led1=0;
  137.                                 ++i;
  138.                         }
  139.                         if(i==200)
  140.                         {        j=0;
  141.                                  count0=0;
  142.                                 count1=0;
  143.                         }
  144.                 }

  145. //变暗过程
  146.                           if((j<=200)&&(i==200))
  147.                 {         
  148.                         if(count0==j)
  149.                         {
  150.                                 led1=0;         
  151.                         }

  152.                         if(count1==200)
  153.                         {        
  154.                             count0=0;
  155.                                 count1=0;
  156.                                 led1=1;
  157.                                 ++j;
  158.                         }
  159.                         if(j==200)
  160.                         {
  161.                                 i=0;
  162.                                   count0=0;
  163.                                 count1=0;
  164.                         }
  165.                 }
  166. }
复制代码

0
2020-1-8 22:38:20   评论 分享淘帖

相关讨论

2 个讨论
注释的很清出来了
2020-1-9 09:37:31 评论

举报

也就是计数功能吧
2020-1-10 09:06:30 评论

举报

撰写讨论

你正在撰写讨论

如果你是对讨论或其他讨论精选点评或询问,请使用“评论”功能。

高级模式
您需要登录后才可以回帖 登录 | 注册

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
发讨论
关闭

站长推荐 上一条 /7 下一条

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