📄 user.c
字号:
key_temp1=0;
count_i++;
}
key_temp1=0;
while(key_temp1!=15)
{
key_f1=0;
while(key_f1==0)
{
key_f1=key_scan_delay();
*P_Watchdog_Clear=0x01;
}
key_temp1=get_keyvalue();
}
PutChar(count_i*5+20,20,'O');
PutChar(count_i*5+25,20,'K');
data_key=(number[0]-48)*10+(number[2]-48);
key_temp1=read_flash(data_addr);
if(key_temp1==0xffff)//说明是第一次擦写
{
page_erase(data_addr);//擦除相应的页
switch(data_key)
{
case 10:write_flash(0x0001,data_addr);break;
case 11:write_flash(0x0002,data_addr);break;
case 12:write_flash(0x0004,data_addr);break;
case 20:write_flash(0x0008,data_addr);break;
case 21:write_flash(0x0010,data_addr);break;
case 22:write_flash(0x0020,data_addr);break;
case 30:write_flash(0x0040,data_addr);break;
case 31:write_flash(0x0080,data_addr);break;
case 32:write_flash(0x0100,data_addr);break;
default:break;
}
}
else
{
page_erase(data_addr);//擦除相应的页
switch(data_key)
{
case 10:write_flash((0x0001|key_temp1),data_addr);break;
case 11:write_flash((0x0002|key_temp1),data_addr);break;
case 12:write_flash((0x0004|key_temp1),data_addr);break;
case 20:write_flash((0x0008|key_temp1),data_addr);break;
case 21:write_flash((0x0010|key_temp1),data_addr);break;
case 22:write_flash((0x0020|key_temp1),data_addr);break;
case 30:write_flash((0x0040|key_temp1),data_addr);break;
case 31:write_flash((0x0080|key_temp1),data_addr);break;
case 32:write_flash((0x0100|key_temp1),data_addr);break;
default:break;
}
}
}
///////////////////////////////////////////
//函数:void looking_hanshu(void)
//描述:查询车库现有存车情况,并在lcd上显示结果
//参数:无
//返回:无
/////////////////////////////////////////////
void looking_hanshu(void)
{
unsigned int temp_num=0;
unsigned char gg[27]="3-2,3-1,3-0,2-2,2-1,2-0,1-2,1-1,1-0";
unsigned int gg_i=0;
temp_num=read_flash(data_addr);
for(gg_i=0;gg_i<9;gg_i++)
{
if(temp_num&0x0100)
{//在这里还要显示汉字:已经存有车的车库
PutChar(gg_i,3,gg[gg_i]);
PutChar(gg_i+1,3,gg[gg_i+1]);
PutChar(gg_i+2,3,gg[gg_i+2]);
PutChar(gg_i+3,3,gg[gg_i+3]);
}
else
{//在这里还要显示汉字:还没有存有车的车库
PutChar(gg_i,3,gg[gg_i]);
PutChar(gg_i+1,3,gg[gg_i+1]);
PutChar(gg_i+2,3,gg[gg_i+2]);
PutChar(gg_i+3,3,gg[gg_i+3]);
}
temp_num<<=1;
*P_Watchdog_Clear=0x01;
}
*P_Watchdog_Clear=0x01;
}
///////////////////////////////////////////
//函数:void control(unsigned int E_num,unsigned int left,unsigned int right)
//描述:电机控制函数
//参数:1号电机的使能位,上拉控制位,下放控制位
//返回:无
/////////////////////////////////////////////
void control(unsigned int left,unsigned int right)
{
init_control();
lab1:while(P1_0==0)//P1_0说明有挡板经过
{
//上拉电机表示1号电机
if(left==1)
{
P1_9=1;
P1_11=1;
P1_12=0;
asm("nop");
}
if(right==1)
{
P1_9=1;
P1_11=0;
P1_12=1;
}
*P_Watchdog_Clear=0x01;
}
if(P1_0==1)
{
delay();
if(P1_0==1)
{
P1_9=0;
}
else
{
goto lab1;
}
}
else
{
goto lab1;
}
}
///////////////////////////////////////////
//函数:void control_con(unsigned int E_num,unsigned int left,unsigned int right)
//描述:电机控制函数
//参数:1号电机的使能位,上拉控制位,下放控制位
//返回:无
/////////////////////////////////////////////
void control_con(unsigned int left,unsigned int right)
{
init_control();
lab2:while(P1_0==1)//P1_0说明有挡板经过
{
//上拉电机表示1号电机
if(left==1)
{
P1_9=1;
P1_11=1;
P1_12=0;
asm("nop");
}
if(right==1)
{
P1_9=1;
P1_11=0;
P1_12=1;
}
*P_Watchdog_Clear=0x01;
}
if(P1_0==0)
{
delay();
if(P1_0==0)
{
P1_9=0;
}
else
{
goto lab2;
}
}
else
{
goto lab2;
}
}
///////////////////////////////////////////
//函数:void control1(unsigned int E_num,unsigned int left,unsigned int right)
//描述:电机控制函数
//参数:2号电机的使能位,左转控制位,右转控制位,横行经过的传感器的个数
//返回:无
/////////////////////////////////////////////
void control1(unsigned int left,unsigned int right)
{
init_control();
lab3:while(P1_1==0)//P1_1说明有挡板经过
{
//上拉电机表示1号电机
if(left==1)
{
P1_10=1;
P1_13=1;
P1_14=0;
}
if(right==1)
{
P1_10=1;
P1_13=0;
P1_14=1;
}
*P_Watchdog_Clear=0x01;
}
if(P1_1==1)
{
delay();
if(P1_1==1)
{
P1_10=0;
}
else
{
goto lab3;
}
}
else
{
goto lab3;
}
}
///////////////////////////////////////////
//函数:void control1_con(unsigned int E_num,unsigned int left,unsigned int right)
//描述:电机控制函数
//参数:2号电机的使能位,左转控制位,右转控制位,横行经过的传感器的个数
//返回:无
/////////////////////////////////////////////
void control1_con(unsigned int left,unsigned int right)
{
init_control();
lab4:while(P1_1==1)//P1_1说明有挡板经过
{
//上拉电机表示1号电机
if(left==1)
{
P1_10=1;
P1_13=1;
P1_14=0;
}
if(right==1)
{
P1_10=1;
P1_13=0;
P1_14=1;
}
*P_Watchdog_Clear=0x01;
}
if(P1_1==0)
{
delay();
if(P1_1==0)
{
P1_10=0;
}
else
{
goto lab4;
}
}
else
{
goto lab4;
}
}
///////////////////////////////////////////
//函数:void control2(unsigned int E_num,unsigned int left,unsigned int right)
//描述:电机控制函数
//参数:3号电机的使能位,开门控制位,关门控制位
//返回:无
/////////////////////////////////////////////
void control2(unsigned int left,unsigned int right)
{
init_control();
//3号电机
if(left==1)
{
P1_15=1;
P1_2=1;
P1_4=0;
delay1();//要测试延时,
}
if(right==1)
{
P1_15=1;
P1_2=0;
P1_4=1;
delay1();//要测试延时,
}
}
///////////////////////////////////////////
//函数:void init_control(void);
//描述:电机控制的时候端口初始化
//参数:无
//返回:无
/////////////////////////////////////////////
void init_control(void)
{
PB_Dir->byte.byteh=0xff;
PB_Attrib->byte.byteh=0xff;
PB->byte.byteh=0x00;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -