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

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

?? can.c

?? LED顯示面板
?? C
字號:
#include "main.h"

//#pragma interrupt_handler can_ReceiveData:19

/*******************************************************************
CAN initialization:
Mailbox 0: Receive  --> interrupt
Mailbox 1: Transmit --> polling
*******************************************************************/
#define TYP_RESET		5
#define TYP_BAUD		10

#define SELFID  2

extern unsigned char sysrst,Pass_Flag;
unsigned char canbaud;
extern VCI_CAN_OBJ rece_data[20];
extern unsigned char soundoff_flag,ack_flag,alarm_flag;

const unsigned char CanBaud[6][3]={{0x02,0x04,0x13},{0x06,0x04,0x13},{0x0E,0x04,0x13},{0x12,0x04,0x13},{0x1E,0x04,0x13},{0x26,0x04,0x13}};
//波特率數組

//15個MOB的ID和MID
unsigned long CANMOBID[15]={0x10000000,0x20000000,0x30000000,0x40000000,0x50000000,0x60000000,0x01000000,0x01000001,0x0200ff00,0x12000001,0x01000002,0x01000003,0x01000004,0x01000005,0x1300ff01};
unsigned long CANMOBMD[15]={0x00ff000f,0x00ff000f,0x00ff000f,0x1fffffff,0x1fffffff,0x1fffffff,0x1fffffff,0x1fffffff,0x1fffffff,0x1fffffff,0x1fffffff,0x1fffffff,0x1fffffff,0x1fffffff,0x1fffffff};
unsigned char CANIDT[15][4]={0};
unsigned char CANIDM[15][4]={0};
unsigned char counterTemp;
extern unsigned char send_count;
extern SHD_LED  pannel_led[48];
extern unsigned char soundoff[48];

void can_init (void)                            //CAN初始化函數
{
 canMob_init();
}


void canMob_init (void)                       //MOB初始化函數
{
    unsigned char i,j;
	unsigned long temp;
	unsigned int temp1,temp2;
	
	CLI();                                    //關中斷
	//DDRD=(1<<PD5)|(0<<PD6);   //TXCAN, RXCNA
	DDRD|=0x20;                               //CAN管腳初始化
	DDRD&=0xBF;
	CANGCON |= (1<<SWRES);              //reset CAN interface
    
	Pass_Flag = 0x00;
	//CANMOBID[2]=(unsigned long)(SELFID<<8)|CANMOBID[2];
	for(i=0;i<6;i++)                          //15個郵箱初始化
	{
	 temp=CANMOBID[i]<<3;                      //ID初始化
	 temp1=(unsigned int)temp;
	 temp2=(unsigned int)(temp/0x00010000);
	 CANIDT[i][3]=(unsigned char)temp1;
	 CANIDT[i][2]=(unsigned char)(temp1>>8);
	 CANIDT[i][1]=(unsigned char)temp2;
	 CANIDT[i][0]=(unsigned char)(temp2>>8); 
	 Pass_Flag = Pass_Flag + 1;
	 NOP();
	}
    if(Pass_Flag!=0x06)
	  RESET;
	 WDR();
	 
	 Pass_Flag = 0x00;
	for(i=0;i<6;i++)
	{
	 temp=CANMOBMD[i]<<3;
	 temp1=(unsigned int)temp;               //低16位
	 temp2=(unsigned int)(temp/0x00010000);  //高16位
	 CANIDM[i][3]=(unsigned char)temp1;
	 CANIDM[i][2]=(unsigned char)(temp1>>8);
	 CANIDM[i][1]=(unsigned char)temp2;
	 CANIDM[i][0]=(unsigned char)(temp2>>8); 
	 Pass_Flag = Pass_Flag + 1;
	 NOP();
	}
	 if(Pass_Flag!=0x06)
	  RESET;
    //reset all MObs
	
	 Pass_Flag = 0x00;
    for (i=0; i<15; i++)
    {
        CANPAGE = (i<<4);           //select MOb
        CANCDMOB = 0;           	//disable MOb
        CANSTMOB = 0;               //clear status
        CANIDT1 = 0;        		//clear ID
        CANIDT2 = 0;
        CANIDT3 = 0;
        CANIDT4 = 0;
        CANIDM1 = 0;            	//clear mask
        CANIDM2 = 0;
        CANIDM3 = 0;
        CANIDM4 = 0;
        for (j=0; j<8; j++)
            CANMSG = 0;         //clear data
			
	     Pass_Flag = Pass_Flag + 1;		
    }
	  if(Pass_Flag!=0x0f)
	    RESET;
		
	 WDR();
	CANBT1 = CanBaud[2][0];         
    CANBT2 = CanBaud[2][1];
    CANBT3 = CanBaud[2][2];
	
    //configure MObi
	/******************************************************************/
	
	 Pass_Flag = 0x00;
   for (i=0; i<3; i++)
   {
	 CANPAGE = (i<<4);                   //MOb 0,1,2設置為接收模式模式
     CANIDT1 = CANIDT[i][0];        		//初始化 ID
     CANIDT2 = CANIDT[i][1];
     CANIDT3 = CANIDT[i][2];
     CANIDT4 = CANIDT[i][3];
     CANIDM1 = CANIDM[i][0];            	//初始化 mask
     CANIDM2 = CANIDM[i][1];
     CANIDM3 = CANIDM[i][2];
     CANIDM4 = CANIDM[i][3];               //0 = ignore bit
    //CANIDM4 = (1<<IDEMSK);                          //identifier extention mask
     CANCDMOB = (2<<CONMOB0)|(1<<IDE)|(8<<DLC0);     //reception, ext. ID,rev2.0B
	 NOP();
	 Pass_Flag = Pass_Flag + 1;		
	}
	 
	  if(Pass_Flag!=0x03)
	    RESET;
		
	 WDR();
	 
	  Pass_Flag = 0x00;
	for(i=3;i<6;i++)                       
	{
	 CANPAGE = (i<<4);                   //MOb3,4,5設置為發送模式
     CANIDT1 = CANIDT[i][0];        		//初始化 ID
     CANIDT2 = CANIDT[i][1];
     CANIDT3 = CANIDT[i][2];
     CANIDT4 = CANIDT[i][3];
     CANIDM1 = CANIDM[i][0];            	//初始化 mask
     CANIDM2 = CANIDM[i][1];
     CANIDM3 = CANIDM[i][2];
     CANIDM4 = CANIDM[i][3];               //0 = ignore bit
     CANCDMOB = (1<<IDE)|(8<<DLC0);    
	 NOP();
	  Pass_Flag = Pass_Flag + 1;		
	}
	   if(Pass_Flag!=0x03)
	    RESET;
		
	CANGCON = (1<<ENASTB);                //start CAN interface, enable mod
	
	CANGIE = (1<<ENIT)| (1<<ENRX)|(1<<ENTX);    //enable receive interrupt and transmitte interrupt 
	CANIE1 = 0x00;                  
	CANIE2 = 0x3f;                              //enable ALL MObs interrupt
    
	 WDR();
    while (!(CANGSTA & (1<<ENFG)));         //wait until module ready
	
    CANGCON |= (1<<ENA);      //enable CAN controller
	
	SEI();
}



/*******************************************************************
CAN transmission via mailbox 1 (polling)
*******************************************************************/
void can_tx (VCI_CAN_OBJ msg)
{
    unsigned char i,index,pass_Flag;
	long temp_id;
	
	pass_Flag = 0x01;
	pass_Flag <<= 1;
	msg.ID <<= 3;    
	temp_id = msg.ID&0x0f000000 ;
	index =( unsigned char )(temp_id>>24);
	index = index + 3;
    CANPAGE = (index<<4);
    CANCDMOB = (1<<IDE) |(8<<DLC0);   
	pass_Flag <<= 1;                                               
    CANIDT4 = (unsigned char) (msg.ID&0xF8);
    CANIDT3 = (unsigned char) (msg.ID>>8);
    CANIDT2 = (unsigned char) (msg.ID>>16);
	pass_Flag <<= 1;
    CANIDT1 = (unsigned char) (msg.ID>>24);
	if(pass_Flag!=0x08)
	  RESET;
    for(i=0;i<8;i++)                               
      {
	   
       CANMSG = msg.Data[i];
	  }        
    CANCDMOB |= (1<<CONMOB0);           //enable transmission
}


#pragma interrupt_handler can_ReceiveData:19
void can_ReceiveData (void)             //receive interrupt 
{
	unsigned char nb_data;
	unsigned char i,err_temp,sta_temp;
	unsigned int  RCtemp2,tempp,RCF;
	long id_temp;
	VCI_CAN_OBJ msg[3];
	
	WDR();
    CANGIE &= ~((1<<ENRX)|(1<<ENTX));                  //關接收中斷
	RCtemp2=CANSIT2;                       //讀取中斷信息
	err_temp = CANTEC;                     //讀取發送錯誤計數器
	
	if(err_temp>96)                       
	RESET;
	
	err_temp = CANREC;                   //讀取接收錯誤計數器
	if(err_temp>128)
	RESET;
	
	if(RCtemp2&(0x38))
	{
	for(i=3;i<6;i++)                    //查詢前三個郵箱中斷狀態
	{
	  tempp=(1<<i);
	  RCF=(RCtemp2&tempp);
	   if(RCF!=0)
	    {  
		 CANPAGE = i<<4;
		 sta_temp = CANSTMOB;
		 if(sta_temp&0x40)             //是發送完成中斷
		 {
		  send_count = 0;              //清發送計數器
		     if(LED)
	          send_led_on;
		      else 
		        send_led_off ;
		   
		    WDR();
		 }
		}
	}
	}
	else if(RCtemp2&(0x07))
	{
    for(i=0;i<3;i++)                       //判斷哪個郵箱產生接收中斷
	 {
	  tempp=(1<<i);
	  RCF=(RCtemp2&tempp);
	  if(RCF!=0)
	    {  
		    if(LED)
              rece_led_on;
			else
		       rece_led_off;
		  CANPAGE = i<<4;
		   WDR();
		 
	   id_temp = 0;
       id_temp  |= ((unsigned long) CANIDT1<<24);    //get identifier
       id_temp  |= ((unsigned long) CANIDT2<<16);
       id_temp  |= ((unsigned long) CANIDT3<<8);
       id_temp  |= (CANIDT4&0xF8);
       id_temp  >>= 3;
	   WDR();
	   switch(id_temp)
	   {
	   case  0x280000 :{ 
	                    for (nb_data = 0; nb_data <8; nb_data++)  
	                        {
	                         rece_data[0].Data[nb_data]=CANMSG;
	                           } 
							   WDR();
						rece_data[0].ID= 0x280000;	   
							   break;
							   }
	   case  0x280001 :{
	                     for (nb_data = 0; nb_data <8; nb_data++)  
	                        {
	                         rece_data[1].Data[nb_data]=CANMSG;
	                           } 
							   WDR();
					    rece_data[1].ID= 0x280001;	 		   
							   break;
							   }
	   case  0x280002 :{
	                     for (nb_data = 0; nb_data <8; nb_data++)  
	                        {
	                         rece_data[2].Data[nb_data]=CANMSG;
	                           } 
							   WDR();
						 rece_data[2].ID= 0x280002;	 	   
							   break;
	                           }
	   case  0x280100 :{
	                     for (nb_data = 0; nb_data <8; nb_data++)  
	                        {
	                         rece_data[3].Data[nb_data]=CANMSG;
	                           } 
							   WDR();
						 rece_data[3].ID= 0x280100;	 	   
							   break;
	                            }
	   case  0x280101 :{
	                     for (nb_data = 0; nb_data <8; nb_data++)  
	                        {
	                         rece_data[4].Data[nb_data]=CANMSG;
	                           } 
							   WDR();
						rece_data[4].ID= 0x280101;	 	   
							   break;
	                           }
	   case  0x280200 :{
	                     for (nb_data = 0; nb_data <8; nb_data++)  
	                        {
	                         rece_data[5].Data[nb_data]=CANMSG;
	                           }
							   WDR();
						 rece_data[5].ID= 0x280200;	 	    
							   break;
	                           }
	   case  0x280201 :{
	                     for (nb_data = 0; nb_data <8; nb_data++)  
	                        {
	                         rece_data[6].Data[nb_data]=CANMSG;
	                           } 
							   WDR();
						 rece_data[6].ID= 0x280201;	 	   
							   break;
	                           }
	   case  0x280300 :{
	                     for (nb_data = 0; nb_data <8; nb_data++)  
	                        {
	                         rece_data[7].Data[nb_data]=CANMSG;
	                           } 
							   WDR();
					     rece_data[7].ID= 0x280300;	 		   
							   break;
	                           }
	   case  0x280301 :{
	                     for (nb_data = 0; nb_data <8; nb_data++)  
	                        {
	                         rece_data[8].Data[nb_data]=CANMSG;
	                           } 
							   WDR();
						rece_data[8].ID= 0x280301;	 	   
							   break;
	                           }
	   case  0x280400 :{
	                      for (nb_data = 0; nb_data <8; nb_data++)  
	                        {
	                         rece_data[9].Data[nb_data]=CANMSG;
	                           } 
							   WDR();
						 rece_data[9].ID= 0x280400;	 	   
							   break;
	                           }
	   case  0x280401 :{
	                      for (nb_data = 0; nb_data <8; nb_data++)  
	                        {
	                         rece_data[10].Data[nb_data]=CANMSG;
	                           } 
							   WDR();
						 rece_data[10].ID= 0x280401;	 	   
							   break;
	                           }
	   case  0x280500 :{
	                      for (nb_data = 0; nb_data <8; nb_data++)  
	                        {
	                         rece_data[11].Data[nb_data]=CANMSG;
	                           } 
							   WDR();
						 rece_data[11].ID= 0x280500;	 	   
							   break;
	                           }
	   case  0x280501 :{
	                      for (nb_data = 0; nb_data <8; nb_data++)  
	                        {
	                         rece_data[12].Data[nb_data]=CANMSG;
	                           } 
							   WDR();
						  rece_data[12].ID= 0x280501;	 	   
							   break;
	                           }
	   case  0x280600 :{
	                      for (nb_data = 0; nb_data <8; nb_data++)  
	                        {
	                         rece_data[13].Data[nb_data]=CANMSG;
	                           } 
							   WDR();
						  rece_data[13].ID= 0x280600;	 	   
							   break;
	                           }
	   case  0x280601 :{
	                      for (nb_data = 0; nb_data <8; nb_data++)  
	                        {
	                         rece_data[14].Data[nb_data]=CANMSG;
	                           } 
							   WDR();
						  rece_data[14].ID= 0x280601;	 	   
							   break;
	                           }
	   case  0x280602 :{
	                      for (nb_data = 0; nb_data <8; nb_data++)  
	                        {
	                         rece_data[15].Data[nb_data]=CANMSG;
	                           }
							   WDR();
							rece_data[15].ID= 0x280602;	     
							   break;
	                           }
	   case  0x280700 :{
	                      for (nb_data = 0; nb_data <8; nb_data++)  
	                        {
	                         rece_data[16].Data[nb_data]=CANMSG;
	                           } 
							   WDR();
							 rece_data[16].ID= 0x280700;	   
							   break;
	                           }
	   case  0x280701 :{
	                      for (nb_data = 0; nb_data <8; nb_data++)  
	                        {
	                         rece_data[17].Data[nb_data]=CANMSG;
	                           } 
							   WDR();
						    rece_data[17].ID= 0x280701;	 	   
							   break;
	                             }
	   case  0x280702 :{
	                       for (nb_data = 0; nb_data <8; nb_data++)  
	                        {
	                         rece_data[18].Data[nb_data]=CANMSG;
	                           } 
							   WDR();
							rece_data[18].ID= 0x280702;	    
							   break;
	                           }
	   case  0x8282801 :{
	                        for (nb_data = 0; nb_data <8; nb_data++)  
	                        {
	                         rece_data[19].Data[nb_data]=CANMSG;
	                           } 
							 WDR();
	                        if(rece_data[19].Data[0]==0x5a)
							{
							soundoff_flag=0x5a;
								}
						   else if(rece_data[19].Data[0]==0xa5)		
						   {	
						   ack_flag=0x5a;
						   }
						   
						   else if(rece_data[19].Data[0]==0xff)		
						   {
						   alarm_flag = 0x5a;
						   }
						     break;
	                           }					   
	    default:RESET;
	       }
		 }
	   }
	 }
		CANSTMOB &= ~((1<<RXOK)|(1<<TXOK));
		CANCDMOB = 0x98;                      //接收使能 
		CANGIE |= (1<<ENRX);                   //開中斷 
		CANGIE |= (1<<ENTX);      
		 WDR();
}






?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
五月婷婷激情综合| 不卡的av网站| 国产不卡在线播放| 欧美日韩在线播| 国产亚洲欧美日韩在线一区| 一个色在线综合| 高清视频一区二区| 宅男在线国产精品| 亚洲精品欧美激情| 国产91精品入口| 日韩精品一区二| 亚洲精选一二三| 成人午夜在线播放| 欧美刺激午夜性久久久久久久| 亚洲免费大片在线观看| 国产成人精品免费一区二区| 日韩一区二区电影网| 一区二区三区欧美视频| 成人免费毛片app| 2021中文字幕一区亚洲| 午夜激情一区二区三区| 欧美伊人精品成人久久综合97 | 一区二区激情视频| 国产精品69毛片高清亚洲| 日韩一级精品视频在线观看| 亚洲一区二区三区免费视频| 91视视频在线观看入口直接观看www| 久久综合狠狠综合| 黄网站免费久久| 欧美mv日韩mv国产网站app| 午夜视频在线观看一区| 欧美色国产精品| 亚洲成人动漫在线观看| 欧美精品一级二级三级| 日韩成人精品在线| 91麻豆精品国产91久久久使用方法 | 日韩一区二区精品葵司在线| 天堂av在线一区| 欧美一区午夜精品| 美女在线视频一区| 精品理论电影在线观看 | 久久久精品蜜桃| 国产中文一区二区三区| 久久久精品黄色| 成人黄页在线观看| 亚洲精选一二三| 91精品国产色综合久久不卡蜜臀| 日韩精品五月天| 精品捆绑美女sm三区| 粉嫩在线一区二区三区视频| 国产精品久久久久婷婷 | 成人激情黄色小说| 亚洲免费观看在线观看| 欧美喷潮久久久xxxxx| 麻豆国产一区二区| 国产女人aaa级久久久级| 99久久精品免费看国产免费软件| 亚洲精品第1页| 91精品国产综合久久精品| 国内精品嫩模私拍在线| 中文字幕欧美一区| 欧美精品一级二级| 国产成人夜色高潮福利影视| 亚洲精品国产一区二区精华液| 欧美日韩一区久久| 久久精品理论片| 欧美激情一区二区| 欧美午夜精品一区| 国产乱码精品一区二区三| 一区二区视频在线看| 日韩欧美123| 色乱码一区二区三区88| 久久99国产精品麻豆| 亚洲欧洲日韩av| 欧美一区二区三区在线观看| a在线播放不卡| 美女在线一区二区| 亚洲精品视频一区二区| 久久综合九色综合97_久久久| 91亚洲永久精品| 狠狠色丁香久久婷婷综| 亚洲综合丁香婷婷六月香| 国产日韩亚洲欧美综合| 91麻豆精品国产91久久久久久久久| 麻豆视频一区二区| 亚洲综合区在线| 国产精品美女久久久久久久 | 天天做天天摸天天爽国产一区| 日韩视频免费直播| 欧洲一区在线观看| 99久久99久久精品国产片果冻| 蜜臀精品一区二区三区在线观看 | 欧美怡红院视频| 成人精品在线视频观看| 日韩av中文在线观看| 一区二区三区不卡视频在线观看| 日韩精品一区二区三区四区视频 | 日韩高清不卡一区二区三区| 国产精品欧美经典| 日韩午夜激情电影| 欧美人妇做爰xxxⅹ性高电影| 91在线视频观看| 成人黄色国产精品网站大全在线免费观看 | 国产精品成人在线观看| 欧美xxxxxxxx| 日韩欧美在线不卡| 欧美日韩在线电影| 欧美性高清videossexo| 99re这里只有精品6| 成人免费三级在线| 粉嫩13p一区二区三区| 国产一区二区三区| 国产自产v一区二区三区c| 韩国中文字幕2020精品| 国产原创一区二区三区| 精品一区二区三区在线视频| 裸体一区二区三区| 麻豆国产欧美日韩综合精品二区| 日韩黄色免费电影| 免费精品视频在线| 日产欧产美韩系列久久99| 奇米影视一区二区三区| 日本欧美在线观看| 极品少妇一区二区| 国产ts人妖一区二区| 成人丝袜视频网| 91原创在线视频| 欧美性受极品xxxx喷水| 制服丝袜国产精品| 久久久99久久| 国产精品免费视频一区| 亚洲一区免费观看| 免费在线观看视频一区| 免费高清在线一区| 国产一区激情在线| 99免费精品在线| 欧美三级资源在线| 欧美哺乳videos| 中文字幕精品三区| 亚洲电影中文字幕在线观看| 免费看欧美美女黄的网站| 国产激情精品久久久第一区二区| www.性欧美| 欧美欧美欧美欧美| 337p粉嫩大胆噜噜噜噜噜91av| 国产欧美日韩在线视频| 亚洲精品高清视频在线观看| 蜜臀精品一区二区三区在线观看| 国产传媒一区在线| 色哟哟一区二区在线观看 | 亚洲国产经典视频| 亚洲尤物在线视频观看| 极品少妇一区二区三区精品视频 | 亚洲精品在线电影| 亚洲欧美日韩国产成人精品影院| 日韩电影在线免费看| 福利一区二区在线观看| 欧美日本免费一区二区三区| 久久精品夜色噜噜亚洲aⅴ| 一区二区三区免费观看| 韩国中文字幕2020精品| 欧美日韩中文字幕一区| 国产精品丝袜久久久久久app| 亚洲国产成人av网| 成人精品国产免费网站| 日韩手机在线导航| 亚洲综合一区二区三区| 国产精品综合一区二区三区| 欧美日韩午夜影院| 国产欧美精品区一区二区三区| 亚洲高清免费在线| 91香蕉视频污| 2欧美一区二区三区在线观看视频| 亚洲一区二区3| 本田岬高潮一区二区三区| 欧美一区二区二区| 亚洲高清免费一级二级三级| 99久久精品国产麻豆演员表| 亚洲精品一区二区在线观看| 亚洲h动漫在线| 91碰在线视频| 国产网红主播福利一区二区| 久久福利资源站| 欧美三级乱人伦电影| 亚洲欧美日韩国产另类专区| 不卡一区中文字幕| 日本一区二区三区在线不卡| 国产一区在线观看麻豆| 日韩一级欧美一级| 麻豆91在线观看| 91精品国产综合久久久久| 亚洲一区免费观看| 欧美三级日韩三级国产三级| 亚洲精品中文字幕在线观看| 成人国产电影网| 国产精品久久久久久久浪潮网站| 国产麻豆午夜三级精品| 久久亚洲一区二区三区四区| 精品一区二区综合| 国产网站一区二区三区|