这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 用C语言编的程序,出现了错误。好像是有两个没有定义,跪求大师帮助我们~~

共3条 1/1 1 跳转至

用C语言编的程序,出现了错误。好像是有两个没有定义,跪求大师帮助我们~~

菜鸟
2011-06-28 15:58:00     打赏

#include<reg51.h>
#include<intrins.h>
#include <absacc.h>
#define uchar unsigned char
#define uint   unsigned int
#define BUSY  0x80                               //lcd忙检测标志
#define DATAPORT P0                              //定义P0口为LCD通sbit P1_6=P1^6;                     //时钟减
sbit DQ = P1^7;                     //定义ds18b20通信端口
sbit LCM_RS=P2^0;        //数据/命令端
sbit LCM_RW=P2^1;        //读/写选择端
sbit LCM_EN=P2^2;
sbit sda=P2^3;                          //IO口定义
sbit scl=P2^4;                  //LCD使能信号
sbit ad_busy=P3^2;                  //adc中断方式接口
sbit OUT=P3^7;
uchar ad_data;                      //ad采样值存储   
uchar seconde;                    //定义并初始化时钟
uchar minite;
uchar hour;
uchar mstcnt=0;
uchar temp1,temp2,temp;                //温度显示变量
uchar t,set;
uchar K;
bit ON_OFF=0;
bit outflag;
bit write=0;
uchar code str0[]={"---  :  :  ---  "};
uchar code str1[]={"SET:  C SA:  . C"};
/*********延时K*1ms,12.000mhz**********/

void delay_LCM(uint k)
{
    uint i,j;
    for(i=0;i<k;i++)
    {
        for(j=0;j<60;j++);
  }
}

void delay_18B20(unsigned int i)
{
 while(i--);
}

void WriteCommandLCM(unsigned char WDLCM)
{
    lcd_wait( );            //检测忙信号   
 DATAPORT=WDLCM;
    LCM_RS=0;               // 选中数据寄存器
    LCM_RW=0;            // 写模式
    LCM_EN=1;
    _nop_();
 _nop_();
 _nop_();
    LCM_EN=0;
}

void WriteDataLCM(uchar WDLCM)
{
    lcd_wait( );            //检测忙信号   
 DATAPORT=WDLCM;
    LCM_RS=1;               // 选中数据寄存器
    LCM_RW=0;            // 写模式
    LCM_EN=1;
    _nop_();
 _nop_();
 _nop_();
    LCM_EN=0;
}


/***********ds18b20读一个字节**************/ 

unsigned char ReadOneChar(void)
{
 uchar i=0;
 uchar dat = 0;
 for (i=8;i>0;i--)
  {
    DQ = 0; // 给脉冲信号
    dat>>=1;
    DQ = 1; // 给脉冲信号
    if(DQ)
    dat|=0x80;
    delay_18B20(4);
  }
  return(dat);
}

/*************ds18b20写一个字节****************/ 

void WriteOneChar(uchar dat)
{
  unsigned char i=0;
  for (i=8; i>0; i--)
  {
    DQ = 0;
   DQ = dat&0x01;
     delay_18B20(5);
   DQ = 1;
     dat>>=1;
    }
 }
/**************读取ds18b20当前温度************/

void ReadTemperature(void)
{
 unsigned char a=0;
 unsigned char b=0;
 unsigned char t=0;
    Init_DS18B20();
 WriteOneChar(0xCC);     // 跳过读序号列号的操作
 WriteOneChar(0x44);  // 启动温度转换
    delay_18B20(100);       // this message is wery important
    Init_DS18B20();
 WriteOneChar(0xCC);  //跳过读序号列号的操作
 WriteOneChar(0xBE);  //读取温度寄存器等(共可读9个寄存器)
    delay_18B20(100);
    a=ReadOneChar();     //读取温度值低位
 b=ReadOneChar();     //读取温度值高位
 temp1=b<<4;
 temp1+=(a&0xf0)>>4;
 temp2=a&0x0f;
    temp=((b*256+a)>>4);    //当前采集温度值除16得实际温度值
}

/***************液晶显示子函数1正常显示*****************/

void displayfun1(void)

 WriteCommandLCM(0x0c);         //显示屏打开,光标不显示,不闪烁,检测忙信号 
 DisplayListChar(0,0,str0); 
 DisplayListChar(0,1,str1); 
                 
 DisplayOneChar(3,0,hour/10+0x30);      //液晶上显示小时
 DisplayOneChar(4,0,hour%10+0x30);

 DisplayOneChar(6,0,minite/10+0x30);   //液晶上显示分
 DisplayOneChar(7,0,minite%10+0x30);
 
 DisplayOneChar(9,0,seconde/10+0x30);     //液晶上显示秒
 DisplayOneChar(10,0,seconde%10+0x30);

 DisplayOneChar(4,1,K/10+0x30);       //液晶上显示设定的温度
 DisplayOneChar(5,1,K%10+0x30);
 
    DisplayOneChar(11,1,temp1/10+0x30);         //液晶上显示测得的温度 
 DisplayOneChar(12,1,temp1%10+0x30);
 DisplayOneChar(14,1,temp2/10+0x30);

 if(ON_OFF==0)            //若温控标志为0
 {
  DisplayOneChar(14,0,0x4f);      // 液晶上显示不控温的标志
  DisplayOneChar(15,0,0x46);
 }
 else
 {
  DisplayOneChar(14,0,0x4f);      // 液晶上显示控温的标志
  DisplayOneChar(15,0,0x4e);
  if(outflag==1)
      DisplayOneChar(0,0,0x7c);     
     else
   DisplayOneChar(0,0,0xef);
 }
}
/**************键盘扫描子函数******************/
void keyscan(void)
{
 uchar xx;                                           //局部变量
 P1=0xff;
 if(P1!=0xff)
   {
     delay_LCM(50);

  if(P1!=0xff)
    { 
   xx=P1;
   switch(xx)                    // 根据按键状态,调用不同的子函数
   {
    case 0xfe:set_adj();       break;              
    case 0xfd:inc_key();       break;              
    case 0xfb:dec_key();       break;              
    case 0xf7:{delay_LCM(150);ON_OFF=!ON_OFF;while(!BLUE_ALARM);}  break;
    default:break;
   }
     }
  }
}
/**************设定工作模式子函数****************/
void set_adj(void)
{
 delay_LCM(100);
 set++;
    if(set>=4)set=0;
 while(!RED_ALARM);  
}

/////////24C02读写驱动程序////////////////////

void delay1(uchar x)

 uint i;
 for(i=0;i<x;i++);
}
void flash()
{  ;  ; }
void x24c02_init()  //24c02初始化子程序
{
 scl=1;
 flash();
 sda=1;
 flash();
}
void start()        //启动I2C总线
{
 sda=1;
 flash();
 scl=1;
 flash();
 sda=0;
 flash();
 scl=0;
 flash();
}
void stop()         //停止I2C总线
{
 sda=0;
 flash();
 scl=1;
 flash();
 sda=1;
 flash();
}
void writex(uchar j)  //写一个字节

 uchar i,temp;
    temp=j;
    for (i=0;i<8;i++)
  {
   temp=temp<<1;
   scl=0;
   flash();
   sda=CY;
   flash();
   scl=1;
   flash();
  }

 scl=0;
 flash();
 sda=1;
 flash();
}
uchar readx()   //读一个字节
{
 uchar i,j,k=0;
 scl=0;
 flash();
 sda=1;
    for (i=0;i<8;i++)
  { 
   flash();
   scl=1;
   flash();
   if (sda==1) j=1;
   else j=0;
   k=(k<<1)|j;
   scl=0;
  }
 flash();
 return(k);
}
void clock()         //I2C总线时钟
{
 uchar i=0;
 scl=1;
 flash();
 while ((sda==1)&&(i<255))i++;
 scl=0;
 flash();
}
/***********定时器t0中断子函数**************/
void timer0(void) interrupt 1 using 0          //定时器0方式1,50ms中断一次
{
     TH0=0x3c;
     TL0=0xb0;
     mstcnt++;
     if(mstcnt>=20 )  {seconde++; write=1; mstcnt=0; }
  if(seconde>=60)  {minite++;  seconde=0;}
  if(minite>=60 )  {hour++;    minite=0; }
  if(hour>=24   )  {hour=0;}
  keyscan( );                               //按键扫描
}

/***********the main funtion*************/
   
void main(void)
{
P1=0xff;                                       //初始化p1口,全设为1
 x24c02_init();                                          //初始化24C02
    K=x24c02_read(2);                                       //读出保存的数据赋于K
 seconde=x24c02_read(4);
 minite=x24c02_read(6);
 hour=x24c02_read(8);      
 delay_LCM(500);                                         //延时
}





用keil进行编译的时候出现这四个情况,如果要增加程序。能否帮助一下~~~拜谢了~




关键词: 语言     程序     出现     错误     好像     是有     两个     没有         

专家
2011-06-28 16:38:45     打赏
2楼
没有这几个函数啊?你自己加上去就行

高工
2011-06-29 09:40:18     打赏
3楼
LZ的程序里面根本就没有这几个函数

共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]