微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 这个程序一直提示我缺少一个分号,但是我没有找到,求...!

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

时间:10-02 整理:3721RD 点击:
#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;
}
                                                                          

把错误的提示信息截出来来看下

DelayMS函数的for循环没有语句

for (i=0;i<120;i++);这个地方

氏允焦庹斩炔饬恳巧杓?C(26): error C141: syntax error near '}'

那个延时程序加上也是错的,我换了两个延时写法都不对,报错还是那个问题

把你的源代码发个附件吧,晚上在看看,办公室里面没有编译器,不好看的

  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. }

复制代码



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

#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)
{
uint i,j;
for (i=x;i>0;i--)
  for (j=110;j>0;j--);
}
//显示转换结果//
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转换
while (EOC==0)                  //等待转换完成
{
Display_Result(xs);
}
OE=1;
//Display_Result(p3);
xs=P3;
OE=0;
}
}
// T0定时器会终端给ADC0808提供时钟信号//
void Timer0_INT()interrupt 1
{
CLK=~CLK;
}
这样就行了,整体程序没怎么改,延时函数我是照我的习惯写的,编译没报错

你先看错误在哪一行  然后注意你报错行的钱一行的语句  注意输入法   

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

网站地图

Top