微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 大神们看看这个程序哪里有问题

大神们看看这个程序哪里有问题

时间:10-02 整理:3721RD 点击:
可以设置分钟和秒的倒计时,可是按了开始之后数码管没有显示倒计时。

  1. #include<AT89X51.H>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. uchar bbit[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,};
  5. uchar buffer[]={0,0,0,0};
  6. uchar minute=0,sec=30;
  7. uint count;
  8. uint k;

  9. sbit FM = P1^7;

  10. void delay(uchar ms)
  11. {
  12. uchar i,j;
  13. for(i=ms;ms>0;ms--);
  14. for(j=112;j>0;j--);
  15. }

  16. void tt0()interrupt 1 using 1
  17. {
  18. TH0=(65535-50000)/256;
  19. TL0=(65535-50000)%256;

  20. if(count==10)
  21. {
  22. count=0;
  23. if(sec==0&&minute==0)
  24. {
  25. P0=0xc0;
  26. P2=0x0f;
  27. P3_0=0;          //rel
  28. FM=0;

  29. while(1){P3_1=1;}    //daim yenix
  30. }

  31. if(sec==0)
  32. {
  33. sec=60;minute--;
  34. if(minute=9)minute=9;
  35. }
  36. sec--;
  37. if(sec>=59)sec=59;
  38. }

  39. buffer[0]=sec%10;
  40. buffer[1]=sec/10;
  41. buffer[2]=minute%10;
  42. buffer[3]=minute/10;
  43. count++;
  44. /*if(count%10==0)
  45. P3_1=0;*/
  46. }

  47. void display()
  48. {
  49. uchar i;
  50. for(i=10;i!=0xff;i--)
  51. {
  52. P0=buffer[i];
  53. P2=bbit[i];
  54. delay(10);
  55. P0=0xff;
  56. }
  57. }

  58. void main()
  59. {
  60. P0=0x00;
  61. P2=0x0f;
  62. P3_0=0;
  63. TMOD=0x01;
  64. TH0=(65535-50000)/256;
  65. TL0=(65535-50000)%256;
  66. EA=0;
  67. ET0=0;
  68. while(1)
  69. {
  70. buffer[0]=sec%10;
  71. buffer[1]=sec/10;
  72. buffer[2]=minute%10;
  73. buffer[3]=minute/10;
  74. display();
  75.        
  76. if(P1_0==0)
  77. {
  78. delay(20);
  79. if(P1_0==0)
  80. {sec++;if(sec>=60)sec=0;}while(P1_0==0);
  81. }
  82. if(P1_1==0)
  83. {
  84. delay(20);
  85. if(P1_1==0)

  86. {sec--;if(sec>=60)sec=59;}while(P1_1==0);
  87. }
  88. if(P1_3==0)
  89. {
  90. delay(20);
  91. if(P1_3==0)
  92. {minute++;if(minute>=9)minute=0;}while(P1_3==0);
  93. }
  94. if(P1_2==0)
  95. {
  96. delay(20);
  97. if(P1_2==0)
  98. {minute--;if(minute>=9)minute=9;}while(P1_2==0);
  99. }

  100. if(P1_4==0)                     //qikip,wakit balgulaxka baxlax
  101. delay(20);
  102. if(P1_4==0)
  103. {
  104. EA=1;
  105. ET0=1;
  106. TR0=1;
  107. P3_1=0;
  108.         while(1)
  109. {
  110. display();
  111. }
  112. }
  113. }
  114. }

复制代码



什么的图,数码的显示都有问题

共阳的数码管。图上其他多余的线路可以先不看的   现在的主要问题是显示不了倒计时

定时器没开吧?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top