找回密码
 立即注册

QQ登录

只需一步,快速开始

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

有没有大佬 看下怎么调试 求帮助

[复制链接]
跳转到指定楼层
楼主
ID:356540 发表于 2018-6-22 00:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. #include<reg52.h>
  2. #include<intrins.h>

  3. sbit ADDR0=P1^0;
  4. sbit ADDR1=P1^1;
  5. sbit ADDR2=P1^2;
  6. sbit ADDR3=P1^3;
  7. sbit ENLED=P1^4;

  8. sbit BUZZ = P1^6;  //蜂鸣器控制引脚

  9. unsigned char code LEDwei[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
  10.                              0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e
  11. };

  12. unsigned char code KeyCode[]={0xff,0xe7,0xd7,0xb7,0x77,0xeb,0xdb,0xbb,0x7b,
  13.                          0xed,0xdd,0xbd,0x7d,0xee,0xde,0xbe,0x7e
  14. };    //矩阵键盘按键编码

  15. unsigned char scan0=0xfe;
  16. unsigned char count[]={0,0,0,0,0,0};
  17. unsigned char byte=5;
  18. unsigned char number[5];
  19. unsigned char key;
  20. unsigned char n;
  21. unsigned int cnt;        
  22. unsigned char flag=1;
  23. bit f0;


  24. void delay_ms(unsigned int cnt)
  25. {
  26.         unsigned char i;
  27.         while(cnt--)
  28.         {
  29.                 for(i=0;i<=110;i++);
  30.         }
  31. }

  32. void Scankeyboard();
  33. void countDown();

  34. void main()
  35. {
  36.         ADDR3=1;
  37.         ENLED=0;         
  38.         TMOD=0x01;
  39.         TH0=0xfc;
  40.         TL0=0x67;
  41.         EA=1;
  42.         TR0=1;
  43.         ET0=1;
  44.         while(1)
  45.         {
  46.                 Scankeyboard();
  47.                 countDown();
  48.         
  49.         }
  50. }
  51. void time0()interrupt 1
  52. {
  53.         unsigned char i;
  54.         cnt++;
  55.         TH0=0xfc;
  56.         TL0=0x67;
  57.         P0=0xff;
  58.         switch(i)
  59.         {
  60.                 case 0:ADDR0=0;    ADDR1=0;   ADDR2=0; i++; if(byte>=1) P0=LEDwei[count[0]];break;
  61.                 case 1:ADDR0=1;    ADDR1=0;   ADDR2=0; i++; if(byte>=2) P0=LEDwei[count[1]];break;
  62.                 case 2:ADDR0=0;    ADDR1=1;   ADDR2=0; i++; if(byte>=3) P0=LEDwei[count[2]];break;
  63.         case 3:ADDR0=1;    ADDR1=1;   ADDR2=0; i++; if(byte>=4) P0=LEDwei[count[3]];break;
  64.         case 4:ADDR0=0;    ADDR1=0;   ADDR2=1; i++; if(byte>=5) P0=LEDwei[count[4]];break;
  65.                 case 5:ADDR0=1;    ADDR1=0;   ADDR2=1; i=0; P0=LEDwei[count[5]];break;
  66.                 default:break;
  67.         }
  68. }
  69. void countDown()
  70. {

  71.         if(flag==3)
  72.         {        
  73.                 if(byte==1&count[0]>9)        BUZZ=~BUZZ;
  74.                 if(byte==2&count[1]>9)        BUZZ=~BUZZ;
  75.                 if(byte==3&count[2]>9)        BUZZ=~BUZZ;
  76.                 if(byte==4&count[3]>9)        BUZZ=~BUZZ;
  77.                 if(byte==5&count[4]>9)        BUZZ=~BUZZ;
  78.                 if(cnt==1000&f0==0)
  79.                 {
  80.                         cnt=0;
  81.                         count[0]--;                                     //个位
  82.                         if(count[0]>9)
  83.                         {        f0=1;
  84.                                 if(byte>1)
  85.                                 {        
  86.                                         f0=0;               
  87.                                         count[0]=9;
  88.                                         count[1]--;                             //十位
  89.                                         if(count[1]>9)
  90.                                         {
  91.                                                 f0=1;
  92.                                                 if(byte>2)
  93.                                                 {
  94.                                                         f0=0;
  95.                                                         count[1]=9;
  96.                                                         count[2]--;                         //百位
  97.                                                         if(count[2]>9)
  98.                                                         {
  99.                                                                 f0=1;
  100.                                                                 if(byte>3)
  101.                                                                 {
  102.                                                                         f0=0;
  103.                                                                         count[2]=9;
  104.                                                                         count[3]--;                 //千位
  105.                                                                         if(count[3]>9)
  106.                                                                         {
  107.                                                                                 f0=1;
  108.                                                                                 if(byte>4)
  109.                                                                                 {
  110.                                                                                         f0=0;
  111.                                                                                         count[3]=9;
  112.                                                                                         count[4]--;                 //万位
  113.                                                                                         if(count[4]>9)
  114.                                                                                         {
  115.                                                                                                 f0=1;
  116.                                                                                         }
  117.                                                                                 }
  118.                                                                         }                                                                 
  119.                                                                 }
  120.                                                         }
  121.                                                 }
  122.                                         }
  123.                                 }
  124.                         }
  125.                 }
  126.         }
  127. }

  128. void Scankeyboard()
  129. {
  130.         unsigned char scan,keyboard;
  131.         unsigned char i;

  132.         P2=scan0;
  133.         scan=P2;
  134.         if(scan!=scan0)
  135.         {
  136.                 delay_ms(2);
  137.                 if(scan!=scan0)
  138.                 {
  139.                         while(P2!=scan0);
  140.                         keyboard=scan;
  141.                         for(i=1;i<17;i++)
  142.                         {
  143.                                 if(keyboard==KeyCode[i])
  144.                                         key=i;
  145.                         }
  146.                         if(flag==2)
  147.                         {
  148.                                 if(n>byte)
  149.                                         n=byte;
  150.                                 if(key>=1&key<=3)           //1~3
  151.                                 {         
  152.                                          number[n++]=key;
  153.                                 }
  154.                                 if(key>=5&key<=7)           //4~6
  155.                                 {         
  156.                                          number[n++]=key-1;
  157.                                  }
  158.                                 if(key>=9&key<=11)                    //7~9
  159.                                 {         
  160.                                          number[n++]=key-2;
  161.                                 }
  162.                                 if(keyboard==KeyCode[13])        //0
  163.                                 {         
  164.                                         number[n++]=0;
  165.                                 }
  166.                                 count[n-1]=number[n-1];                                
  167.                         }
  168.                         if(flag==1)
  169.                         {
  170.                                 if(key>=1&key<=3)           //1~3
  171.                                 {         
  172.                                          key=key;
  173.                                          byte=key;               //设置倒计时的位数
  174.                                          count[5]=byte;
  175.                                     // flag=2;
  176.                                 }
  177.                                 if(key==5|key==6)           //4~5
  178.                                 {         
  179.                                          key=key-1;
  180.                                          byte=key;               //设置倒计时的位数
  181.                                          count[5]=byte;
  182.                                      //flag=2;
  183.                                 }                                
  184.                         }
  185.                         if(flag==3&key==15)                        //重新设定倒计时
  186.                         {
  187.                             flag=1;f0=0;
  188.                                 count[0]=0;
  189.                                 count[1]=0;
  190.                                 count[2]=0;
  191.                                 count[3]=0;
  192.                                 count[4]=0;
  193.                                 count[5]=0;
  194.                                 byte=5;
  195.                         }
  196.                         else if(flag==1&key==15)
  197.                                 flag=2;
  198.                         else if(flag==2&key==15)
  199.                                 flag=3;               
  200.                 }
  201.         }
  202.         else
  203.         {
  204.                 scan0=_crol_(scan0,1);
  205.                 if(scan0==0xef)
  206.                 {
  207.                         scan0=0xfe;
  208.                 }
  209.         }
  210. }
复制代码
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:356540 发表于 2018-6-22 00:29 | 只看该作者
我调试的老是计时很久才响应  
回复

使用道具 举报

板凳
ID:320306 发表于 2018-6-22 12:29 | 只看该作者
你怎么是限制会员,还有你提问不会很清楚,不明白你问什么意思?
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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