📄 main.c
字号:
// LCD D0~D7接IOA0~IOA7
// LCD_CS 接高电平/接IOB2
// LCD_AO 接IOB5
// LCD_RW 接IOB6
// LCD_EP 接IOB7
//#include "LCD_Dis.h"
#include<spce061a_chf.h>
#include"host.h"
#include "test.h"
#include"bit.h"
#define error 0xf001//接收到错误的信号时候发出的命令
#define sure_single 0xf00f//到达目的地的命令
unsigned int *data_addr11=0xf200;
extern data_key;
///////////////////////////////////////////
//函数:int main(void)
//描述:先接收从机发送的信息,在等待键盘输入,接着控制电机上拉,到达位置后通知从机进车库,从机到位后,发送
/////// 完毕命令,主机接收到后控制电机回到原位
//参数:无
//返回:无
/////////////////////////////////////////////
int main(void)
{
unsigned int key_flag=0;//键盘按下标志
unsigned int key_wait=0;//控制键盘按下的命令
unsigned int state_flag=0; //五种状态的标志
unsigned int key_value_data=0;//保存键值
unsigned int temp_data=0;//用于接收数据
*(volatile unsigned int *)0x7013 = 0x0013;
*(volatile unsigned int *)0x7010 = 0x0008;
system_init();
asm("irq on");
if(key_wait==0)
{
LCD_InIt();
SetPaintMode(0,0xffff);
FontSet(0,0);
FontSet(1,0xffff);
LCD501_Bitmap(16,1,(unsigned int *)encoding_00);
LCD501_Bitmap(32,1,(unsigned int *)encoding_01);
LCD501_Bitmap(48,1,(unsigned int *)encoding_02);
LCD501_Bitmap(64,1,(unsigned int *)encoding_03);
LCD501_Bitmap(80,1,(unsigned int *)encoding_04);
LCD501_Bitmap(96,1,(unsigned int *)encoding_05);
LCD501_Bitmap(0,20,(unsigned int *)encoding_06);
LCD501_Bitmap(16,20,(unsigned int *)encoding_07);
LCD501_Bitmap(32,20,(unsigned int *)encoding_08);
LCD501_Bitmap(48,20,(unsigned int *)encoding_09);
LCD501_Bitmap(64,20,(unsigned int *)encoding_0a);
LCD501_Bitmap(80,20,(unsigned int *)encoding_0b);
LCD501_Bitmap(96,20,(unsigned int *)encoding_0c);
LCD501_Bitmap(0,40,(unsigned int *)encoding_0d);
LCD501_Bitmap(16,40,(unsigned int *)encoding_0e);
LCD501_Bitmap(32,40,(unsigned int *)encoding_0f);
LCD501_Bitmap(48,40,(unsigned int *)encoding_10);
LCD501_Bitmap(64,40,(unsigned int *)encoding_11);
LCD501_Bitmap(80,40,(unsigned int *)encoding_12);
LCD501_Bitmap(96,40,(unsigned int *)encoding_13);
}
while(1)
{
state_flag=read_flash(data_addr11);
*(unsigned int *)0x7012 = 1; //清狗
if(state_flag==0xffff)
{
state_flag=0;
}
while(state_flag==0)//主机处在接收状态
{
temp_data=Rx_hanshu();
/*if(temp_data==0x0f0f)
{
state_flag++;
key_wait=1;
break;
}
else
{
Tx_hanshu(error);
}*/
while(temp_data!=0x0f0f)
{
temp_data=Rx_hanshu();
}
state_flag++;
key_wait=1;
//break;
}
page_erase(data_addr11);//擦除相应的页
write_flash(state_flag,data_addr11);
LCD_InIt();
SetPaintMode(0,0xffff);
FontSet(0,0);
FontSet(1,0xffff);
LCD501_Bitmap(0,1,(unsigned int *)encoding_14);//??????????????????/还要该显示序号
LCD501_Bitmap(16,1,(unsigned int *)encoding_15);
LCD501_Bitmap(32,1,(unsigned int *)encoding_16);
//LCD501_Bitmap(48,1,(unsigned int *)encoding_03);
while(key_wait==1)
{
while(key_scan_delay()==0)
{
key_flag=key_scan_delay();
*P_Watchdog_Clear=0x01;
}
key_value_data=get_keyvalue();
switch(key_value_data)
{
case input:input_hanshu();key_wait=0;break;
case look:looking_hanshu();key_wait=0;break;
default:break;
}
}
key_wait=1;
while(state_flag==1)
{
//在这里控制电机
if(data_key/10==1)//上到1楼
{
control(1,0);
//P1_9=0;
}
else if(data_key/10==2)//上到2楼
{
control(1,0);
control_con(1,0);
control(1,0);
//P1_9=0;
}
else if(data_key/10==3)//上到3楼
{
control(1,0);
control_con(1,0);
control(1,0);
control_con(1,0);
control(1,0);
//P1_9=0;
}
if(data_key%10==0)//横移动到第一列
{
control1(1,0);
//P1_10=0;
}
else if(data_key%10==1)//横移动到第二列
{
control1(1,0);
control1_con(1,0);
control1(1,0);
//P1_10=0;
}
else if(data_key%10==2)//横移动到第三列
{
control1(1,0);
control1_con(1,0);
control1(1,0);
control1_con(1,0);
control1(1,0);
//P1_10=0;
}
asm("nop");
control2(0,1);//控制开门
P1_15=0;
state_flag++;
}
page_erase(data_addr11);//擦除相应的页
write_flash(state_flag,data_addr11);
while(state_flag==2)
{
for(temp_data=0;temp_data<0x0f;temp_data++)
{
Tx_hanshu(sure_single);
*P_Watchdog_Clear=0x01;
//temp_data=Rx_hanshu();
//while(temp_data==0x0f01)
//{
// temp_data=Rx_hanshu();
//}
}
state_flag++;
}
page_erase(data_addr11);//擦除相应的页
*P_Watchdog_Clear=0x01;
write_flash(state_flag,data_addr11);
while(state_flag==3)
{
temp_data=Rx_hanshu();
while(temp_data!=0x0f02)
{
//Tx_hanshu(error);
temp_data=Rx_hanshu();
*P_Watchdog_Clear=0x01;
}
state_flag++;
}
page_erase(data_addr11);//擦除相应的页
*P_Watchdog_Clear=0x01;
write_flash(state_flag,data_addr11);
while(state_flag==4)
{
//在这里控制电机
control2(1,0);//控制关门
delay1();//要测试延时,
delay1();//要测试延时,
delay1();//要测试延时,
P1_15=0;
if(data_key%10==0)//从第一列横移动到旁边
{
control1_con(0,1);
*P_Watchdog_Clear=0x01;
control1(0,1);
*P_Watchdog_Clear=0x01;
control1_con(0,1);
*P_Watchdog_Clear=0x01;
P1_10=0;
}
else if(data_key%10==1)//从第二列横移动到旁边
{
control1_con(0,1);
*P_Watchdog_Clear=0x01;
control1(0,1);
*P_Watchdog_Clear=0x01;
control1_con(0,1);
*P_Watchdog_Clear=0x01;
control1(0,1);
*P_Watchdog_Clear=0x01;
control1_con(0,1);
*P_Watchdog_Clear=0x01;
P1_10=0;
}
else if(data_key%10==2)//从第三列横移动到旁边
{
control1_con(0,1);
*P_Watchdog_Clear=0x01;
control1(0,1);
*P_Watchdog_Clear=0x01;
control1_con(0,1);
*P_Watchdog_Clear=0x01;
control1(0,1);
*P_Watchdog_Clear=0x01;
control1_con(0,1);
*P_Watchdog_Clear=0x01;
control1(0,1);
*P_Watchdog_Clear=0x01;
control1_con(0,1);
*P_Watchdog_Clear=0x01;
P1_10=0;
}
if(data_key/10==1)//下到1楼
{
control_con(0,1);
*P_Watchdog_Clear=0x01;
control(0,1);
*P_Watchdog_Clear=0x01;
control_con(0,1);
*P_Watchdog_Clear=0x01;
P1_9=0;
}
else if(data_key/10==2)//下到2楼
{
control_con(0,1);
*P_Watchdog_Clear=0x01;
control(0,1);
*P_Watchdog_Clear=0x01;
control_con(0,1);
*P_Watchdog_Clear=0x01;
control(0,1);
*P_Watchdog_Clear=0x01;
control_con(0,1);
*P_Watchdog_Clear=0x01;
P1_9=0;
}
else if(data_key/10==3)//下到3楼
{
control_con(0,1);
*P_Watchdog_Clear=0x01;
control(0,1);
*P_Watchdog_Clear=0x01;
control_con(0,1);
*P_Watchdog_Clear=0x01;
control(0,1);
*P_Watchdog_Clear=0x01;
control_con(0,1);
*P_Watchdog_Clear=0x01;
control(0,1);
*P_Watchdog_Clear=0x01;
control_con(0,1);
*P_Watchdog_Clear=0x01;
P1_9=0;
}
state_flag++;
}
page_erase(data_addr11);//擦除相应的页
*P_Watchdog_Clear=0x01;
write_flash(state_flag,data_addr11);
*P_Watchdog_Clear=0x01;
state_flag=5;
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -