找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1296|回复: 2
收起左侧

大神们帮忙看看这程序为什么 编译没错误 build 的时候会出现目标未建立

[复制链接]
ID:717423 发表于 2020-3-28 10:57 | 显示全部楼层 |阅读模式
#include <reg51.h>
#include <intrins.h>                        //包含_nop_( )空函数指令的头文件
#define uchar unsigned char
#define uint unsigned int
#define out P3
sbit S1=P1^0;
sbit S2=P1^1;
sbit S3=P1^2;
sbit S4=P1^3;
sbit S5=P1^4;
sbit RS=P2^0;                         //位变量
sbit RW=P2^1;                                //位变量
sbit E=P2^2;                         //位变量
void key_scan(void);
void run(void);
void back(void);
void left(void);
void right(void);
void stop(void);
void lcd_initial(void);                        //LCD初始化函数
void check_busy(void);                 //检查忙标志函数
void write_command(uchar com);                 //写命令函数
void write_data(uchar dat);                //写数据函数
void string(uchar ad ,uchar *s);
void lcd_test(void);
void delay(uint);                                //延时函数
unsigned char keyval;  
void main(void)                         //主函数
{
        keyval=0;
        lcd_initial( );                        //调用对LCD初始化函数
      while(1)
      {
            key_scan();
                switch(keyval)
                {
                        case 1:run();
                        break;
                        case 2:back();
                        break;
                        case 3:left();
                        break;
                        case 4:right();
                        break;
                        case 5:stop();
                        break;
                }

                string(0x85,"51 car");                //显示的第1行字符串
            string(0xC2,"  NYNU WDXY");            //显示的第2行字符串
          
        }
}
void key_scan(void)
{
        P0=0xff;
        if((P1&0x0f)!=0x0f)
        {       
                if(S1==0)                      //按键k1被按下
                keyval=1;
                if(S2==0)                      //按键k2被按下
                keyval=2;
                if(S3==0)                      //按键k3被按下
                keyval=3;
                if(S4==0)                      //按键k4被按下
                keyval=4;
                if(S5==0);
                keyval=5;
        }       
}
void run(void)
{
        P0=0x35;

}
void bcak(void)
{
        P0=0x3a;
}
void left(void)
{
        P0=0x34;
}
void right(void)
{
        P0=0x31;
               
}
void stop(void)
{
        P0=0x30;
}
void check_busy(void)        //检查忙标志函数
{
        uchar dt;
        do
        {
            dt=0xff;
            E=0;
            RS=0;       
            RW=1;
          E=1;
          dt=out;
       }while(dt&0x80);
          E=0;
      }

void delay(uint j)        //1ms延时子程序
{
        uchar i=250;
        for(;j>0;j--)       
                 {
             while(--i);
             i=249;
             while(--i);
             i=250;
        }
}
void write_command(uchar com)  //写命令函数
{
     check_busy();
     E=0;
     RS=0;
     RW=0;
     out=com;
     E=1;
     _nop_( );
     E=0;
     delay(1);
}
void write_data(uchar dat)   //写数据函数
{
    check_busy();
    E=0;
    RS=1;
    RW=0;
    out=dat;
    E=1;
    _nop_();
    E=0;
    delay(1);       
}
void LCD_initial(void)                         //液晶显示器初始化函数
{
    write_command(0x38);        //写入命令0x38:8位两行显示,5×7点阵字符
    write_command(0x0C);        //写入命令0x0C:开整体显示,光标关,无黑块
    write_command(0x06);        //写入命令0x06:光标右移
    write_command(0x01);                         //写入命令0x01:清屏
    delay(1);
}
void string(uchar ad,uchar *s)        //输出显示字符串的函数
{
    write_command(ad);
    while(*s>0)
     {
         write_data(*s++);                        //输出字符串,且指针增1
         delay(100);
      }
}


回复

使用道具 举报

ID:452950 发表于 2020-3-28 13:24 | 显示全部楼层
c文件有没有加进工程里面
回复

使用道具 举报

ID:691449 发表于 2020-3-28 13:47 | 显示全部楼层
把源文件添加到工程就行了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表