[求助] keil 编译出现“target not created”

小弘帽   2015-11-25 09:33 楼主
我用keil4编的51 编译如下程序时出现Target not created,keil已破解,自带的“Hello”工程也可以成功编译,紧急求助解决方法!                                                                                                                    #include#include#include#define uint unsigned int #define uchar unsigned char//*******LCD*******sbit LCDRS=P2^0;//LCD数据/命令选择端sbit LCDRW=P2^1;sbit LCDEN=P2^2;//LCD使能信号端//******DS1302******sbit IO=P1^0;//1302数据线sbit SCLK=P1^1;    //1302时钟线  sbit RST=P1^2;      //复位    uint num=0;  //uchar *week[]={"SUN","***","MON","TUS","WEN","THU","FRI","SAT"}; uchar Date[]={"Date: 2000-00-00 "}; uchar Time[]={"Time: *00:00-00* "}; uchar date_time[7];      //从ds1302读取的当前日期时间  //=======延时=======void delay(uint z) {    uint x,y;    for(x=z;x>0;x--)      for(y=110;y>0;y--);  }  //********向1302写数据********* void write_ds1302(uchar dat) {     uchar i;     for(i=0;i<8;i++)     {   IO=dat & 0x01;      //保持最后一位为1,读状态       SCLK=1;              delay(1);              SCLK=0;              dat >>= 1;           }  }  //*********从1302读数据********* uchar read_ds1302() {     uchar i,b=0x00;     for(i=0;i<8;i++)     {            b |= _crol_((uchar)IO,i);               SCLK=1;              delay(1);              SCLK=0;      }      return b/16*10+b%16;      //与BCD码转换  }  //*********从指定位置读数据********uchar read_data(uchar addr) {     uchar dat;     RST=0;     SCLK=0;     RST=1;      write_ds1302(addr);     dat=read_ds1302();     SCLK=1;     RST=0;     return dat;   }  //*********读取当前日期时间********* void read_date_time() {     uchar i,addr=0x81;     for(i=0;i<7;i++)    {        date_time=read_data(addr);            addr+=2;           }  }  //----------LCD写指令---------- void lcd_write_com(uchar com) {     LCDRS=0;  //RS为0时,写指令,RS为1时,写数据      P0=com;      delay(5);    LCDEN=1;     delay(5);     LCDEN=0;  }  //----------LCD写数据---------- void lcd_write_data(uchar dat){    LCDRS=1;     P0=dat;     delay(5);     LCDEN=1;     delay(5);     LCDEN=0;  }  //-------LCD初始化------- void lcd_init() {     LCDEN=0;      lcd_write_com(0x38);   //LCD显示模式设置     lcd_write_com(0x0c);   //LCD显示开/关及光标设置      lcd_write_com(0x06);   //当写一个字符后地址指针加1,且光标加1      lcd_write_com(0x01);   //显示清屏  }  //---------设置液晶显示位置----------- void set_lcd_pos(uchar p) {    lcd_write_com(p | 0x80); }  //---------液晶显示程序---------- void lcd_print(uchar p,uchar *s) {     set_lcd_pos(p);      for(num=0;num<16;num++)         {                   lcd_write_data(s[num]);            delay(10);             }  }  //----------日期时间转换----------- void format_datetime(uchar d,uchar *p) {     p[0]=d/10+'0';     p[1]=d%10+'0';  }//---------主程序---------- void main() {     LCDRW=0;     lcd_init();     while(1)     {        read_date_time();             format_datetime(date_time[6],Date+8);     //年月日         format_datetime(date_time[4],Date+11);            format_datetime(date_time[3],Date+14);          //   strcpy(Date+13,week[date_time[5]]);            format_datetime(date_time[2],Time+7);     //时间转换             format_datetime(date_time[1],Time+10);            format_datetime(date_time[0],Time+13);            lcd_print(0x00,Date);            lcd_print(0x40,Time);         }}编译结果:
Build target 'Target 1'
compiling show time.c...
Target not created

无标题.png











回复评论 (15)

你还是一步一步的来吧,组建编译,先看看有没有语法错误或者配置上有没有错。
一般没有目标文件生成不都是因为有语法上面的错误吗
点赞  2015-11-25 09:41
用代码工具贴程序,不要直接复制粘贴,这样就没法看。
点赞  2015-11-25 09:43
#include
#include
#include
#define uint unsigned int
#define uchar unsigned char
//*******LCD*******
sbit LCDRS=P2^0;//LCD数据/命令选择端
sbit LCDRW=P2^1;
sbit LCDEN=P2^2;//LCD使能信号端
//******DS1302******
sbit IO=P1^0;//1302数据线
sbit SCLK=P1^1;    //1302时钟线  
sbit RST=P1^2;      //复位   
uint num=0;  
//uchar *week[]={"SUN","***","MON","TUS","WEN","THU","FRI","SAT"};
uchar Date[]={"Date: 2000-00-00 "};
uchar Time[]={"Time: *00:00-00* "};
uchar date_time[7];      //从ds1302读取的当前日期时间  
//=======延时=======
void delay(uint z)
{  
  uint x,y;  
  for(x=z;x>0;x--)   
  for(y=110;y>0;y--);  
}  
//********向1302写数据*********
void write_ds1302(uchar dat)
{  
   uchar i;  
   for(i=0;i<8;i++)  
   {   IO=dat & 0x01;      //保持最后一位为1,读状态
       SCLK=1;   
           delay(1);   
           SCLK=0;   
           dat >>= 1;   
        }  
}  
//*********从1302读数据*********
uchar read_ds1302()
{  
   uchar i,b=0x00;  
   for(i=0;i<8;i++)  
   {     
       b |= _crol_((uchar)IO,i);
              SCLK=1;   
           delay(1);   
           SCLK=0;   
   }   
   return b/16*10+b%16;      //与BCD码转换  
}  
//*********从指定位置读数据********
uchar read_data(uchar addr)
{  
   uchar dat;  
   RST=0;  
   SCLK=0;  
   RST=1;   
   write_ds1302(addr);  
   dat=read_ds1302();  
   SCLK=1;  
   RST=0;  
   return dat;   
}  
//*********读取当前日期时间*********
void read_date_time()
{  
   uchar i,addr=0x81;  
   for(i=0;i<7;i++)
   {   
     date_time[i]=read_data(addr);   
         addr+=2;  
         }  
}  
//----------LCD写指令----------
void lcd_write_com(uchar com)
{  
   LCDRS=0;  //RS为0时,写指令,RS为1时,写数据   
   P0=com;   
   delay(5);
   LCDEN=1;  
   delay(5);  
   LCDEN=0;  
}  
//----------LCD写数据----------
void lcd_write_data(uchar dat)
{
   LCDRS=1;  
   P0=dat;  
   delay(5);  
   LCDEN=1;  
   delay(5);  
   LCDEN=0;  
}  
//-------LCD初始化-------
void lcd_init()
{  
   LCDEN=0;   
   lcd_write_com(0x38);   //LCD显示模式设置  
   lcd_write_com(0x0c);   //LCD显示开/关及光标设置   
   lcd_write_com(0x06);   //当写一个字符后地址指针加1,且光标加1   
   lcd_write_com(0x01);   //显示清屏  
}  
//---------设置液晶显示位置-----------
void set_lcd_pos(uchar p)
{
   lcd_write_com(p | 0x80);
}  
//---------液晶显示程序----------
void lcd_print(uchar p,uchar *s)
{  
   set_lcd_pos(p);   
   for(num=0;num<16;num++)      
   {             
     lcd_write_data(s[num]);   
         delay(10);   
         }  
}  
//----------日期时间转换-----------
void format_datetime(uchar d,uchar *p)
{  
   p[0]=d/10+'0';  
   p[1]=d%10+'0';  
}
//---------主程序----------
void main()
{  
   LCDRW=0;  
   lcd_init();  
   while(1)  
   {   
     read_date_time();   
         format_datetime(date_time[6],Date+8);     //年月日
         format_datetime(date_time[4],Date+11);   
         format_datetime(date_time[3],Date+14);
         //   strcpy(Date+13,week[date_time[5]]);   
         format_datetime(date_time[2],Time+7);     //时间转换   
         format_datetime(date_time[1],Time+10);   
         format_datetime(date_time[0],Time+13);   
         lcd_print(0x00,Date);   
         lcd_print(0x40,Time);
         }
}
点赞  2015-11-25 09:50
语法上有错误应该有相应提示,觉得配置错误的可能性比较大
君应有语,渺万里层云,千山暮雪,知向谁边?
点赞  2015-11-25 09:51
引用: 郑小气聋子 发表于 2015-11-25 09:41
你还是一步一步的来吧,组建编译,先看看有没有语法错误或者配置上有没有错。
一般没有目标文件生成不都是 ...

可是语法错误一般都会有提示的
点赞  2015-11-25 09:53
引用: dcexpert 发表于 2015-11-25 09:43
用代码工具贴程序,不要直接复制粘贴,这样就没法看。

嗯,程序重新复制了
点赞  2015-11-25 09:54
引用: 我的学号 发表于 2015-11-25 09:51
语法上有错误应该有相应提示,觉得配置错误的可能性比较大

你是说对“Target1”的配置吗
点赞  2015-11-25 09:55
直接编译没有错误,估计是参数配置上问题。可以把完整程序打包上传。
点赞  2015-11-25 10:11
引用: dcexpert 发表于 2015-11-25 10:11
直接编译没有错误,估计是参数配置上问题。可以把完整程序打包上传。

4楼的程序就是完整的,参数配置问题?
点赞  2015-11-25 11:09
引用: 小弘帽 发表于 2015-11-25 11:09
4楼的程序就是完整的,参数配置问题?

整个工程文件,配置部分是不在C文件中的。
点赞  2015-11-25 11:14
引用: dcexpert 发表于 2015-11-25 11:14
整个工程文件,配置部分是不在C文件中的。

这个知道,对“Target 1”的配置,应该也没错啊
点赞  2015-11-25 11:17
编译过程中是不是弹出什么异常对话框了?
建议全工程打包附上来
点赞  2015-11-25 11:23
引用: sjtitr 发表于 2015-11-25 11:23
编译过程中是不是弹出什么异常对话框了?
建议全工程打包附上来

程序.zip (4.3 KB)
(下载次数: 25, 2015-11-25 22:51 上传)

点赞  2015-11-25 22:51
新建c文件的名字不要有空格,keil软件编译时,文件名称有空格会出错,具体原理不太清除,有了解的大神可以解释下。
点赞  2018-5-30 10:10
工程文件不完整,你新建一个,重新添加一下
点赞  2018-5-30 22:28
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复