keli4编译程序总是出现LCD1602.H(163): error C202: 'P1_5': undefined identifier

卑微小莫 2020-04-27 08:04:47
Build target 'Target 1'
compiling 单片机DS1302电子打铃系统 LCD1602显示.C...
LCD1602.H(163): error C202: 'P1_5': undefined identifier
LCD1602.H(171): error C202: 'P1_5': undefined identifier
LCD1602.H(183): error C202: 'P1_5': undefined identifier
LCD1602.H(191): error C202: 'P1_5': undefined identifier
LCD1602.H(198): error C202: 'P1_5': undefined identifier
LCD1602.H(212): error C202: 'P1_7': undefined identifier
LCD1602.H(217): error C202: 'P1_7': undefined identifier
LCD1602.H(225): error C202: 'P1_7': undefined identifier
单片机DS1302电子打铃系统 LCD1602显示.C(1312): warning C316: unterminated conditionals
Target not created

源代码为

#ifndef _LCD1602_H_
#define _LCD1602_H_

#define uchar unsigned char
#define uint unsigned int

#define data_1602 P0
uchar code table_num[]="0123456789abcdefg";

sbit rs=P2^5; //寄存器选择信号 H:数据寄存器 L:指令寄存器
sbit rw=P2^6; //寄存器选择信号 H:数据寄存器 L:指令寄存器
sbit e =P2^7; //片选信号 下降沿触发

/***********************延时函数************************/
void delay_uint(uint q)
{
while(q--);
}

/***********************lcd1602写命令函数************************/
void write_com(uchar com)
{
e=0;
rs=0;
rw=0;
P0=com;
delay_uint(3);
e=1;
delay_uint(25);
e=0;
}

/***********************lcd1602写数据函数************************/
void write_data(uchar dat)
{
e=0;
rs=1;
rw=0;
P0=dat;
delay_uint(3);
e=1;
delay_uint(25);
e=0;
}

/***********************lcd1602初始化设置************************/
void init_1602() //lcd1602初始化设置
{
write_com(0x38); //
write_com(0x0c);
write_com(0x06);
}

/***********************lcd1602上显示两位十进制数************************/
void write_sfm1(uchar hang,uchar add,uchar date)
{
if(hang==1)
write_com(0x80+add);
else
write_com(0x80+0x40+add);
write_data(0x30+date % 10);
}

/***********************lcd1602上显示两位十进制数************************/
void write_sfm2_ds1302(uchar hang,uchar add,uchar date)
{
uchar shi,ge;
if(hang==1)
write_com(0x80+add);
else
write_com(0x80+0x40+add);
shi=date/16;
ge=date%16;

write_data(table_num[shi]);
write_data(table_num[ge]);
}

/***********************lcd1602上显示这字符函数************************/
void write_string(uchar hang,uchar add,uchar *p)
{
if(hang==1)
write_com(0x80+add);
else
write_com(0x80+0x40+add);
while(1)
{
if(*p == '\0') break;
write_data(*p);
p++;
}
}

/*****************控制光标函数********************/
void write_guanbiao(uchar hang,uchar add,uchar date)
{
if(hang==1)
write_com(0x80+add);
else
write_com(0x80+0x40+add);
if(date == 1)
write_com(0x0f); //显示光标并且闪烁
else
write_com(0x0c); //关闭光标
}


/****************开机液晶显示函数 初始化液晶的内容********************************/
void init_1602_dis_csf() //初始化液晶
{
write_string(1,0," : : W: ");
write_string(2,0," 20 - - ");

}














#ifndef _LED_H_
#define _LED_H_
unsigned char flag_beep_en;

//定义小车驱动模块输入IO口

sbit IN3=P1^5;
sbit IN4=P1^6;

sbit EN2=P1^7;



#define Right_moto_pwm P1_7 //PWM信号端


#define Right_moto_go {P1_5=1,P1_6=0;} //右边电机向前走
#define Right_moto_back {P1_5=0,P1_6=1;} //右边电机向后走
#define Right_moto_Stop {P1_5=0,P1_6=0;} //右边电机停转


unsigned char pwm_val_right =0;
unsigned char push_val_right=0;// 右电机占空比N/20
bit Right_moto_stop=1;

unsigned int time3=0;


//前速前进
void run(void)
{

push_val_right=35;

Right_moto_go ; //右电机往前走
flag_beep_en = 0;
}
void run_1(void)
{

push_val_right=3;

Right_moto_go ; //右电机往前走
flag_beep_en = 0;
}



//前速后退
void back(void)//后退
{

push_val_right=35;

Right_moto_back ; //右电机往前走
flag_beep_en = 0;
}
void back_1(void)//后退
{

push_val_right=3;

Right_moto_back ; //右电机往前走
flag_beep_en = 0;
}

//停止
void stop(void)
{
Right_moto_Stop;
flag_beep_en = 0;

}


/******************************************************************/
/* 右电机调速 */
void pwm_out_right_moto(void)
{
if(Right_moto_stop)
{
if(pwm_val_right<=push_val_right)
{
Right_moto_pwm=1;

}
else
{
Right_moto_pwm=0;

}
if(pwm_val_right>=40)
pwm_val_right=0;
}
else
{
Right_moto_pwm=0;

}
}

/***************************************************/
///*TIMER0中断服务子函数产生PWM信号*/
/*
void timer0()interrupt 1 using 2
{
TH0=0XFc; //1Ms定时
TL0=0X18;
time3++;

pwm_val_right++;

pwm_out_right_moto();
}
*/
/*********************************************************************/






#endif
...全文
2329 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
dceacho 2020-04-28
  • 打赏
  • 举报
回复
楼上说的对,这里要用 ; 而非 ,
#define Right_moto_go     {P1_5=1; P1_6=0;}
yishumei 2020-04-28
  • 打赏
  • 举报
回复
下面的宏定义错误 #define Right_moto_pwm P1_7 //PWM信号端 #define Right_moto_go {P1_5=1,P1_6=0;} //右边电机向前走 #define Right_moto_back {P1_5=0,P1_6=1;} //右边电机向后走 #define Right_moto_Stop {P1_5=0,P1_6=0;} //右边电机停转
worldy 2020-04-28
  • 打赏
  • 举报
回复
你的P1_5、P1_7没有定义 sbit P1_5=P1^5; sbit P1_7=P1^7;

27,511

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧