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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mcp2515.c

?? 車用液晶儀表中s3c2410的can接口程序
?? C
?? 第 1 頁 / 共 2 頁
字號:
	F_M_data2[0] = (RXM0>>3) & 0xff;
	F_M_data2[1] = (RXM0 & 0x7)<<5;
	
	F_M_data2[4] = (RXM1>>3) & 0xff;
	F_M_data2[5] = (RXM1 & 0x7)<<5;	
}

void MCP2515_Rec(void)
{
	U8 CAN_State;
	CAN_State = CAN_Read_State();
	//System_Light();
	//------------------------
	//CAN_Write(0x2d, 0x00);
    //CAN_Write(0x2c, 0x00);
	//---------------------------
	if((CAN_State & 0x03) != 0)
    {
        if((CAN_State & 0x01) == 1)
        {
	        ///////////////////////////////////////////////////////////////////////////////
	    	CAN_Bit_cmd(CANINTF,RX0IF,0x00);
	        
	        CAN_Read_Data(RXB0SIDH,can_rec_data,13);
	        
	        CANDATA.CAN_IDs = (((int)can_rec_data[0])<<3) | ((can_rec_data[1]>>5) & 0x07);
            
	        CANDATA.CAN_DATA[0] = can_rec_data[5];
	        CANDATA.CAN_DATA[1] = can_rec_data[6];
	        CANDATA.CAN_DATA[2] = can_rec_data[7];
	        CANDATA.CAN_DATA[3] = can_rec_data[8];
	        CANDATA.CAN_DATA[4] = can_rec_data[9];
	        CANDATA.CAN_DATA[5] = can_rec_data[10];
	        CANDATA.CAN_DATA[6] = can_rec_data[11];
	        CANDATA.CAN_DATA[7] = can_rec_data[12];
            
           // Uart_Printf("can0 id is %x\n",CANDATA.CAN_IDs);    
            MCP2515_DataDeal();
           
           
           // CAN_Write(CANINTE,0x23); //中斷使能  CANINTE,0x23
	       // CAN_Write(CANINTE,0x23); //中斷使能
	        
            #if 0
	        Uart_Printf("RXB0:0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x\n",
	        CANDATA.CAN_DATA[0],CANDATA.CAN_DATA[1],CANDATA.CAN_DATA[2],CANDATA.CAN_DATA[3],
	        CANDATA.CAN_DATA[4],CANDATA.CAN_DATA[5],CANDATA.CAN_DATA[6],CANDATA.CAN_DATA[7]);
	        #endif
	        
	        CAN_Bit_cmd(CANINTF,RX0IF,0x00);
	        
	        
	        
	        
	       //  Uart_Printf("w %d\n",testEint3++);
	        //////////////////////////////////////////////////////////////////////////////////
        }
        if((CAN_State & 0x02) == 2)
        {
        	///////////////////////////////////////////////////////////////////////////////
	    	CAN_Bit_cmd(CANINTF,RX1IF,0x00);
	        
	        CAN_Read_Data(RXB1SIDH,can_rec_data,13);
	        
	        CANDATA.CAN_IDs = (((int)can_rec_data[0])<<3) | ((can_rec_data[1]>>5) & 0x07);
                       
	        CANDATA.CAN_DATA[0] = can_rec_data[5];
	        CANDATA.CAN_DATA[1] = can_rec_data[6];
	        CANDATA.CAN_DATA[2] = can_rec_data[7];
	        CANDATA.CAN_DATA[3] = can_rec_data[8];
	        CANDATA.CAN_DATA[4] = can_rec_data[9];
	        CANDATA.CAN_DATA[5] = can_rec_data[10];
	        CANDATA.CAN_DATA[6] = can_rec_data[11];
	        CANDATA.CAN_DATA[7] = can_rec_data[12];
        	
        	//Uart_Printf("can1 id is %x\n",CANDATA.CAN_IDs);
        	MCP2515_DataDeal();
        	
        	
        	//CAN_Write(CANINTE,0x23); //中斷使能  CANINTE,0x23
	       // CAN_Write(CANINTE,0x23); //中斷使能
        	
        	#if 0
	        Uart_Printf("RXB1:0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x\n",
	        CANDATA.CAN_DATA[0],CANDATA.CAN_DATA[1],CANDATA.CAN_DATA[2],CANDATA.CAN_DATA[3],
	        CANDATA.CAN_DATA[4],CANDATA.CAN_DATA[5],CANDATA.CAN_DATA[6],CANDATA.CAN_DATA[7]);
	        #endif
	        
	        CAN_Bit_cmd(CANINTF,RX1IF,0x00);
	        
	        
	        
	      //   Uart_Printf("g %d\n",testEint4++);
	        //////////////////////////////////////////////////////////////////////////////////
        }
    }
  // if (((CANINTE>>7) & 0x01) ==1)
    //   {
      //   CAN_Init();
       //}
    //CAN_Write(CANINTE,0x23); //中斷使能  CANINTE,0x23
	//CAN_Write(CANINTE,0x23); //中斷使能
    //System_Light();
}

void MCP2515_DataDeal(void)
{
	
	//Uart_Printf("can2 id is %x\n",CANDATA.CAN_IDs);
	
	switch(CANDATA.CAN_IDs)
    {
    	//Uart_Printf("can3 id is %x\n",CANDATA.CAN_IDs);
    	case 0x341:
    		rec_data.bat_vol = (float)((CANDATA.CAN_DATA[0])|(CANDATA.CAN_DATA[1]<<8))*0.2;  //電池端電壓(2)
            rec_data.bat_cur = (float)((CANDATA.CAN_DATA[2])|(CANDATA.CAN_DATA[3]<<8))*0.5-200; //電池電流(2)
            rec_data.bat_soc = (float)((CANDATA.CAN_DATA[4])|(CANDATA.CAN_DATA[5]<<8))*0.1;     //電池soc(2)
            //InvalidateRect(122,370,263,411);
            CAN1=CANDATA.CAN_DATA[4];
            CAN2=CANDATA.CAN_DATA[5];
            
           // output_number(CANDATA.CAN_DATA[5],151,390,0xFFFF);
            if((rec_data.bat_soc - 100.0)>=0)
                { rec_data.bat_soc=100.0;}
            //else
            //    {rec_data.bat_soc=100.0;}
            rec_data.bat_tem = (float)((CANDATA.CAN_DATA[6])|(CANDATA.CAN_DATA[7]<<8))*0.16-40;  //電池溫度(2)
    		//Uart_Printf("can3 id is %x\n",CANDATA.CAN_IDs);
    		//Uart_Printf("rec_data.bat_vol id is %d\n",(int)rec_data.bat_vol);
    		break;
    	case 0x301:
    		CANDATA.VMS_State = 1;                      //收到VMS廣播消息
    		break;
    	case 0x302:
    		rec_data.gear = CANDATA.CAN_DATA[4];        //檔位信號
    		break;
    		/* //輪轂電機電機
    	case 0x311:
    		rec_data.mot1_spe = ((CANDATA.CAN_DATA[0])|(CANDATA.CAN_DATA[1]<<8));         //1#電機轉速(2)
            rec_data.mot1_tor = (float)((CANDATA.CAN_DATA[2])|(CANDATA.CAN_DATA[3]<<8))*0.25-500;//1#電機轉矩(2)
             break;
    	case 0x321:
    		rec_data.mot2_spe = ((CANDATA.CAN_DATA[0])|(CANDATA.CAN_DATA[1]<<8));         //2#電機轉速(2)
            rec_data.mot2_tor = (float)((CANDATA.CAN_DATA[2])|(CANDATA.CAN_DATA[3]<<8))*0.25-500;//2#電機轉矩(2)
            break;
        case 0x331:
    		rec_data.mot3_spe = ((CANDATA.CAN_DATA[0])|(CANDATA.CAN_DATA[1]<<8));         //3#電機轉速(2)
            rec_data.mot3_tor = (float)((CANDATA.CAN_DATA[2])|(CANDATA.CAN_DATA[3]<<8))*0.25-500;//3#電機轉矩(2)
            break;
        case 0x343:
    		rec_data.mot4_spe = ((CANDATA.CAN_DATA[0])|(CANDATA.CAN_DATA[1]<<8));         //4#電機轉速(2)
            rec_data.mot4_tor = (float)((CANDATA.CAN_DATA[2])|(CANDATA.CAN_DATA[3]<<8))*0.25-500;//4#電機轉矩(2)
            break;
            */
        case 0x343:
    		rec_data.bm_status = CANDATA.CAN_DATA[4];         //繼電器狀態
            
            break;    
    	case 0x311:
    		rec_data.mot1_spe = ((CANDATA.CAN_DATA[0])|(CANDATA.CAN_DATA[1]<<8));         //1#電機轉速(2)
            rec_data.mot1_tor = (float)((CANDATA.CAN_DATA[2])|(CANDATA.CAN_DATA[3]<<8))*0.25-500;//1#電機轉矩(2)
    		
    		///現在使用的偏移量為10000
    		if(rec_data.mot1_spe >= 10000 && rec_data.mot1_spe <= 20504)
    			{
    			 //rec_data.speed = (int)((rec_data.mot1_spe - 10000)*8.567727/1000);
    			 rec_data.speed = (int)((rec_data.mot1_spe - 10000)*8.84332/1000);
    			}
    			
    		else if(rec_data.mot1_spe >= -504 && rec_data.mot1_spe <= 10000)
    			{
    			 rec_data.speed = (int)((10000 - rec_data.mot1_spe)*8.84332/1000);
    			 //rec_data.speed = (int)((10000 - rec_data.mot1_spe)*8.567727/1000);
    			}
    		else
    		   { rec_data.speed = 90;}
    		    
    		/*//協議規定的偏移量為2000
    		if(rec_data.mot1_spe >= 2000 && rec_data.mot1_spe <= 2925)
    			rec_data.speed = (int)((rec_data.mot1_spe - 2000)*97.5702/1000);
    		else if(rec_data.mot1_spe >= 1075 && rec_data.mot1_spe <= 2000)
    			rec_data.speed = (int)((2000 - rec_data.mot1_spe)*97.5702/1000);
    			
    			
    		else
    		    rec_data.speed = 90;
    		    
    		*/
    		//Uart_Printf("rec_data.mot1_spe id is %d\n",rec_data.mot1_spe);
    		//Uart_Printf("rec_data.speed id is %d\n",rec_data.speed);
    		break;
    	case 0x297:
    		rec_data.dtc_id = CANDATA.CAN_DATA[0];
            rec_data.dtc = (CANDATA.CAN_DATA[4]<<24) | (CANDATA.CAN_DATA[3]<<16) |(CANDATA.CAN_DATA[2]<<8) |(CANDATA.CAN_DATA[1]);
    		DTC_Deal();
    		break;
    	case 0x30c:
    		break;
    	case 0x30e:
    		break;
    	default:
    		//Uart_Printf("can3 id is %x\n",CANDATA.CAN_IDs);
    		break;
    }
    /*	//輪轂電機電機
    MOT_Deal();
    MOTtor_Deal();
    */
}
void MOT_Deal(void)     //07-18-16輪轂電機轉速處理
{
     int i,j;
     i=rec_data.mot1_spe;
     j=rec_data.mot2_spe;
     if(rec_data.mot1_spe<=rec_data.mot2_spe)
         j=rec_data.mot1_spe;
         i=rec_data.mot2_spe;
      if(rec_data.mot3_spe>=j &&rec_data.mot3_spe<=i)
         j=rec_data.mot3_spe;
      if(rec_data.mot3_spe >= i)
         j=i;
         i=rec_data.mot3_spe;
      if(rec_data.mot4_spe>=j &&rec_data.mot4_spe<=i)
         j=rec_data.mot4_spe;
      if(rec_data.mot4_spe >= i)
         j=i;
         i=rec_data.mot4_spe;
         rec_data.mot1_spe=(i+j)/2;
      
            if(rec_data.mot1_spe >= 2000 && rec_data.mot1_spe <= 2925)
    			rec_data.speed = (int)((rec_data.mot1_spe - 2000)*97.5702/1000);
    		else if(rec_data.mot1_spe >= 1075 && rec_data.mot1_spe <= 2000)
    			rec_data.speed = (int)((2000 - rec_data.mot1_spe)*97.5702/1000); 
    		else
    		    rec_data.speed = 90;   
      
         
}
void MOTtor_Deal(void)     //07-18-16輪轂電機扭矩處理
{
     
     int i,j;
     i=rec_data.mot1_tor;
     j=rec_data.mot2_tor;
     if(rec_data.mot1_tor<=rec_data.mot2_tor)
         j=rec_data.mot1_tor;
         i=rec_data.mot2_tor;
      if(rec_data.mot3_tor>=j &&rec_data.mot3_tor<=i)
         j=rec_data.mot3_tor;
      if(rec_data.mot3_tor >= i)
         j=i;
         i=rec_data.mot3_tor;
      if(rec_data.mot4_tor>=j &&rec_data.mot4_tor<=i)
         j=rec_data.mot4_tor;
      if(rec_data.mot4_tor >= i)
         j=i;
         i=rec_data.mot4_tor;
         rec_data.mot1_tor=(i+j)/2;
}
void DTC_Deal(void)
{
	int i;
	for(i=0;i<dtccount+1;i++)
	{
	    if(((rec_data.dtc>>8)&0xffff) == ((DTC[0][i]>>8)&0xffff))
	       {
	          flag = 0;          //code that already exit
	          dtc_same_flag = i;
	          break;
	       }
	}
	if(flag == 1)                //new DTC code added to DTC[]
	{
	    for(i=0;i<dtccount+1;i++)
	    {
	        if(DTC[0][i]==0)
	           {
	              dtccount = i;
	              break;
	           }
	    }
	    DTC[0][dtccount] = rec_data.dtc;
	    DTC[1][dtccount] =dtc_del_time;
	    dtccount++;
	}
	if(flag == 0)
	{   
	    if(((rec_data.dtc)&0xff) != ((DTC[0][dtc_same_flag])&0xff))
	    {
		  //add:
		   DTC[1][dtc_same_flag] = dtc_del_time;
	    }
	    for(i=0;i<dtccount+1;i++)
	    {
	        if(DTC[0][i]==0)
	            dtccount = i;
	    }
	    flag = 1;
	    dtc_same_flag = 0;
	 }
}

/*/////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////
    	CAN_Bit_cmd(CANINTF,RX0IF,0x00);
        
        CAN_Read_Data(RXB0SIDH,can_rec_data,13);
        
        CANDATA.CAN_IDs = (((int)can_rec_data[0])<<3) | ((can_rec_data[1]>>5) & 0x07);
        
        /////////////for extend frame data id://///////////////////////////////////////////
        CANDATA.CAN_IDe = (((int)can_rec_data[0])<<21) | (((can_rec_data[1]>>5) & 0x07)<<18)
                          | (((can_rec_data[1]) & 0x03)<<16) | ((can_rec_data[2])<<8)
                          | (can_rec_data[3]);   
        ////////////////////////////////////////////////////////////////////////////////////
        
        CANDATA.CAN_Frametype = (can_rec_data[1]>>3) & 0x01;
         ////////////////////for standard frame format: 數據幀:0;遠程幀:1;
        CANDATA.CAN_sFrameformat = (can_rec_data[1]>>4) & 0x01;
        ////////////////////for extend frame format: 數據幀:0;遠程幀:1;
        CANDATA.CAN_eFrameformat = (can_rec_data[4]>>6) & 0x01;
        /////////////////////////////////////////////////////////////////
        CANDATA.CAN_Datalength = (can_rec_data[4]) & 0x0f;
        CANDATA.CAN_DATA[0] = can_rec_data[5];
        CANDATA.CAN_DATA[1] = can_rec_data[6];
        CANDATA.CAN_DATA[2] = can_rec_data[7];
        CANDATA.CAN_DATA[3] = can_rec_data[8];
        CANDATA.CAN_DATA[4] = can_rec_data[9];
        CANDATA.CAN_DATA[5] = can_rec_data[10];
        CANDATA.CAN_DATA[6] = can_rec_data[11];
        CANDATA.CAN_DATA[7] = can_rec_data[12];
        
        Uart_Printf("CAN ID is 0x%x\n",CANDATA.CAN_IDs);
        Uart_Printf("CAN Frametype is %d\n",CANDATA.CAN_Frametype);
        Uart_Printf("CAN Frameformats is %d\n",CANDATA.CAN_sFrameformat);
        Uart_Printf("CAN Frameformate is %d\n",CANDATA.CAN_eFrameformat);
        Uart_Printf("CAN Datalength is %d\n",CANDATA.CAN_Datalength);
        
        Uart_Printf("0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x\n",
        CANDATA.CAN_DATA[0],CANDATA.CAN_DATA[1],CANDATA.CAN_DATA[2],CANDATA.CAN_DATA[3],
        CANDATA.CAN_DATA[4],CANDATA.CAN_DATA[5],CANDATA.CAN_DATA[6],CANDATA.CAN_DATA[7]);
*//////////////////////////////////////////////////////////////////////////////////////////

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日本免费一区二区三区| 在线欧美一区二区| 久久电影国产免费久久电影| 日本在线不卡视频一二三区| 欧美精品一区二区高清在线观看 | 国产一本一道久久香蕉| 国产一区二区在线免费观看| 国产成人午夜视频| 91国在线观看| 91精品婷婷国产综合久久| 日韩欧美一级精品久久| 日韩精品一区二区三区在线播放 | 国产日韩在线不卡| 国产精品国产精品国产专区不片| 国产精品美女久久久久aⅴ国产馆| 亚洲色图.com| 激情都市一区二区| 99re这里只有精品视频首页| 欧美三级中文字幕| 日韩精品资源二区在线| 欧美大度的电影原声| 国产三区在线成人av| 日本一区二区不卡视频| 天天综合网天天综合色| 国产成人综合在线播放| 91久久精品日日躁夜夜躁欧美| 精品国产sm最大网站免费看| 中文字幕中文字幕一区二区| 国模套图日韩精品一区二区| 欧美在线观看视频一区二区三区| 欧美一区2区视频在线观看| 国产精品丝袜久久久久久app| 日韩高清不卡一区| 国产成人亚洲综合色影视| 欧美猛男gaygay网站| 亚洲精品老司机| 国产一区二区三区黄视频| 在线成人高清不卡| 一级中文字幕一区二区| 粗大黑人巨茎大战欧美成人| 亚洲一级不卡视频| 色94色欧美sute亚洲线路二 | 欧美亚洲国产一卡| 五月天婷婷综合| 69堂国产成人免费视频| 国内精品嫩模私拍在线| 精品国产91洋老外米糕| 国产盗摄一区二区三区| 国产精品夫妻自拍| 欧美理论在线播放| 久久精品国产亚洲aⅴ| 精品福利一区二区三区| 成熟亚洲日本毛茸茸凸凹| 国产精品国产三级国产普通话99| 色综合天天在线| 日本人妖一区二区| 国产精品家庭影院| 欧美日韩一区高清| 九一九一国产精品| 亚洲欧洲性图库| 日韩手机在线导航| 成人午夜私人影院| 天天影视网天天综合色在线播放| 欧美精品一区二区三区四区 | 欧美人成免费网站| 国产成人高清在线| 午夜视频久久久久久| 久久久亚洲午夜电影| 欧美浪妇xxxx高跟鞋交| 成人黄色电影在线| 蜜臀av一区二区三区| 亚洲综合久久av| 久久无码av三级| 日韩三级高清在线| 色婷婷一区二区三区四区| 国产精品一区免费在线观看| 亚洲福中文字幕伊人影院| 中文字幕不卡三区| 欧美大片在线观看一区二区| 91免费视频观看| 成人av免费在线观看| 国产在线视频不卡二| 视频一区二区三区入口| 亚洲午夜免费电影| 一区二区三区日韩| 亚洲欧美日韩一区| 亚洲视频在线一区观看| 久久久久国产精品麻豆| 欧美成va人片在线观看| 日韩美女视频一区二区在线观看| 精品视频一区三区九区| 欧美日韩精品是欧美日韩精品| 色综合欧美在线| 欧美性生活一区| 欧美欧美午夜aⅴ在线观看| 欧美一二三在线| 久久新电视剧免费观看| 国产精品久久久一本精品| 一区二区三区欧美激情| 亚洲午夜精品一区二区三区他趣| 亚洲va中文字幕| 精品一区精品二区高清| 成人晚上爱看视频| 欧美丝袜丝交足nylons图片| 在线播放中文字幕一区| 久久久久久久精| 国产精品国产三级国产普通话99| 亚洲精品高清视频在线观看| 日韩黄色片在线观看| 紧缚奴在线一区二区三区| 国产成人av电影免费在线观看| 91麻豆福利精品推荐| 91精品国产麻豆国产自产在线| 久久精品一区二区三区不卡 | 91精品午夜视频| 国产精品久久精品日日| 石原莉奈一区二区三区在线观看| 国产精品亚洲第一区在线暖暖韩国| 91老师国产黑色丝袜在线| 91精品国产一区二区三区香蕉| 日本一区二区成人| 人人狠狠综合久久亚洲| 在线日韩av片| 日韩理论片一区二区| 国产伦精品一区二区三区视频青涩| 色88888久久久久久影院野外| 精品处破学生在线二十三| 亚洲影视资源网| 成人app网站| 久久综合丝袜日本网| 爽好多水快深点欧美视频| 99国产精品视频免费观看| 26uuuu精品一区二区| 图片区小说区区亚洲影院| 在线观看视频91| 亚洲精品中文字幕在线观看| 国产成a人无v码亚洲福利| 欧美大片在线观看| 男人的天堂亚洲一区| 在线播放一区二区三区| 亚洲.国产.中文慕字在线| 在线影视一区二区三区| 国产精品久久久久久久久免费相片| 久久激情综合网| 久久人人爽人人爽| 国产精品原创巨作av| 欧美韩国日本综合| 国产91精品入口| 中文字幕一区二区三区蜜月| 成人av在线观| 亚洲欧美精品午睡沙发| 欧美亚洲日本国产| 三级一区在线视频先锋| 日韩欧美在线网站| 国产在线视频精品一区| 日韩毛片在线免费观看| 色妞www精品视频| 性做久久久久久| 精品久久久久久最新网址| 国产寡妇亲子伦一区二区| 国产精品国产自产拍高清av王其| 99久久精品国产毛片| 亚洲成a人片在线不卡一二三区| 欧美日韩精品电影| 久久精品国产在热久久| 国产欧美一区二区三区鸳鸯浴| 91九色最新地址| 精品一区二区三区日韩| 亚洲摸摸操操av| 亚洲国产精品欧美一二99| 日韩欧美一级在线播放| 91国偷自产一区二区使用方法| 免费成人你懂的| 日韩毛片高清在线播放| 精品久久久久久久久久久久久久久 | 6080亚洲精品一区二区| 国产精品主播直播| 丝袜诱惑制服诱惑色一区在线观看 | 一区二区三区国产精品| 久久精品视频在线免费观看| 欧美亚洲综合网| 91麻豆自制传媒国产之光| 国产乱子伦一区二区三区国色天香| 一区二区三区鲁丝不卡| 国产女人水真多18毛片18精品视频| 欧美日韩亚洲丝袜制服| eeuss鲁片一区二区三区在线观看| 视频在线在亚洲| 有码一区二区三区| 18成人在线观看| 亚洲国产成人私人影院tom| 欧美精品一区二区三区视频| 欧美一区午夜视频在线观看| 色欧美日韩亚洲| 不卡电影一区二区三区| 高清成人免费视频| 国产精品综合一区二区三区| 久久精品久久99精品久久| 蜜桃久久久久久久| 久久精品国产久精国产|