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

📄 mirror.c

📁 基于摩托罗拉(现在飞思卡尔)系列MC68HC908单片机开发车辆ECU系统!
💻 C
字号:
#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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -