这个程序一直提示我缺少一个分号,但是我没有找到,求...!

2019-07-15 20:56发布

#include<reg51.h>
#include<stdio.h>
#define uchar unsigned char
#define uint unsigned int

// 各数字的数码管段管 //

uchar code DSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
sbit CLK=P1^0;
sbit ST=P1^1;
sbit EOC=P1^2;
sbit OE=P1^7;
sbit k4=P2^3;
sbit k3=P2^2;
sbit k2=P2^1;
uchar xs;

//延时//

void DelayMS(uint x)
{
uchar i;
while (x--)
{
for (i=0;i<120;i++)
}
}

//显示转换结果//

void Display_Result(uchar d)
{
k4=1;                           //第四个数码管显示个位数
P0=-DSY_CODE[d%10];
DelayMS (31);
k4=0;
k3=1;                           //第三个数码管显示十位数
P0=-DSY_CODE[d%100/10];
DelayMS(31);
k3=0;                           //第二个数码管显示百位数
k2=1;
P0=-DSY_CODE[d%100];
DelayMS(31);
k2=0;
}

//主程序//

void main()
{
TMOD=0x02;                     //T1工作模式2
TH0=0x14;
TL0=0x00;
IE=0x82;
TR0=1;
k4=0;
k2=0;
k3=0;
P1=0x3f;                       //选择ADC的通道3(0111)
while (1)
{
ST=0;
ST=1;
ST=0;                          //启动AD转换
whlie(EOC==0)                  //等待转换完成
{
Display_Result(xs);
}
OE=1;
//Display_Result(p3);
xs=P3;
OE=0;
}
}

// T0定时器会终端给ADC0808提供时钟信号//

void timer0_INT()interrupt 1
{
CLK=~CLK;
}
                                                                          

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
9条回答
zy2014
2019-07-16 21:52

  1. /*
  2. delayms for循环缺少;
  3. Display_Result 中P0的赋值不应该是-,位操作应该是~
  4. Main中第二个while 拼写错误
  5. */
  6. #include<reg51.h>
  7. #include<stdio.h>
  8. #define uchar unsigned char
  9. #define uint unsigned int

  10. // 各数字的数码管段管 //

  11. uchar code DSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  12. sbit CLK=P1^0;
  13. sbit ST=P1^1;
  14. sbit EOC=P1^2;
  15. sbit OE=P1^7;
  16. sbit k4=P2^3;
  17. sbit k3=P2^2;
  18. sbit k2=P2^1;
  19. uchar xs;

  20. //延时//

  21. void DelayMS(uint x)
  22. {
  23. uchar i;
  24. while (x--)
  25. {
  26. for (i=0;i<120;i++);
  27. }
  28. }

  29. //显示转换结果//

  30. void Display_Result(uchar d)
  31. {
  32. k4=1;                           //第四个数码管显示个位数
  33. P0=DSY_CODE[d%10];
  34. DelayMS (31);
  35. k4=0;
  36. k3=1;                           //第三个数码管显示十位数
  37. P0=DSY_CODE[d%100/10];
  38. DelayMS(31);
  39. k3=0;                           //第二个数码管显示百位数
  40. k2=1;
  41. P0=DSY_CODE[d%100];
  42. DelayMS(31);
  43. k2=0;
  44. }

  45. //主程序//

  46. void main()
  47. {
  48. TMOD=0x02;                     //T1工作模式2
  49. TH0=0x14;
  50. TL0=0x00;
  51. IE=0x82;
  52. TR0=1;
  53. k4=0;
  54. k2=0;
  55. k3=0;
  56. P1=0x3f;                       //选择ADC的通道3(0111)
  57. while (1)
  58. {
  59. ST=0;
  60. ST=1;
  61. ST=0;                          //启动AD转换
  62. while(EOC==0)                  //等待转换完成
  63. {
  64. Display_Result(xs);
  65. }
  66. OE=1;
  67. //Display_Result(p3);
  68. xs=P3;
  69. OE=0;
  70. }
  71. }

  72. // T0定时器会终端给ADC0808提供时钟信号//

  73. void Timer0_INT() interrupt 1
  74. {
  75. CLK=~CLK;
  76. }
复制代码


上面的程序不报错了,但是我看不懂你的程序。

一周热门 更多>