亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? main.c

?? 以LPC2194為平臺開發(fā)的整車ECU控制器程序
?? C
?? 第 1 頁 / 共 5 頁
字號:
/****************************************Copyright (c)**************************************************
**                              上 海 比 亞 迪 有 限 公 司
**                                     電動汽車研究所
**                                        電控一科
**
**	文   件  	名:	Main.C
**  作          者:丁會利
** 	日		期:	    2006年12月04日
**	描		述:  	主函數(shù)
********************************************************************************************************/
#define	_MAIN_GLOBAL_
#include "canapp.h"
#include "config.h"
#include "IncludeCan.H"
#include "Main.h"

void alarm(void);
void Logic(void);
uint16 filter6(uint16 y[6]);					//AD值計算
/******************************數(shù)據(jù)的定義**********************************/
uint32 IOstate0;
uint32 IOstate1;
uint8  dangwei;        							//定義檔位用于主接觸器判斷
uint16 speedold;
uint16 speed;
//里程存儲
uint32 odo1;									//存放正確里程
uint32 odo2;									//存放存儲區(qū)1的里程
uint32 odo3;									//存放存儲區(qū)2的里程
uint32 odo4;
uint32 odo5;
uint32 odo1_dlt;
uint8  flag_rec;
uint8 flag_speed;
//=============故障代碼==============
uint8 ecu_no;//故障代碼個數(shù)
uint8 ecu_ch;//新故障代碼標(biāo)識
//==================定時器中的值===============================================
uint16 counter;    								//發(fā)送里程、速度
uint16 counter1;   								// 告警數(shù)據(jù)
/*******************************真空壓力傳感器損壞后的計數(shù)**********************/
uint16 counter2;   								// 5秒計時,到5秒判為損壞
uint16 counter3;   								// 20m鐘計時
uint16 counter5;	
uint8 counter7;//706用于計時
uint8  WDI_flag;//706復(fù)位標(biāo)識
/*******************************************************************************/
/**************************水溫傳感器損壞后的計數(shù)*******************************/
uint16 counter4;   								// 5秒計時
/*******************************************************************************/
#define pulse_number    1008  //0.1公里的脈沖數(shù)
uint8  odo_buf[40];	
uint8  odo_buf1[40];	
uint8  odo_buf2[40];
uint16 l_odo_buf[40];
uint16 l_odo_buf1[40];
uint16 l_odo_buf2[40];
uint16 l_odo_buf3[40];
uint8  flag_odo;								//判斷上電后讀取的里程是否都為非法的
uint8 i;
uint32 timer1,timer2,error;						//脈沖周期計算
uint8 flag;
uint32 counter6;
uint8 flag_cutd;								//主接觸器關(guān)斷標(biāo)識
uint8 flag_zhkb;								//真空壓力傳感器損壞標(biāo)志
uint8 flag_zhkbkq;								//損壞后真空泵開啟標(biāo)志
uint8 flag_zhkbjsh;								//損壞后踩腳剎標(biāo)識
uint8 flag_shw;									//水溫傳感器損壞標(biāo)志
uint8 flag_moto;								//發(fā)動機(jī)啟動后首先執(zhí)行一次狀態(tài)標(biāo)志
uint8 flag_outtemp;
uint8 flag_outtemp1;
//真空泵電路MOS管判壞
uint8 MOS_flag;									//MOS損壞標(biāo)志
uint8 counter8;									//MOS管損壞計時
//故障代碼發(fā)送計數(shù)
uint8 counter10;
//故障代碼發(fā)送函數(shù):各模塊發(fā)送標(biāo)志
uint8 DTC_ecu_flag;
//車速傳感器判斷用數(shù)據(jù)
uint16 MG2_rad;//MG2轉(zhuǎn)速
uint8 counter11;//用于車速傳感器損壞計數(shù)
//uint8 chesu_flag;//車速傳感器損壞標(biāo)志位
//碰撞故障代碼判斷用數(shù)據(jù)
uint8 counter12;
uint8 pengzhuang_flag;
//水溫傳感器故障代碼
uint8 shuiwen_flag;
//真空壓力傳感器故障代碼
uint8 zhenkong_flag;
//冷卻水壓過低故障判別用數(shù)據(jù)
uint8 shuiya_flag;
uint8 shuiya_alarm_flag;//用于告警報文中的判斷標(biāo)識位,當(dāng)連續(xù)出現(xiàn)5秒后為有告警
uint8 counter15;//水壓過低告警計時
uint8 counter13;
uint8 counter16;
//CAN通訊故障計數(shù)
//uint8 counter17;
//uint8 CAN_flag;
uint8 flag_lengque;



/****************************************************************************
* 名稱:RstWdt()
* 功能:看門狗喂狗操作。
* 入口參數(shù):無
* 出口參數(shù):無
****************************************************************************/
void  RstWdt(void)
{  WDFEED = 0xAA;
   WDFEED = 0x55;
}

/****************************************************************************
* 名稱:delay()
* 功能:短軟件延時   0.5ms左右
* 入口參數(shù):dly		延時參數(shù),值越大,延時越久
* 出口參數(shù):無
****************************************************************************/
void  delay(uint32  dly)
{  uint32  i;

   for(; dly>0; dly--) 
      for(i=0; i<6000; i++);
}

/****************************************************************************
* 名稱:DelayNS()
* 功能:長軟件延時  5ms左右
* 入口參數(shù):dly		延時參數(shù),值越大,延時越久
* 出口參數(shù):無
****************************************************************************/
void  DelayNS(uint32  dly)
{  uint32  i;

   for(; dly>0; dly--) 
      for(i=0; i<50000; i++);
}

/******************************************************************************
**函數(shù):void Init_T_D_Data(void)
**參數(shù):  無
**返回值:無
**說明:對不同的模塊的故障代碼存儲數(shù)組進(jìn)行必要的指針類型轉(zhuǎn)化,達(dá)到指針對應(yīng)數(shù)組
**      的關(guān)系。
******************************************************************************/
void Init_T_D_Data(void)
{
  ecu_array =(pTrouble_prefix)ECU_Array;			//主控ECU數(shù)據(jù)轉(zhuǎn)換
  pcanData=(pRCV_candata)rec_canData;
} 


/*****************************************************************************
**函數(shù):uint8 Storage_Array(Trouble_type type,pTrouble_prefix Array,
**                             uint16 candata,uint8 n)
**參數(shù):    Trouble_type      type:   故障的類型
**          pTrouble_prefix   Array:  參數(shù)數(shù)組的指針
**          uint16            candata:要存入的數(shù)據(jù)
**          uint8             n      :存入數(shù)組的位置
**返回值: :0 :存儲成功
**         :1 :存儲失敗
**說明: 用于各個模塊的數(shù)據(jù)存儲,對接收到的不同的數(shù)據(jù)進(jìn)行相應(yīng)模塊的存儲
**       如果模塊故障數(shù)組中存在其中一個故障代碼,就不存儲,不存在并達(dá)到
**       要求的故障代碼就存儲。 
******************************************************************************/
void Storage_Array(Trouble_type type,pTrouble_prefix Array,uint16 candata,uint8 n) //查詢故障代碼是否已經(jīng)存在
{
  uint8 status=0;									//有新的故障碼
  uint8 num;
  switch(type)
  {
    case M_ECU:
      if(n<=0x09||n==0x29||n==0x30)
      {
	      for(num=1;num<=ecu_no;num++)
	      {
	        if(candata==(*(ecu_array+num)).Word) {status=1; break;}   //故障代碼已存在
	        else status=0;
	      }
	      if(status==0)
	      { 
	          ecu_array->Bits.trouble_counter++;        //故障代碼個數(shù)+1
	          ecu_no++;
	          (*(ecu_array+ecu_no)).Word=candata;
	          ecu_ch=1;                                 //新故障代碼標(biāo)識
	      } 
      } 
      break;
     default :break;
  }
}

/*****************************************************************************
**函數(shù):uint8 Delete_Array(Trouble_type type,pTrouble_prefix Array,
**                             uint16 candata,uint8 n)
**參數(shù):    Trouble_type      type:   故障的類型
**          pTrouble_prefix   Array:  參數(shù)數(shù)組的指針
**          uint16            candata:要刪除的數(shù)據(jù)
**          uint8             n      :數(shù)組的位置
**說明: 用于各個模塊的數(shù)據(jù)清除
******************************************************************************/
void Delete_Array(Trouble_type type,pTrouble_prefix Array,uint16 candata,uint8 n) //查詢故障代碼是否已經(jīng)存在
{
  uint8 status=0;									//有新的故障碼
  uint8 num;
  switch(type)
  {
    case M_ECU:
      if(n<=0x09||n==0x29||n==0x30)
      {
	      for(num=1;num<=ecu_no;num++)
	      {
	        if(candata==(*(ecu_array+num)).Word)  //故障代碼已存在
	        {
	        	ecu_array->Bits.trouble_counter--;        //故障代碼個數(shù)-1
	          	for(;num<ecu_no;num++)
	          	{
	          		(*(ecu_array+num)).Word=(*(ecu_array+num+1)).Word;
	          	}
	          	(*(ecu_array+ecu_no)).Word=0;
	          	ecu_no--;
	          	ecu_ch=1; 
	          	break;
	        }
	        else status=0; 
	      }
      } 
      break;
     default :break;
  }
}

/*****************************************************************************
**函數(shù):RCV_TD(void)
**參數(shù):無
**返回值:無
**說明:用于接收到的把所有的故障代碼按照不同的類型進(jìn)行存儲到相應(yīng)的數(shù)組中,或者對
	    故障清除進(jìn)行操作。
*****************************************************************************/
void RCV_TD(void)
{
     uint16 candata;
     uint8 n; 
     
     /**************************故障代碼接收********************************/
     if(DTC_flag==1&&DTC_num!=0)   //接收故障代碼
     {
       for(i=0;i<DTC_num;i++)
       {
         candata=DTC_array[i];
         candata=(DTC_type[i]<<8)|candata;
         n=DTC_array[i];
         switch(DTC_type[i])
         {
           //主控ECU模塊
           case 0x93:
             Storage_Array(M_ECU,ecu_array,candata,n);
             break;
           default: break;
         }
       } 
     }
     /********************************************************************************/
     
     /******************************故障代碼清除********************************/
     else if(DTC_flag==0&&DTC_num!=0)   //清除故障代碼
     {
     	 candata=DTC_array[0];
         candata=(DTC_type[0]<<8)|candata;
         n=DTC_array[0];
         
         switch(DTC_type[0])
         {
           //主控ECU模塊
           case 0x93:
             Delete_Array(M_ECU,ecu_array,candata,n);
             break;
           default: break;
         }
     }
     /********************************************************************************/
}

/**********************************2006.11.3添加里程校驗*******************************/
/****************************************************************************
* 名稱:xiaoyan(uint8 *buf3)
* 功能:用來對里程數(shù)據(jù)進(jìn)行寫校驗
* 入口參數(shù):addr:代表要進(jìn)行校驗的數(shù)組的首地址
* 出口參數(shù):無
****************************************************************************/
void xiaoyan(uint8 *buf3)
{
	uint16 add1;
	uint8  add;								//前3位的ADD
	uint8  XOR;
	if(buf3[0]+buf3[1]>0xFF)
	{
		add1=buf3[0]+buf3[1]-0xFE;
	}
	else add1=buf3[0]+buf3[1];
	if(add1+buf3[2]>0xFF)
	{
		add1=add1+buf3[2]-0xFE;
	}
	else add1=add1+buf3[2];
	add=add1;								//前3個數(shù)字的和,為第4個數(shù)字
	buf3[3]=add;
	
	XOR=buf3[0]^buf3[1];
	XOR=XOR^buf3[2];
	XOR=XOR^buf3[3];
	buf3[4]=XOR;	
	
}

/****************************************************************************
* 名稱:de_xiaoyan(uint8 *buf3)
* 功能:用來對里程數(shù)據(jù)進(jìn)行解校驗
* 入口參數(shù):addr:代表要進(jìn)行校驗的數(shù)組的首地址
* 出口參數(shù):無
****************************************************************************/
uint8 de_xiaoyan(uint8 *buf3)
{
	uint8 XOR;
	//計算XOR
	XOR=buf3[0]^buf3[1];
	XOR=XOR^buf3[2];
	XOR=XOR^buf3[3];
	if(XOR==buf3[4])
	{
		return (1);
	} 
	else 
	{
		return(0);
	}
}

/*******************************2006.12.25添加******************************/
//2007.3.16調(diào)通
/****************************************************************************
* 名稱:void write_eeprom(uint16 Addr,uint16 Data)
* 功能:IO口模擬SPI寫數(shù)據(jù)
* 入口參數(shù):
* 出口參數(shù):
****************************************************************************/
void write_eeprom(uint16 Addr,uint16 Data)
{
  uint16 AADDR;
  uint32 DDATA;
  uint8 m;
  uint16 ewen=0x1300;
  uint16 ewds=0x1000;
  AADDR = Addr & 0x03ff;
  AADDR = AADDR|0x1400;			//高13位格式
  DDATA = AADDR;
  DDATA = (DDATA<<16)|Data; 	//轉(zhuǎn)換為29為格式
  DDATA = DDATA<<3;				//左移3位,將高位0清除
  //寫允許命令
  IO1SET = CS;
  for(m=0;m<=12;m++)
  {
     if((ewen & 0x1000)==0x1000)
         IO0SET = MOSI0;
     else IO0CLR = MOSI0; 
     IO0CLR = SCK0;
     IO0SET = SCK0;
     ewen = ewen << 1;
   }
  IO1CLR = CS;
  //數(shù)據(jù)寫入
  IO1SET = CS;    
  for(m=0;m<=28;m++)
  {
     if((DDATA & 0x80000000)==0x80000000)
         IO0SET = MOSI0;
     else IO0CLR = MOSI0; 
     IO0CLR = SCK0;
     IO0SET = SCK0;
     DDATA = DDATA << 1;
   }  
  IO1CLR = CS;
  //寫禁止命令
  IO1SET = CS;
  for(m=0;m<=12;m++)
  {
     if((ewds & 0x1000)==0x1000)
         IO0SET = MOSI0;
     else IO0CLR = MOSI0; 
     IO0CLR = SCK0;
     IO0SET = SCK0;
     ewds = ewds << 1;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本一区二区三区免费乱视频| 成人动漫一区二区在线| 欧美日韩www| 日韩精品成人一区二区三区 | 精品一区二区成人精品| 欧美大尺度电影在线| 国产麻豆成人精品| 国产欧美日韩卡一| 91影院在线免费观看| 亚洲国产乱码最新视频| 欧美喷潮久久久xxxxx| 日韩精品一区第一页| 日韩免费在线观看| 国产成人日日夜夜| 亚洲日韩欧美一区二区在线| 欧美三级中文字| 精久久久久久久久久久| 国产精品青草久久| 欧美日韩一区二区三区在线| 久久机这里只有精品| 欧美经典三级视频一区二区三区| www.欧美色图| 日本亚洲电影天堂| 亚洲国产激情av| 欧美日韩国产免费一区二区 | 91老师片黄在线观看| 亚洲国产视频在线| 久久久久久久久久久久电影| 色狠狠av一区二区三区| 久久精品国产亚洲一区二区三区| 亚洲国产高清在线| 3751色影院一区二区三区| 国产精品一级在线| 亚洲成va人在线观看| 久久久影院官网| 欧美午夜电影在线播放| 国产精品亚洲第一区在线暖暖韩国| 亚洲视频一区二区在线| 日韩精品一区二区在线观看| 色偷偷久久人人79超碰人人澡 | 国产一区二区导航在线播放| 一区二区三区国产精华| 久久久久久久久伊人| 欧美午夜不卡视频| 成人黄色av网站在线| 免费成人在线视频观看| 亚洲欧美一区二区三区极速播放| 日韩精品一区二| 欧美日韩精品一区二区三区四区| 懂色av中文一区二区三区| 美女脱光内衣内裤视频久久网站 | 久久久亚洲精品石原莉奈 | 91精品国产入口| 在线亚洲精品福利网址导航| 国产99久久精品| 麻豆91精品91久久久的内涵| 香蕉加勒比综合久久 | 亚洲一线二线三线久久久| 国产拍揄自揄精品视频麻豆| 精品区一区二区| 5月丁香婷婷综合| 欧美日韩免费在线视频| 一本一道综合狠狠老| 成人av电影免费在线播放| 国产在线精品视频| 狠狠色狠狠色合久久伊人| 日本亚洲视频在线| 男男gaygay亚洲| 五月婷婷欧美视频| 午夜精品福利视频网站| 亚洲国产精品一区二区尤物区| 亚洲婷婷国产精品电影人久久| 国产日韩欧美在线一区| 国产欧美日韩另类视频免费观看| 欧美精品一区二区久久婷婷| 欧美成人r级一区二区三区| 欧美一卡二卡三卡四卡| 欧美裸体一区二区三区| 欧美精品久久99| 日韩一区二区在线观看| 91精品国产丝袜白色高跟鞋| 欧美一区永久视频免费观看| 在线播放91灌醉迷j高跟美女| 欧美视频自拍偷拍| 欧美日韩亚洲综合一区| 91麻豆精品国产91久久久使用方法| 在线电影一区二区三区| 日韩午夜在线观看视频| 精品国产123| 国产精品日韩成人| 亚洲精品乱码久久久久久| 一区二区三区成人| 天堂va蜜桃一区二区三区| 久久精品国产亚洲5555| 国产精品综合av一区二区国产馆| 粉嫩aⅴ一区二区三区四区五区| 国产91精品精华液一区二区三区| www.66久久| 欧美在线播放高清精品| 91精品欧美综合在线观看最新| 日韩欧美综合在线| 国产欧美日本一区二区三区| 综合av第一页| 天堂va蜜桃一区二区三区漫画版| 久久99久久久久久久久久久| 大尺度一区二区| 91官网在线免费观看| 91精品国产综合久久精品图片| 久久久影院官网| 亚洲一区二区三区小说| 老色鬼精品视频在线观看播放| 国产成人亚洲综合色影视| 91女人视频在线观看| 777精品伊人久久久久大香线蕉| 精品国产一区二区三区久久久蜜月| 国产精品毛片久久久久久久| 亚洲1区2区3区视频| 国产一区91精品张津瑜| 色94色欧美sute亚洲线路一久| 91麻豆精品国产自产在线观看一区| 久久久五月婷婷| 亚洲国产精品久久一线不卡| 国产一区二区网址| 欧美系列日韩一区| 亚洲国产精品精华液2区45| 亚洲成人一区二区| 成人av网站免费观看| 91精品国产色综合久久| 国产精品夫妻自拍| 麻豆成人久久精品二区三区小说| 粉嫩高潮美女一区二区三区| 91精品国产色综合久久ai换脸| 国产精品少妇自拍| 日韩极品在线观看| 91蝌蚪porny九色| 久久精子c满五个校花| 亚洲成av人综合在线观看| 成人妖精视频yjsp地址| 日韩欧美精品三级| 一区二区久久久久久| 国产白丝网站精品污在线入口| 欧美人妖巨大在线| 亚洲三级久久久| 国产高清无密码一区二区三区| 91精品国产91综合久久蜜臀| 亚洲狠狠丁香婷婷综合久久久| 国产精品一区二区久久精品爱涩 | 午夜精品aaa| 色婷婷av一区二区| 中文字幕在线一区免费| 美女国产一区二区| 欧美猛男男办公室激情| 亚洲最大成人网4388xx| www.欧美色图| 国产精品免费久久久久| 国产91精品久久久久久久网曝门| 日韩欧美国产高清| 日产国产欧美视频一区精品| 欧美视频一区二区三区四区| 中文字幕在线观看不卡视频| 国产激情一区二区三区四区 | 国产精品麻豆网站| 国产一区二区三区在线观看精品| 日韩视频在线永久播放| 日韩制服丝袜av| 欧美妇女性影城| 日本少妇一区二区| 欧美精品在线视频| 天天操天天综合网| 欧美精品久久久久久久多人混战| 亚洲综合偷拍欧美一区色| 欧美在线播放高清精品| 亚洲成人av电影在线| 欧美色国产精品| 婷婷丁香久久五月婷婷| 91精品欧美综合在线观看最新| 日韩经典中文字幕一区| 日韩区在线观看| 国产福利一区在线| 国产精品久久看| 色婷婷亚洲婷婷| 亚洲成人综合网站| 日韩欧美一级精品久久| 国产中文一区二区三区| 国产蜜臀97一区二区三区| 成人免费av网站| 亚洲卡通动漫在线| 欧美日韩国产影片| 美国三级日本三级久久99| 国产亚洲一区字幕| bt欧美亚洲午夜电影天堂| 亚洲精品视频自拍| 91精品婷婷国产综合久久性色| 精品一区二区av| 国产免费久久精品| 欧美在线观看视频在线| 久久精品国产色蜜蜜麻豆| 国产欧美日产一区| 欧美视频在线一区| 精品综合久久久久久8888|