程序有错误,求指导

2019-07-18 11:41发布

#include<reg51.h>
#include<intrins.h>
#define unit unsigned int
#define unchar unsigned char
sbit RS=P2^6;
sbit RW=P2^5;
sbit E=P2^7;
sbit BEEP=P1^5;
sbit FM=P3^0;
sbit FMQ=P2^3;
#define Data P0
char data tadle[]="level:";
char data table[]="speed:";
/********************/
/*    函数声明      */
/********************/
/********************/
/*   微秒延时函数   */
/********************/
void DelayUs(unsigned char us)
{
unsigned char uscnt;
uscnt=us>>1;
while(-uscnt);
}
void waring()
{
BEEP=~BEEP;
}
/********************/
/*   毫秒函数声明   */
/********************/
void DelayMs(unsigned char ms)
{
while(--ms)
{
  DelayUs(250);
  DelayUs(250);
  DelayUs(250);
  DelayUs(250);
}
}
/********************/
/*  写入命令函数    */
void Writecommand(unsigned char c)
{
DelayMs(5);
E=0;
RS=0;
RW=0;
_nop_();
E=1;
Data=c;
E=0;
}
/********************/
/*   写入数据函数     */
/********************/
void WriteData(unsigned char c)
{
DelayMs(5);
E=0;
RS=1;
RW=0;
_nop_();
E=1;
Data=c;
E=0;
RS=0;
}
/*******************/
/*  初始化函数     */
/*******************/
void InitLcd()
{
DelayMs(15);
WriteCommand(0x38);
WriteCommand(0x38);
WriteCommand(0x38);
WriteCommand(0x06);
WriteCommand(0x0c);
WriteCommand(0x01);
}
sbit TRING=P2^0;
sbit ECH0=P2^1;
uchar ;flag,flag1,i;
void cheak_distanceinit()
{
TMOD=0x11;
TH0=0;
TL0=0;
TH1=(65536-15)/256;
TL1=(65536-15)%256;
EA=1;
ET0=1;
ET1=1;
TR0=1;
TR1=0;
flag=0;
ECH0=0;
TRING=0;
}
void start()
{
TH1=(65536-15)/15;
TL1=(65536-15)%256;
TR1=1;
TRING=1;
while(flag=1);
TR1=0;
TRING=0;
flag=0;
flag1=0;
}
unit cheak_recievetime()
{
TH0=0;
TL0=0;
while(flag1==0);
{
  TR0=1;
  while(ECH0==1)flag=1;
  ECH0=0;
  TR0=0;
}
return TH0*256+TL0;
}
float count_distance(unit x)
{
float date;
date=(float)x*340/2/10000;
return date;
}
/********************/
/*    主函数        */
/********************/
main()
{
float dis_date=0;
uint time,date1=0,date2=0,baifen,shifen,ge,i,teep;
Initlcd();
cheak_distanceinit();
WriteCommand(0x80);
for(i=0;i<6;i==)
{
  WriteData(table[i]);
  DelayMs(10);
}
WriteCommand(0x80+0x40);
for(i=0;i<6;i++)
{
  WriteData(table[i]);
  DelayMs(10);
}
while(1)
{
  start();
  time=cheak_recievetime();
  dis_date=count_distance(time);
  date1=dis_date;
  teep=dis_date;
   if(teep>500)
    warning();
   else
    BEEP=1;
   ge=date1/100;
   shifen=date1/10%10;
   baifen=date1%10;
   WriteCommand(0x80+0x07);
   WriteData(ge+0x30);
   DelayMs(10);
   WriteData('.');
   WriteData(shifen+0x30);
   DelayMs(10);
   WriteData(baifen+0x30);
   DelayMs(10);
}
}
void start_timer0() interrupt3
{
TH1=(65536-12)/256;
TL1=(65536-12)%256;
flag=1;
}
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit EOC=P2^0;
sbit OE=P2^1;
sbit START=P2^2;
sbit CLK=P2^3;
sbit DP=P1^7;
sbit beep=P2^4;
sbit red=P2^5;
sbit yellow=P2^6;
sbit moto=P2^7;
sbit xuan1=P3^5;
sbit xuan2=P3^6;
sbit xuan3=P3^7;
Uint DATA;
uchar code-tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar adc_data[]={0,0,0,0};
/********************
函数名称:init()
功能:系统初始化 定时器中断设置
参数:无
返回值:无
********************/
void init()
{
TMOD=1;
TH0=0xff;
TL0=0x38;
EA=1;
ET0=1;
TR0=1;
}
/********************
函数名称tim0() interrupt 1
功能:定时器中断为ADC0808提供转换需要的时钟信号
参数:无
返回值:无
********************/
void tim0() interrupt 1
{
TH0=0xff;
TL0=0x38;
CLK=!CLK;
}
/*******************
函数名称:delay()
功能:延时函数 大约0.1ms
参数:无
返回值:无
******************/
void delay(uint i)
{
uchar j;
for(;i>0;i--);
for(j=200;j>0;j--);
}
/******************
函数名称:display()
功能:数码管显示函数 将电压值显示出来
参数:无
返回值:无
******************/
void display()
{
vchar s,f=0xf7;
adc_data[0]=DATA/1000;
adc_datd[1]=DATA%1000/100;
adc_data[2]=DATA%1000%100/10;
adc_data[3]=0;
for(s=0;s<4;s++)
{
  P1=tab[adc_data[s]];
  P3=f;
  if(s==2)
   DP=1;
  delay(10);
  P1=0;
  f=_cror_(f,1);
}
}
/*****************
函数名称:upper_limit(uchar i)
功能:水位上限报警 子程序
返回值:无
******************/
void upper_limit(uchar i)
{
for(;i>0;i--);
{
  red=1;
  beep=1;
  yellow=0;
  moto=1;
  delay(1);
  red=0;
  beep=0;
  yellow=0;
  moto=1;
  delay(1);
}
}
/*****************
函数名称:lower_limit(uchar i)
功能:水位下限报警 子程序
参数:i用来表示 闪烁数字
返回值:无
******************/
void lower_limit(uchar i)
{
for(;i>0;i--)
{
  red=0;
  beep=1;
  yellow=1;
  moto=0;
  delay(1);
  red=0;
  beep=0;
  yellow=0;
  moto=0;
  delay(1);
}
}
/*****************
函数名称:main()
功能:
参数:
返回值:无
******************/
void main()
{
uchar s,i;
red=0;
yellow=0;
beep=0;
moto=1;
xuan1=1;
xuan2=1;
xuan3=1;
init();
while(1)
{
  for(i=2;i>0;i--);
  {
   START=1;
   OE=0;
   START=0;
   while(EOC=0);
   OE=1;
   s=P0;
   DATA=s*1.0/255*1500;
  }
  display();
  if(xuan1==0)
  {
   if(DATA<200)
   {
    lower_limit(100);
   }
   if(DATA>1400)
   {
    upper_limit(100);
   }
  }
  if(xuan2==0)
  {
   if(DATA<200)
   {
    lower_limit(100);
   }
   if(DATA>1300)
   {
    upper_limit(100);
   }
  }
  if(xuan3==0)
  {
   if(DATA<300)
   {
    lower_limit(100);
   }
   if(DATA>1200)
   {
    upper_limit(100);
   }
  }
}
}
keil中进行生成hex文件是出现两个错误,求指导。
QQ截图20151130131014.png
QQ截图20151130131034.png
QQ截图20151130131045.png
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
1条回答
武力戡乱
2019-07-18 16:58
1、Writecommand/WriteCommand大小写
2、while(flag=1);应该是while(flag==1);
3、#define unit unsigned int和使用的uint不一样。
亲,这个几个问题和编译器没关系啊!

一周热门 更多>