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

📄 main.c

📁 基于摩托罗拉(现在飞思卡尔)系列MC68HC908单片机开发车辆ECU系统!
💻 C
📖 第 1 页 / 共 3 页
字号:
//通过RS232口输出故障码
T2SC_TRST=1;
T2SC_TSTOP=0;
if(slide_motor_fault)					 SCI_show_error(44);
if(back_motor_fault)					 SCI_show_error(74);
if(front_motor_fault)					 SCI_show_error(54);
if(rear_motor_fault)					 SCI_show_error(64);
if(slide_sensor_fault)				 SCI_show_error(43);
if(back_sensor_fault)					 SCI_show_error(73);
if(front_sensor_fault)				 SCI_show_error(53);
if(rear_sensor_fault)          SCI_show_error(63);
T2SC_TSTOP=1;

seat_status=none;
break;
 
 
case left_mirror_left_begun:
red_led=1;
MsgSent[1]=0x03;
mirror_command(0x30);
seat_status=left_mirror_left;
break;

case left_mirror_left:
mirror_status(0x34);
left_mirror_x=MsgRecv[2];
if(!mirror_left_on){
seat_status=left_mirror_stopped;
}
break;

case left_mirror_right_begun:
red_led=1;
MsgSent[1]=0x04;
mirror_command(0x30);
seat_status=left_mirror_right;
break;

case left_mirror_right:
mirror_status(0x34);
left_mirror_x=MsgRecv[2];
if(!mirror_right_on){
seat_status=left_mirror_stopped;
}
break;

case left_mirror_up_begun:
red_led=1;
MsgSent[1]=0x01;
mirror_command(0x30);
seat_status=left_mirror_up;
break;

case left_mirror_up:
mirror_status(0x34);
left_mirror_y=MsgRecv[3];
if(!mirror_up_on){
seat_status=left_mirror_stopped;
}
break;

case left_mirror_down_begun:
red_led=1;
MsgSent[1]=0x02;
mirror_command(0x30);
seat_status=left_mirror_down;
break;

case left_mirror_down:
mirror_status(0x34);
left_mirror_y=MsgRecv[3];
if(!mirror_down_on){
seat_status=left_mirror_stopped;
}
break;


case right_mirror_left_begun:
red_led=1;
MsgSent[1]=0x03;
mirror_command(0x31);
seat_status=right_mirror_left;
break;

case right_mirror_left:
mirror_status(0x36);
right_mirror_x=MsgRecv[2];
if(!mirror_left_on){
seat_status=right_mirror_stopped;
}
break;

case right_mirror_right_begun:
red_led=1;
MsgSent[1]=0x04;
mirror_command(0x31);
seat_status=right_mirror_right;
break;

case right_mirror_right:
mirror_status(0x36);
right_mirror_x=MsgRecv[2];
if(!mirror_right_on){
seat_status=right_mirror_stopped;
}
break;

case right_mirror_up_begun:
red_led=1;
MsgSent[1]=0x01;
mirror_command(0x31);
seat_status=right_mirror_up;
break;

case right_mirror_up:
mirror_status(0x36);
right_mirror_y=MsgRecv[3];
if(!mirror_up_on){
seat_status=right_mirror_stopped;
}
break;

case right_mirror_down_begun:
red_led=1;
MsgSent[1]=0x02;
mirror_command(0x31);
seat_status=right_mirror_down;
break;

case right_mirror_down:
mirror_status(0x36);
right_mirror_y=MsgRecv[3];
if(!mirror_down_on){
seat_status=right_mirror_stopped;
}
break;

case left_mirror_stopped:
MsgSent[1]=0x00;
mirror_command(0x30);
seat_status=none;
break;

case right_mirror_stopped:
MsgSent[1]=0x00;
mirror_command(0x31);
seat_status=none;
break;










case none:
SPI33972(0x0C,0x00,0x39,0x0C,0x00,0x39);  		 //33972进入睡眠模式
if(slide_motor_fault||back_motor_fault||front_motor_fault||rear_motor_fault||slide_sensor_fault||back_sensor_fault||front_sensor_fault||rear_sensor_fault){				 //有故障发生
green_led=1;        //绿色故障指示灯点亮
SPI33689(0x13);			//33689关闭高端开关HS1,HS2,保留HS3导通
}else{
green_led=0;
SPI33689(0x03);                                //33689关闭高端开关HS1,HS2,HS3
}
red_led=0;                                     //红灯灭  
asm{																					 //gr16进入睡眠模式
stop;
}





}

 
	
}


}














interrupt void TBM(void){
  TBCR_TACK=1;
  TBCR_TBON=0;
  
 
  if(slide_direction==forward||slide_direction==backward) {
  if(!slide_sensor_exist_flag){
   slide_sensor_fault=1;                     //滑动电机的传感器电路发生故障                                                  
}
}
  if(back_direction==counterclockwise||back_direction==clockwise) {
  if(!back_sensor_exist_flag){
   back_sensor_fault=1;                     //滑动电机的传感器电路发生故障
                                                     
}
}
  if(front_direction==up||front_direction==down) {
  if(!front_sensor_exist_flag){
   front_sensor_fault=1;                     //滑动电机的传感器电路发生故障                                                  
	 
}
}
  if(rear_direction==up||rear_direction==down) {
  if(!rear_sensor_exist_flag){
   rear_sensor_fault=1;                     //滑动电机的传感器电路发生故障                                                  
	 
}
}
if((seat_status==memory1_wait3S)||(seat_status==memory2_wait3S)||(seat_status==memory3_wait3S)||(seat_status==wait_for_show)){
timer_counter++;
TBCR_TBON=1;
}
if(seat_status==recall1||seat_status==recall2||seat_status==recall3||seat_status==handed_recall1||seat_status==handed_recall2||seat_status==handed_recall3||seat_status==reverse_recall){
 mirror_timer++;
 TBCR_TBON=1;
}

if(seat_status==show_error){
if(inter_time_flag){
delay_time++;
TBCR_TBON=1;
}else{
green_led=~green_led;
TBCR_TBON=1;
if(tens_flag) tens_digit++;
else number++;
}

}




}






interrupt void inputcapture(void){
UINT8 temp;
temp=T2SC0; 
T2SC0_CH0F=0;

  
if(slide_direction==forward){
slide_current_position--;
slide_sensor_exist_flag=1;
}




if(slide_direction==backward){
slide_current_position++;
slide_sensor_exist_flag=1;
}



if(back_direction==counterclockwise){
back_current_position++;
back_sensor_exist_flag=1;
}




if(back_direction==clockwise){
back_current_position--;
back_sensor_exist_flag=1;
}



if(front_direction==up){
front_current_position++;
front_sensor_exist_flag=1;
}


if(front_direction==down){
front_current_position--;
front_sensor_exist_flag=1;
}
 

if(rear_direction==up){
rear_current_position++;
rear_sensor_exist_flag=1;
}


if(rear_direction==down){
rear_current_position--;
rear_sensor_exist_flag=1;
}


}
  
interrupt void keyint(void){


UINT8 i;
i=0xff;
while(i--);
PCTL_BCS=1;
SPI33689(0x1f);
while(!PTA_PTA2)
{
CS_33972=0;
CS_33972=1;
}			
SPI33972(0x00,0x00,0x00,0x00,0x00,0x00);	
SPI33972(0x00,0x00,0x00,0x00,0x00,0x00);

door_closed=switchstatus[1]&door;
ignition_on=switchstatus[1]&ignition;
auto_on=switchstatus[1]&autoflag;
set_on=switchstatus[1]&set;
key1_on=switchstatus[1]&key1;
key2_on=switchstatus[1]&key2;
key3_on=switchstatus[1]&key3;
slide_forward_on=switchstatus[2]&slide_forward_flag;
slide_backward_on=switchstatus[2]&slide_backward_flag;
back_counterclockwise_on=switchstatus[2]&back_counterclockwise_flag;
back_clockwise_on=switchstatus[2]&back_clockwise_flag;
front_up_on=switchstatus[2]&front_up_flag;
front_down_on=switchstatus[2]&front_down_flag;
rear_up_on=switchstatus[2]&rear_up_flag;
rear_down_on=switchstatus[2]&rear_down_flag;
reverse_on=switchstatus[5]&reverse;
park_on=switchstatus[5]&park;
right_mirror=switchstatus[5]&left_right_flag;
mirror_right_on=switchstatus[5]&mirror_right;
mirror_left_on=switchstatus[5]&mirror_left;
mirror_up_on=switchstatus[5]&mirror_up;
mirror_down_on=switchstatus[5]&mirror_down;

if((!door_closed)&&ignition_on&&park_on&&(!set_on)){
if(seat_status==none){
seat_status=wait_for_show;
}
}


	 
if((!door_closed)&&ignition_on&&set_on&&slide_forward_on){
  if(seat_status==none){
  seat_status=slide_forward_begun;
  }
}

if((!door_closed)&&ignition_on&&set_on&&slide_backward_on){
  if(seat_status==none){
  seat_status=slide_backward_begun;
  }
}

if((!door_closed)&&ignition_on&&set_on&&back_counterclockwise_on){
  if(seat_status==none){
  seat_status=back_counterclockwise_begun;
  }
}

if((!door_closed)&&ignition_on&&set_on&&back_clockwise_on){
  if(seat_status==none){
  seat_status=back_clockwise_begun;
  }
}

if((!door_closed)&&ignition_on&&set_on&&front_up_on){
  if(seat_status==none){
  seat_status=front_up_begun;
  }
}

if((!door_closed)&&ignition_on&&set_on&&front_down_on){
  if(seat_status==none){
  seat_status=front_down_begun;
  }
}

if((!door_closed)&&ignition_on&&set_on&&rear_up_on){
  if(seat_status==none){
  seat_status=rear_up_begun;
  }
}
if((!door_closed)&&ignition_on&&set_on&&rear_down_on){
  if(seat_status==none){
  seat_status=rear_down_begun;
  }
}



if((!door_closed)&&ignition_on&&mirror_left_on&&set_on&&(!right_mirror)){
  if(seat_status==none){
  seat_status=left_mirror_left_begun;
  }
}

if((!door_closed)&&ignition_on&&mirror_right_on&&set_on&&(!right_mirror)){
  if(seat_status==none){
  seat_status=left_mirror_right_begun;
  }
}
if((!door_closed)&&ignition_on&&mirror_left_on&&set_on&&right_mirror){
  if(seat_status==none){
  seat_status=right_mirror_left_begun;
  }
}

if((!door_closed)&&ignition_on&&mirror_right_on&&set_on&&right_mirror){
  if(seat_status==none){
  seat_status=right_mirror_right_begun;
  }
}

if((!door_closed)&&ignition_on&&mirror_up_on&&set_on&&(!right_mirror)){
  if(seat_status==none){
  seat_status=left_mirror_up_begun;
  }
}
if((!door_closed)&&ignition_on&&mirror_down_on&&set_on&&(!right_mirror)){
  if(seat_status==none){
  seat_status=left_mirror_down_begun;
  }
}
if((!door_closed)&&ignition_on&&mirror_up_on&&set_on&&right_mirror){
  if(seat_status==none){
  seat_status=right_mirror_up_begun;
  }
}
if((!door_closed)&&ignition_on&&mirror_down_on&&set_on&&right_mirror){
  if(seat_status==none){
  seat_status=right_mirror_down_begun;
  }
}



if((!door_closed)&&ignition_on&&set_on&&key1_on){
  if(seat_status==none){
  seat_status=memory1_wait3S;
  }
}

if((!door_closed)&&ignition_on&&set_on&&key2_on){
  if(seat_status==none){
  seat_status=memory2_wait3S;
  }
}

if((!door_closed)&&ignition_on&&set_on&&key3_on){
  if(seat_status==none){
  seat_status=memory3_wait3S;
  }
}


if((!ignition_on)&&set_on&&key1_on&&(!reverse_on)){
  if(!door_closed){
  if(seat_status==none||seat_status==recall2||seat_status==recall3){		 //停止当前正在进行的调用,开始新的调用
    current_recall_stopped=1;
    seat_status=recall1;
  }
}else{
if(seat_status==none){
seat_status=handed_recall1;
}
}
}



if(!key1_on){
if(seat_status==handed_recall1){
current_recall_stopped=1;
seat_status=none;
}
}



if((!ignition_on)&&set_on&&key2_on&&(!reverse_on)){
  if(!door_closed) {
  if(seat_status==none||seat_status==recall1||seat_status==recall3){			//停止当前正在进行的调用,开始新的调用
    current_recall_stopped=1;
    seat_status=recall2;
  }
  }else{
  if(seat_status==none){
  seat_status=handed_recall2;
}
}
}

if(!key2_on){
if(seat_status==handed_recall2){
current_recall_stopped=1;
seat_status=none;
}
}



if((!ignition_on)&&set_on&&key3_on&&(!reverse_on)){
  if(!door_closed) {
  if(seat_status==none||seat_status==recall1||seat_status==recall2){
    current_recall_stopped=1;							             //停止当前正在进行的调用,开始新的调用
    seat_status=recall3;
  } 
  }else{
    if(seat_status==none){
  seat_status=handed_recall3;
}
  }
}

if(!key3_on){
if(seat_status==handed_recall3){
current_recall_stopped=1;
seat_status=none;
}
}



if((!ignition_on)&&set_on&&reverse_on) {
seat_status=reverse_recall;
}
 	 
}


interrupt void AD(void){
SAMPLE_VOLTAGE=ADR;
ADSCR=0x43;
}




⌨️ 快捷键说明

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