单片机/MCU论坛
直播中

cy

4年用户 4经验值
私信 关注
[问答]

51单片机protues仿真动态秒表实验(求助)

`有大佬帮我看一下我这个代码的问题嘛?计时器启动不了
1.仿真电路图如下(数码管为共阴极数码管)

2.编程代码
  1. #include
  2. unsigned char code discode1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};
  3. unsigned char code discode2[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  4. unsigned char discode3[]={0xbf,0x3f};
  5. unsigned char k=0;
  6. ***it P2_0=P2^0;
  7. ***it P2_1=P2^1;
  8. unsigned char timer=0;
  9. unsigned char second;
  10. unsigned char key=0;
  11. main()
  12. {
  13.    TMOD=0x01;
  14.    ET0=1;
  15.    EA=1;
  16.    second=0;
  17.    P2_0=1;
  18.    P2_1=0;
  19.    discode3[0]=discode1[second/10];
  20.    discode3[1]=discode2[second%10];
  21.    while(1)
  22.    {
  23.           P0=0x00;
  24.           P2_0=!P2_0;
  25.           P2_1=!P2_1;
  26.           if(k==2){k=0;}
  27.           P0=discode3[k];
  28.           k++;
  29.         if((P3&0x80)==0x00)
  30.         {
  31.            if((P3&80)==0x00)
  32.            {
  33.                   key++;
  34.                   switch(key)
  35.                   {
  36.                            case 1:
  37.                          TH0=0xee ;
  38.                          TL0=0x00;
  39.                          TR0=1;
  40.                          break;
  41.                          case 2:
  42.                          TR0=0;
  43.                          break;
  44.                          case 3:
  45.                          key=0;
  46.                          second=0;
  47.                          discode3[0]=discode1[second/10];
  48.                          discode3[1]=discode2[second%10];
  49.                          break;
  50.                   }
  51.                         while((P3&0x80)==0x00);
  52.                         }
  53.                 }
  54.         }
  55. }
  56. void int_t0() interrupt 1 using 0
  57. {
  58.         TH0=0xee;
  59.         TL0=0X00;
  60.         timer++;
  61.         if(timer==20)
  62.         {
  63.            timer=0;
  64.            second++;
  65.            discode3[0]=discode1[second/10];
  66.            discode3[1]=discode2[second%10];
  67.         }
  68.            if(second==99)
  69.            {
  70.                   second=0;
  71.            }
  72.                   else
  73.                   {
  74.                   TR0=1;
  75.                   }
  76. }


` J2FML1K1QGJOL[BLUU2RZQK.png

回帖(1)

cy

2020-6-12 09:48:42
https://www.jianguoyun.com/p/DZbqAqoQ9c29CBj0xaID   这个是protues仿真文件
举报

更多回帖

发帖
×
20
完善资料,
赚取积分