⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 基于摩托罗拉(现在飞思卡尔)系列MC68HC908单片机开发车辆ECU系统!
💻 C
📖 第 1 页 / 共 3 页
字号:
flag10=0;
seat_status=front_stopped;
}else{
flag9=1;
}
}else if(flag9){
flag9=0;
flag10=1;
}
break;




case front_down_begun:
red_led=1; 
front_motor_move_down(); 
seat_status=front_down;
break;

case front_down:
if(margin_position_reached()||(front_motor_fault=motor_circuit_fault())){
seat_status=front_stopped; break;
}
if(!front_down_on){
if(!auto_on||speed_signal==1){
flag11=0;
flag12=0;
seat_status=front_stopped;
}else if(flag12){
flag12=0;
seat_status=front_stopped;
}else{
flag11=1;
}
}else if(flag11){
flag11=0;
flag12=1;
}
break;


case front_stopped:
front_motor_stop();
seat_status=none;
break;



case rear_up_begun:
red_led=1; 
rear_motor_move_up();
seat_status=rear_up;
break;

case rear_up:
if(margin_position_reached()||(rear_motor_fault=motor_circuit_fault())){
seat_status=rear_stopped; break;
}
if(!rear_up_on){
if(!auto_on||speed_signal==1){
flag13=0;
flag14=0;
seat_status=rear_stopped;
}else if(flag14){
flag14=0;
seat_status=rear_stopped;
}else{
flag13=1;
}
}else if(flag13){
flag13=0;
flag14=1;
}
break;

case rear_down_begun:
red_led=1; 
rear_motor_move_down();
seat_status=rear_down;
break;

case rear_down:
if(margin_position_reached()||(rear_motor_fault=motor_circuit_fault())){
seat_status=rear_stopped; break;
}
if(!rear_down_on){
if(!auto_on||speed_signal==1){
flag15=0;
flag16=0;
seat_status=rear_stopped;
}else if(flag16){
flag16=0;
seat_status=rear_stopped;
}else{
flag15=1;
}
}else if(flag15){
flag15=0;
flag16=1;
}
break;

case rear_stopped:
rear_motor_stop();
seat_status=none;
break;


case recall1:
red_led=1;
current_recall_stopped=0;
recall(slide_recall1_position,back_recall1_position,front_recall1_position,rear_recall1_position,left_mirror_recall1_x,left_mirror_recall1_y,right_mirror_recall1_x,right_mirror_recall1_y);
if(!current_recall_stopped){
mirror_position=1;
seat_status=none;

}
break;

case recall2:
red_led=1;
current_recall_stopped=0;
recall(slide_recall2_position,back_recall2_position,front_recall2_position,rear_recall2_position,left_mirror_recall2_x,left_mirror_recall2_y,right_mirror_recall2_x,right_mirror_recall2_y);
if(!current_recall_stopped){
mirror_position=2;
seat_status=none;
}
break;

case recall3:
red_led=1;
current_recall_stopped=0;
recall(slide_recall3_position,back_recall3_position,front_recall3_position,rear_recall3_position,left_mirror_recall3_x,left_mirror_recall3_y,right_mirror_recall3_x,right_mirror_recall3_y);
if(!current_recall_stopped){
mirror_position=3;
seat_status=none;
}
break;


case handed_recall1:
red_led=1;
current_recall_stopped=0;
recall(slide_recall1_position,back_recall1_position,front_recall1_position,rear_recall1_position,left_mirror_recall1_x,left_mirror_recall1_y,right_mirror_recall1_x,right_mirror_recall1_y);
if(!current_recall_stopped){
mirror_position=1;
seat_status=none;
}
break;

case handed_recall2:
red_led=1;
current_recall_stopped=0;
recall(slide_recall2_position,back_recall2_position,front_recall2_position,rear_recall2_position,left_mirror_recall2_x,left_mirror_recall2_y,right_mirror_recall2_x,right_mirror_recall2_y);
if(!current_recall_stopped){
mirror_position=2;
seat_status=none;
}
break;


case handed_recall3:
red_led=1;
current_recall_stopped=0;
recall(slide_recall3_position,back_recall3_position,front_recall3_position,rear_recall3_position,left_mirror_recall3_x,left_mirror_recall3_y,right_mirror_recall3_x,right_mirror_recall3_y);
if(!current_recall_stopped){
mirror_position=3;
seat_status=none;
}
break;

case reverse_recall:
red_led=1;
if(mirror_position==0){
mirror_recall(0x70,0x70,0x30,0x34);
mirror_recall(0x70,0x70,0x31,0x36);
}
if(mirror_position==1){
mirror_recall(left_mirror_reverse1_x,left_mirror_reverse1_y,0x30,0x34);
mirror_recall(right_mirror_reverse1_x,right_mirror_reverse1_y,0x31,0x36);
}
if(mirror_position==2){
mirror_recall(left_mirror_reverse2_x,left_mirror_reverse2_y,0x30,0x34);
mirror_recall(right_mirror_reverse2_x,right_mirror_reverse2_y,0x31,0x36);
}
if(mirror_position==3){
mirror_recall(left_mirror_reverse3_x,left_mirror_reverse3_y,0x30,0x34);
mirror_recall(right_mirror_reverse3_x,right_mirror_reverse3_y,0x31,0x36);
}
seat_status=none;
break;


case memory1_wait3S:
red_led=1;
timer_counter=0;
TBCR_TBON=1;                 //启动定时器
while(key1_on){
if(timer_counter>=3) break;
}
TBCR_TBON=0;                //关闭定时器
if(timer_counter>=3){
seat_status=memory1_ready;
}else{
seat_status=none;
}
break;

case memory1_ready:       
if(!reverse_on){
slide_recall1_position=slide_current_position;
back_recall1_position=back_current_position;
front_recall1_position=front_current_position;
rear_recall1_position=rear_current_position;
left_mirror_recall1_x=left_mirror_x;
left_mirror_recall1_y=left_mirror_y;
right_mirror_recall1_x=right_mirror_x;
right_mirror_recall1_y=right_mirror_y;
}else{
left_mirror_reverse1_x=left_mirror_x;
left_mirror_reverse1_y=left_mirror_y;
right_mirror_reverse1_x=right_mirror_x;
right_mirror_reverse1_y=right_mirror_y;
}
buzzer=1;                          //记忆位置1成功
TBCR_TBIE=0;
TBCR_TBON=1;
while(!TBCR_TBIF);
TBCR_TACK=1;
TBCR_TBIE=1;
buzzer=0;
seat_status=none;
break;




case memory2_wait3S:
red_led=1;
timer_counter=0;
TBCR_TBON=1;                         //启动定时器
while(key2_on){
if(timer_counter>=3) break;
}
TBCR_TBON=0;//关闭定时器
if(timer_counter>=3){
seat_status=memory2_ready;
}else{
seat_status=none;
}
break;

case memory2_ready: 
if(!reverse_on){
slide_recall2_position=slide_current_position;
back_recall2_position=back_current_position;
front_recall2_position=front_current_position;
rear_recall2_position=rear_current_position;
left_mirror_recall2_x=left_mirror_x;
left_mirror_recall2_y=left_mirror_y;
right_mirror_recall2_x=right_mirror_x;
right_mirror_recall2_y=right_mirror_y;
}else{
left_mirror_reverse2_x=left_mirror_x;
left_mirror_reverse2_y=left_mirror_y;
right_mirror_reverse2_x=right_mirror_x;
right_mirror_reverse2_y=right_mirror_y;
}
buzzer=1;                            //记忆位置2成功
TBCR_TBIE=0;
TBCR_TBON=1;
while(!TBCR_TBIF);
TBCR_TACK=1;
TBCR_TBIE=1;
buzzer=0;
seat_status=none;
break;


case memory3_wait3S:
red_led=1;
timer_counter=0;
TBCR_TBON=1;                      //启动定时器
while(key3_on){
if(timer_counter>=3) break;
}
TBCR_TBON=0;                    //关闭定时器
if(timer_counter>=3){
seat_status=memory3_ready;
}else{
seat_status=none;
}
break;

case memory3_ready:       
if(!reverse_on){
slide_recall3_position=slide_current_position;
back_recall3_position=back_current_position;
front_recall3_position=front_current_position;
rear_recall3_position=rear_current_position;
left_mirror_recall3_x=left_mirror_x;
left_mirror_recall3_y=left_mirror_y;
right_mirror_recall3_x=right_mirror_x;
right_mirror_recall3_y=right_mirror_y;
}else{
left_mirror_reverse3_x=left_mirror_x;
left_mirror_reverse3_y=left_mirror_y;
right_mirror_reverse3_x=right_mirror_x;
right_mirror_reverse3_y=right_mirror_y;
}
buzzer=1;                            //记忆位置3成功
TBCR_TBIE=0;
TBCR_TBON=1;
while(!TBCR_TBIF);
TBCR_TACK=1;
TBCR_TBIE=1;
buzzer=0;
seat_status=none;
break;


case wait_for_show:
red_led=1;
TBCR_TBON=1; 
push_times=0;
timer_counter=0;
previous_state=set_on;
while((!door_closed)&&ignition_on&&park_on)
{  
if(previous_state!=set_on) {
previous_state=set_on;
push_times++;
}
if(push_times>=6) break;
if(timer_counter>=6) break;
}

TBCR_TBON=0; 
if(push_times>=6) {
  seat_status=show_error;
}else{
seat_status=none;
}
break;	 

case show_error:
if(slide_motor_fault){ //用绿色led的闪烁次数表示故障码44

tens_digit=0;
tens_flag=1;
inter_time_flag=0;
TBCR_TBON=1;
while(tens_digit<8);//先表示故障码的十位数4,led闪烁4次
TBCR_TBON=0;

delay_time=0;
inter_time_flag=1;
TBCR_TBON=1;
while(delay_time<2);//延时2S后
TBCR_TBON=0;

number=0;
tens_flag=0;
inter_time_flag=0;
TBCR_TBON=1;
while(number<8); //表示故障码的个位数4,led闪烁4次
TBCR_TBON=0;  

delay_time=0;
inter_time_flag=1;
TBCR_TBON=1;
while(delay_time<5);//延时5S
TBCR_TBON=0;

}
if(back_motor_fault){  //用绿色led的闪烁次数表示故障码74
tens_digit=0;
tens_flag=1;
inter_time_flag=0;
TBCR_TBON=1;
while(tens_digit<14);//先表示故障码的十位数7,led闪烁7次
TBCR_TBON=0;

delay_time=0;
inter_time_flag=1;
TBCR_TBON=1;
while(delay_time<2);//延时2S后
TBCR_TBON=0;

number=0;
tens_flag=0;
inter_time_flag=0;
TBCR_TBON=1;
while(number<8); //表示故障码的个位数4,led闪烁4次
TBCR_TBON=0;  

delay_time=0;
inter_time_flag=1;
TBCR_TBON=1;
while(delay_time<5);//延时5S
TBCR_TBON=0;
}
if(front_motor_fault){//用绿色led的闪烁次数表示故障码54
tens_digit=0;
tens_flag=1;
inter_time_flag=0;
TBCR_TBON=1;
while(tens_digit<10);//先表示故障码的十位数5,led闪烁5次
TBCR_TBON=0;

delay_time=0;
inter_time_flag=1;
TBCR_TBON=1;
while(delay_time<2);//延时2S后
TBCR_TBON=0;

number=0;
tens_flag=0;
inter_time_flag=0;
TBCR_TBON=1;
while(number<8); //表示故障码的个位数4,led闪烁4次
TBCR_TBON=0;  

delay_time=0;
inter_time_flag=1;
TBCR_TBON=1;
while(delay_time<5);//延时5S
TBCR_TBON=0;

}
if(rear_motor_fault){	 //用绿色led的闪烁次数表示故障码64
tens_digit=0;
tens_flag=1;
inter_time_flag=0;
TBCR_TBON=1;
while(tens_digit<12);//先表示故障码的十位数6,led闪烁6次
TBCR_TBON=0;

delay_time=0;
inter_time_flag=1;
TBCR_TBON=1;
while(delay_time<2);//延时2S后
TBCR_TBON=0;

number=0;
tens_flag=0;
inter_time_flag=0;
TBCR_TBON=1;
while(number<8); //表示故障码的个位数4,led闪烁4次
TBCR_TBON=0;  

delay_time=0;
inter_time_flag=1;
TBCR_TBON=1;
while(delay_time<5);//延时5S
TBCR_TBON=0;
}
if(slide_sensor_fault){ //用绿色led的闪烁次数表示故障码43
tens_digit=0;
tens_flag=1;
inter_time_flag=0;
TBCR_TBON=1;
while(tens_digit<8);//先表示故障码的十位数4,led闪烁4次
TBCR_TBON=0;

delay_time=0;
inter_time_flag=1;
TBCR_TBON=1;
while(delay_time<2);//延时2S后
TBCR_TBON=0;

number=0;
tens_flag=0;
inter_time_flag=0;
TBCR_TBON=1;
while(number<6); //表示故障码的个位数3,led闪烁3次
TBCR_TBON=0;  

delay_time=0;
inter_time_flag=1;
TBCR_TBON=1;
while(delay_time<5);//延时5S
TBCR_TBON=0;
}
if(back_sensor_fault){	 //用绿色led的闪烁次数表示故障码73
tens_digit=0;
tens_flag=1;
inter_time_flag=0;
TBCR_TBON=1;
while(tens_digit<14);//先表示故障码的十位数7,led闪烁7次
TBCR_TBON=0;

delay_time=0;
inter_time_flag=1;
TBCR_TBON=1;
while(delay_time<2);//延时2S后
TBCR_TBON=0;

number=0;
tens_flag=0;
inter_time_flag=0;
TBCR_TBON=1;
while(number<6); //表示故障码的个位数3,led闪烁3次
TBCR_TBON=0;  

delay_time=0;
inter_time_flag=1;
TBCR_TBON=1;
while(delay_time<5);//延时5S
TBCR_TBON=0;
}
if(front_sensor_fault){	 //用绿色led的闪烁次数表示故障码53
tens_digit=0;
tens_flag=1;
inter_time_flag=0;
TBCR_TBON=1;
while(tens_digit<10);//先表示故障码的十位数5,led闪烁5次
TBCR_TBON=0;

delay_time=0;
inter_time_flag=1;
TBCR_TBON=1;
while(delay_time<2);//延时2S后
TBCR_TBON=0;

number=0;
tens_flag=0;
inter_time_flag=0;
TBCR_TBON=1;
while(number<6); //表示故障码的个位数3,led闪烁3次
TBCR_TBON=0;  

delay_time=0;
inter_time_flag=1;
TBCR_TBON=1;
while(delay_time<5);//延时5S
TBCR_TBON=0;
}

if(rear_sensor_fault){	 //用绿色led的闪烁次数表示故障码63
tens_digit=0;
tens_flag=1;
inter_time_flag=0;
TBCR_TBON=1;
while(tens_digit<12);//先表示故障码的十位数6,led闪烁6次
TBCR_TBON=0;

delay_time=0;
inter_time_flag=1;
TBCR_TBON=1;
while(delay_time<2);//延时2S后
TBCR_TBON=0;

number=0;
tens_flag=0;
inter_time_flag=0;
TBCR_TBON=1;
while(number<6); //表示故障码的个位数3,led闪烁3次
TBCR_TBON=0;  

delay_time=0;
inter_time_flag=1;
TBCR_TBON=1;
while(delay_time<5);//延时5S
TBCR_TBON=0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -