mirror.c

来自「基于摩托罗拉(现在飞思卡尔)系列MC68HC908单片机开发车辆ECU系统!」· C语言 代码 · 共 93 行

C
93
字号
#include"mirror.h"
LIN_BYTE MsgSent[8];
LIN_BYTE MsgRecv[8];
LINDriverStatusType ret;
void mirror_command(LIN_BYTE ID){                                                  
LIN_PutMsg(ID,MsgSent);
LIN_RequestMsg(ID);
do 
   {
        ret = LIN_DriverStatus();
        
    }
while( ret & LIN_STATUS_PENDING );
}




void mirror_status(LIN_BYTE ID){
LIN_RequestMsg(ID);
do 
   {
     ret = LIN_DriverStatus();
   }
while( ret & LIN_STATUS_PENDING );
ret=LIN_MsgStatus(ID);
if(ret==LIN_OK){
LIN_GetMsg(ID,MsgRecv);
}
}


void mirror_recall(LIN_BYTE position_x,LIN_BYTE position_y,LIN_BYTE command_ID,LIN_BYTE status_ID){
MsgSent[1]=0x05;
MsgSent[6]=position_x;
MsgSent[7]=position_y;
mirror_old_x=position_x;
mirror_old_y=position_y;
mirror_command(command_ID);
mirror_timer=0;
TBCR_TBON=1;
do{
mirror_status(status_ID);

if(current_recall_stopped){
break;
}

if(mirror_timer>=3){
TBCR_TBON=0;
//判断镜子在x方向是否到达边缘
if(MsgRecv[2]>mirror_old_x) {
 if ((MsgRecv[2]-mirror_old_x)<0x05)        x_nochange=1;
}else if ((mirror_old_x-MsgRecv[2])<0x05)   x_nochange=1;


//判断镜子在y方向是否到达边缘
if(MsgRecv[3]>mirror_old_y) {
  if ((MsgRecv[3]-mirror_old_y)<0x05)       y_nochange=1;
} else if((mirror_old_y-MsgRecv[3])<0x05)		y_nochange=1;



if(x_nochange&&y_nochange){        //镜子到达边缘
x_nochange=0;
y_nochange=0;
break;
}else{
mirror_old_x=MsgRecv[2];
mirror_old_y=MsgRecv[3];
x_nochange=0;
y_nochange=0;
mirror_timer=0;
TBCR_TBON=1;
}
  
}

}while(MsgRecv[0]&0x04);
TBCR_TBON=0;
MsgSent[1]=0x06;
mirror_command(command_ID);
MsgSent[1]=0x00;
mirror_command(command_ID);






}

⌨️ 快捷键说明

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