打印

C51程序错误,请大侠指点一下

[复制链接]
1786|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
rdfeps|  楼主 | 2014-4-4 22:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
程序如下
/*******************************************************************************                                                                       *
*      12864标准字库液晶演示 数据p0,控制p2                                     *
********************************************************************************/
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint  unsigned int
uint qian,bai,shi,ge,time,s;  //定义千位 百位 十位 个位 时间  长度
void delay (uint a);
void delayus(uchar n); //1us延时,用于发射超声波
void write_12864com(uchar com);
void write_12864dat(uchar dat);
void init ();
void start() ;  //发射超声波函数
void display1(void);
void conut() ;   //计算距离函数
                                  //uint table[]={"  程序初始化中     请稍等"};
uchar table[]={'0','1','2','3','4','5','6','7','8','9'};

/************* 12864LCD引脚定义 *************/
#define LCD_data  P0       //数据口
sbit rs  =  P2^6;      //寄存器选择输入
sbit rw  =  P2^5;      //液晶读/写控制
sbit e  =  P2^7;      //液晶使能控制
sbit psb =  P3^2;      //串/并方式控制
sbit rst =  P3^7;      //液晶复位端口
sbit Trig  = P2^0; //产生脉冲引脚
sbit Echo  = P2^1; //回波引脚

// 主函数                                                                                        30
void main (void)
{
  TMOD=0x01;//设置定时器0工作方式
  TH0=0; //定时器高8位清零
  TL0=0; //定时器低8位清零
  ET0=1;//允许定时器0中断
  EA=1; //开总中断
  while (1)
  {
  start();
  while(Echo==0);                  //当RX为零时等待
  TR0=1;                                  //开启计数                                    
  while(Echo);                  //当RX为1计数并等待
  TR0=0;                                  //关闭计数
  conut();                          //计算

//psb=1;
//rst=1;
delay (3);
init ();                                                                     //50
display1();
   }
//延时函数
void delay (uint a)
{
  uchar j;
  for(t;t>0;t--)
  for(j=19;j>0;j--);
}

   //写指令函数                                        60
void write_12864com(uchar com)
{
  rs=0;
  rw=0;
  delay(1);
  e=1;
  P0=com;
  delay(10);
  e=0;
  delay (2);
}

//写数据函数
void write_12864dat(uchar dat)
{
rs=1;
  rw=0;
  delay(1);
  e=1;
  P0=dat;             //80
  delay(10);
  e=0;
  delay (2);
}

//初始化
void init ()
{
delay (100);
write_12864com(0x30);
delay (3);
write_12864com(0x30);
delay (1);
write_12864com(0x0e);
delay (3);
write_12864com(0x01);
delay (250);
write_12864com(0x06);
delay(10);
}                   //100
  
void display1()
{
  uchar i;
write_12864com (0x88);  
  for (i=0;i<17;i++)
  {
   write_12864dat (table[qian]);
write_12864dat (table[bai]);
write_12864dat (table[shi]);
write_12864dat (table[ge]);
  }
}

void delayus(uchar n)         //延时1us函数
{
        uchar i;
        for(i=0;i<n;i++)
        {
                _nop_();                //120
        }
}
void conut()                 //计算距离
{
        time=TH0*256+TL0;                                                           
        TH0=0;
        TL0=0;
        s=time/58;
        qian=s/1000;
        bai=s%1000/100;
        shi=s%100/10;
        ge=s%10;
}
void time0 () interrupt 1
{
      
}

void start()           // 触发超声波测距模块
{                           //140
        Trig=1;
        delay(60);
        Trig=0;        
}
这个程序中  下一段有4个错误,  
//延时函数
void delay (uint a)          这一行错误C141  syntax error near 'void'
{                                    还是上面这一行C209  '-delay' :too few actual parameters
  uchar j;
  for(t;t>0;t--)                  这一行C202 't': undefined identifier
  for(j=19;j>0;j--);           这一行C202 'j': undefined identifier
}
还请大侠指点一下

相关帖子

沙发
zhangmangui| | 2014-4-4 23:05 | 只看该作者
应该是main函数缺少一个括号

使用特权

评论回复
板凳
黄小俊| | 2014-4-5 09:12 | 只看该作者
还有t好像没有定义。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

23

帖子

1

粉丝