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

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

?? can._c

?? can tongxunCAN128的底層驅動
?? _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;
unsigned char canbaud;

const Uchar CanBaud[6][3]={{0x00,0x04,0x13},{0x02,0x04,0x13},{0x06,0x04,0x13},{0x08,0x04,0x13},{0x0E,0x04,0x13},{0x12,0x04,0x13}};



unsigned long CANMOBID[15]={0x1300ff01,0x1300ff01,0x02000000|(SELFID<<8),0x02000000|(SELFID<<8),0x0100ff00,0x0100ff00,0x01000000|(SELFID<<8),0x01000000|(SELFID<<8),0x0200ff00,0x12000001,0x01000000|(SELFID<<8),0x01000000|(SELFID<<8),0x01000000|(SELFID<<8),0x01000000|(SELFID<<8),0x1300ff01};
unsigned long CANMOBMD[15]={0x1f00ffff,0x1f00ffff,0x0f00ff00,            0x0f00ff00,            0x0f00ff00,0x0f00ff00,0x0f00ff00,            0x0f00ff00,            0x0f00ff00,0x1f0000ff,0x0f00ff00,0x0f00ff00,0x0f00ff00,0x0f00ff00,0x1f00ffff};
unsigned char CANIDT[15][4]={0};
unsigned char CANIDM[15][4]={0};
Uchar counterTemp;
void can_init (void)
{
 canMob_init();
 //IDRcbufInit();
 //RstIDused();
}


void canMob_init (void)
{
    unsigned char i,j;
	unsigned long temp;
	unsigned int temp1,temp2;
	
	
	//DDRD=(1<<PD5)|(0<<PD6);   //TXCAN, RXCNA
	DDRD|=0x20;
	DDRD&=0xBF;
	CANGCON |= (1<<SWRES);              //reset CAN interface
    
	
	//CANMOBID[2]=(unsigned long)(SELFID<<8)|CANMOBID[2];
	for(i=0;i<15;i++)
	{
	 temp=CANMOBID[i]<<3;
	 temp1=(unsigned int)temp;
	 temp2=(unsigned int)(temp/0x00010000);
	 CANIDT[i][3]=(Uchar)temp1;
	 CANIDT[i][2]=(Uchar)(temp1>>8);
	 CANIDT[i][1]=(Uchar)temp2;
	 CANIDT[i][0]=(Uchar)(temp2>>8); 
	 NOP();
	}
	
	for(i=0;i<15;i++)
	{
	 temp=CANMOBMD[i]<<3;
	 temp1=(unsigned int)temp;
	 temp2=(unsigned int)(temp/0x00010000);
	 CANIDM[i][3]=(Uchar)temp1;
	 CANIDM[i][2]=(Uchar)(temp1>>8);
	 CANIDM[i][1]=(Uchar)temp2;
	 CANIDM[i][0]=(Uchar)(temp2>>8); 
	 NOP();
	}
    //reset all MObs
    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
    }

    //bit timing -> datasheet page 260 (check table) 250Kbps
    //CANBT1 = 0x02;            //16Mhz,1Mbps
    //CANBT2 = 0x04;
    //CANBT3 = 0x13;
    
	//canbaud= EEPROM_read(0x0020);
	//CANBT1 = CanBaud[2][0];         
    //CANBT2 = CanBaud[2][1];
    //CANBT3 = CanBaud[2][2];
	
	CANBT1 = 0x0e;         
    CANBT2 = 0x04;
    CANBT3 = 0x13;
	
    //configure MObi
	/******************************************************************/
   for (i=0; i<15; i++)
   {
	CANPAGE = (i<<4);                   //MOb number 0
     CANIDT1 = CANIDT[i][0];        		//clear ID
     CANIDT2 = CANIDT[i][1];
     CANIDT3 = CANIDT[i][2];
     CANIDT4 = CANIDT[i][3];
     CANIDM1 = CANIDM[i][0];            	//clear mask
     CANIDM2 = CANIDM[i][1];
     CANIDM3 = CANIDM[i][2];
     CANIDM4 = CANIDM[i][3];               //0 = ignore bit
    //CANIDM4 = (1<<IDEMSK);                          //identifier extention mask
     CANCDMOB = (2<<CONMOB) | (1<<IDE);     //reception, ext. ID,rev2.0B
	 NOP();
	}
	
    //CANHPMOB = (2<<HPMOB);
	CANGCON = (1<<ENASTB);              //start CAN interface, enable mode
/***********************************************************************/
    //interrupts
    //CANGIE = (1<<ENIT) | (1<<ENRX);         //enable receive interrupt
	
	CANGIE = (1<<ENIT) | (1<<ENTX)| (1<<ENRX);    //enable receive interrupt and transmitte interrupt 
    /////////////////////////////////////////////////////////////////////// 
	CANIE1 = 0xff;                  
	CANIE2 = 0x7f;                         //enable ALL MObs interrupt
    CANSIT1 = 0;                          //clear MOb status interrupt
    CANSIT2 = 0;
    
///////////////////////////	Enable Mob0 transmit/////////////////////
    CLI();
    CANPAGE = (1<<4);
    CANCDMOB |= (1<<CONMOB0);
/////////////////////////////////////////////////////////////////////

    while (!(CANGSTA & (1<<ENFG)));         //wait until module ready
	
    CANGCON |= (1<<ENA);      //enable CAN controller
}

/*******************************************************************
CAN transmission via mailbox 1 (polling)
*******************************************************************/
void can_tx (VCI_CAN_OBJ msg)
{
    unsigned char i;
	//enable MOb1, auto increment index, start with index = 0
    CANPAGE = (1<<4);

    CANCDMOB = (1<<IDE) | (8<<DLC0);        //set IDE bit rev2.0B, data length = 8

   
	msg.ID <<= 3;                   //write 29 Bit identifier
    CANIDT4 = (unsigned char) (msg.ID&0xF8);
    CANIDT3 = (unsigned char) (msg.ID>>8);
    CANIDT2 = (unsigned char) (msg.ID>>16);
    CANIDT1 = (unsigned char) (msg.ID>>24);
	
    for(i=0;i<8;i++)                               
      {
	   
       CANMSG = msg.Data[i];
	  }
   // for (i=0; i<8; i++)       //put data in mailbox 6
        
    CANCDMOB |= (1<<CONMOB0);           //enable transmission

    //while (!(CANSTMOB & (1<<TXOK)));        //wait until complete
    //CANSTMOB &= ~(1<<TXOK);             //reset flag
}


#define can_TX_BUFFER_SIZE  8
VCI_CAN_OBJ tx_msg_buff[can_TX_BUFFER_SIZE];
Uchar can_sendingP;
Uchar can_willsendP;
Uchar can_tx_count;
Uint CAN_tx_OverFlow= 60000;
void can_tx_buff(VCI_CAN_OBJ tx_msg)
{ 
  CAN_tx_OverFlow = 60000;
  while (can_tx_count == can_TX_BUFFER_SIZE)
   { 
     CAN_tx_OverFlow--;
	 if(CAN_tx_OverFlow<=50)
	   {
	      can_tx_count = 0;
		  can_sendingP = can_willsendP; 
		  CANSTMOB &= ~(1<<TXOK);
		  CAN_tx_OverFlow = 60000;
	   }
   }
  if(can_tx_count || (CANGSTA & (1<<TXBSY)))
  {
     tx_msg_buff[can_willsendP] = tx_msg;
     if(++can_willsendP == can_TX_BUFFER_SIZE)
	     can_willsendP = 0;
	 ++can_tx_count;
  } 
  else 
  {
    if(can_willsendP != can_sendingP)
	{
	  NOP();
	  can_willsendP=0;
	  can_sendingP=0;
	}
    can_tx(tx_msg);
  }  
}


/*******************************************************************
CAN receive interrupt service routine (mailbox i)
*******************************************************************/
#pragma interrupt_handler can_ReceiveData:19
void can_ReceiveData (void)             //receive interrupt 
{Uchar RCFlag;
	unsigned char nb_data;
	unsigned char temp = CANPAGE;           //save CANPAGE
	unsigned char i,tt=0,CAN_REMOb[15],nn;
	unsigned int RC_CANSI,RCtemp1,RCtemp2,tempp,RCF;
	VCI_CAN_OBJ msg[15];

    //VCI_CAN_OBJ CanTkfrm;

	
if(CANSTMOB & (1<<TXOK))
 { 
   CANSTMOB &= ~(1<<TXOK);
   if(can_tx_count)
     {
	   --can_tx_count;
	   can_tx(tx_msg_buff[can_sendingP]);
	   if(++can_sendingP==can_TX_BUFFER_SIZE) can_sendingP=0;
	 }
 }
else 
 {	 
	RCtemp2=CANSIT2;
	RCtemp1=CANSIT1;
	CANSTMOB &= ~(1<<RXOK);
	RC_CANSI=(RCtemp1<<8)|RCtemp2;
    for(i=0;i<15;i++)
	 {
	  tempp=(1<<i);
	  RCF=(RC_CANSI&tempp);
	  if(RCF!=0)
	    {
		 if(i==10)
		   NOP();
		 CAN_REMOb[tt]=i;
		 tt++;
		 }
	 }
	  
   /* for(i=0;i<tt;i++)
	{
	 CANPAGE = (CAN_REMOb[i]<<4);
	 CANSTMOB &= ~(1<<RXOK);
	 for (nb_data = 0; nb_data <(CANCDMOB&DLC_MSK); nb_data++)  
	  {
	   msg[i].Data[nb_data]=CANMSG;
	  }
	   msg[i].ID = 0;
       msg[i].ID |= ((unsigned long) CANIDT1<<24);    //get identifier
       msg[i].ID |= ((unsigned long) CANIDT2<<16);
       msg[i].ID |= ((unsigned long) CANIDT3<<8);
       msg[i].ID |= (CANIDT4&0xF8);
       msg[i].ID >>= 3;
	   CANCDMOB = (2<<CONMOB) | (1<<IDE);
	 }*/
	 
	 for(i=0;i<tt;i++)
	 {
	 CANPAGE = (CAN_REMOb[i]<<4);
	 CANSTMOB &= ~(1<<RXOK);
	 for (nb_data = 0; nb_data <(CANCDMOB&DLC_MSK); nb_data++)  
	   {
	    msg[i].Data[nb_data]=CANMSG;
	   }
	   msg[i].ID = 0;
       msg[i].ID |= ((unsigned long) CANIDT1<<24);    //get identifier
       msg[i].ID |= ((unsigned long) CANIDT2<<16);
       msg[i].ID |= ((unsigned long) CANIDT3<<8);
       msg[i].ID |= (CANIDT4&0xF8);
       msg[i].ID >>= 3;
	   CANCDMOB = (2<<CONMOB) | (1<<IDE);
	 }
	 
	 for(nn=0;nn<tt;nn++)
	 {
/*****************************************************
*          用戶程序
*      舉例: msg[nn].ID 是ID 號
             msg[nn].date[0]~msg[nn].date[8] 是數據
********************************************************/
	 } 
   }
   CANPAGE = temp;                 //restore CANPAGE
}






?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久久国产免费免费| eeuss鲁一区二区三区| 在线播放日韩导航| 午夜精品久久久久久久| 欧美日韩一级二级三级| 亚洲国产精品久久人人爱| 欧美日韩精品高清| 美日韩一区二区| 26uuu亚洲综合色欧美| 丁香天五香天堂综合| 综合激情成人伊人| 欧美精品 日韩| 国内精品写真在线观看| 国产精品网站导航| 日本福利一区二区| 久久99精品国产.久久久久久| 国产亚洲欧洲997久久综合| 丁香婷婷综合色啪| 一区二区三区产品免费精品久久75| 欧美日韩免费高清一区色橹橹 | 日韩一二三区视频| 国产剧情一区二区三区| 成人欧美一区二区三区黑人麻豆| 欧美色网一区二区| 精品在线一区二区| 中文字幕一区二区三区在线播放| 欧美这里有精品| 国产精品一区二区久久不卡| 亚洲欧美电影一区二区| 欧美一区二区精品久久911| 成人一区二区视频| 亚洲成人动漫精品| 国产欧美日韩视频一区二区| 欧美日本一区二区| 成人一级视频在线观看| 日韩精品欧美精品| 亚洲男人的天堂av| 欧美大度的电影原声| 在线观看一区二区视频| 国产又黄又大久久| 一个色综合av| 国产精品毛片久久久久久 | 日韩欧美一区二区视频| 99久久精品免费看国产 | 国产一区二区在线看| 一区二区三区欧美激情| 久久精品男人的天堂| 在线电影院国产精品| 91麻豆高清视频| 国产精品一区二区久久不卡| 日韩高清在线观看| 亚洲一线二线三线视频| 久久久91精品国产一区二区三区| 欧美日韩黄视频| 91女人视频在线观看| 丁香天五香天堂综合| 狠狠色丁香婷婷综合久久片| 日韩精品一卡二卡三卡四卡无卡| 亚洲色图在线看| 国产欧美日韩在线视频| 欧美大肚乱孕交hd孕妇| 欧美一级二级三级蜜桃| 在线观看国产一区二区| 91麻豆免费看片| 成人性生交大片免费看中文网站| 国产精品一品视频| 国产精品性做久久久久久| 免费在线观看视频一区| 日韩精品1区2区3区| 亚洲一区二区三区爽爽爽爽爽| **性色生活片久久毛片| 中文字幕在线观看不卡视频| 国产日产欧美一区二区三区| 久久久久久毛片| 精品免费99久久| 久久在线免费观看| 国产日产亚洲精品系列| 中文子幕无线码一区tr| 国产精品丝袜91| 国产精品美女久久久久aⅴ国产馆| 国产午夜精品理论片a级大结局| 久久你懂得1024| 欧美—级在线免费片| 国产精品久久久久久久久免费丝袜| 久久先锋影音av鲁色资源网| 国产亚洲欧美日韩日本| 欧美激情综合五月色丁香| 国产精品久久久一区麻豆最新章节| 中文字幕在线免费不卡| 一区二区三区在线视频观看58| 亚洲综合一区二区三区| 亚洲成av人片在线观看| 日本一区中文字幕| 国产在线精品一区二区三区不卡| 风间由美一区二区三区在线观看| 成人高清视频在线观看| 一本大道久久a久久精品综合| 欧美午夜片在线看| 欧美一区二区三区四区五区| 久久夜色精品国产欧美乱极品| 国产精品色一区二区三区| 亚洲视频在线观看一区| 亚洲福利电影网| 久久99热狠狠色一区二区| 成人午夜激情视频| 欧美专区日韩专区| 精品国内二区三区| 亚洲色图视频免费播放| 五月婷婷综合网| 国产精品18久久久久久久久| 91色乱码一区二区三区| 欧美一级在线观看| 一区在线中文字幕| 日韩和欧美一区二区| 国产91清纯白嫩初高中在线观看| 在线观看一区日韩| www国产精品av| 亚洲精品国产a| 久久99精品久久久久久国产越南| 91丝袜美女网| 欧美va在线播放| 亚洲一区二区三区四区在线观看| 精品伊人久久久久7777人| 91香蕉视频mp4| 欧美一区二区三区喷汁尤物| 中文字幕一区二区在线播放 | 欧美不卡一区二区三区| 中文字幕制服丝袜一区二区三区| 日日噜噜夜夜狠狠视频欧美人 | 精品一区二区三区影院在线午夜 | 欧美日韩午夜影院| 久久久综合网站| 亚洲成人一区二区| 成人av影院在线| 欧美α欧美αv大片| 亚洲主播在线观看| 成人午夜电影网站| 日韩精品一区二区三区蜜臀| 亚洲一区二区三区四区五区黄| 成人精品鲁一区一区二区| 欧美电影免费观看高清完整版在线| 亚洲欧美另类久久久精品| 国产成人丝袜美腿| 日韩欧美国产一区二区在线播放| 亚洲美女在线一区| 不卡大黄网站免费看| 久久久国产一区二区三区四区小说| 天天色天天爱天天射综合| 在线中文字幕一区| 亚洲靠逼com| av在线这里只有精品| 国产女主播视频一区二区| 狠狠色2019综合网| 日韩欧美在线综合网| 青青草国产成人av片免费| 欧美日韩一区二区三区在线看| 国产精品一区二区免费不卡| 色噜噜狠狠成人中文综合| 国产欧美日韩麻豆91| 国内精品久久久久影院一蜜桃| 3751色影院一区二区三区| 午夜精品一区二区三区免费视频| 一本色道久久综合亚洲aⅴ蜜桃| 欧美国产一区视频在线观看| 国产白丝精品91爽爽久久| 久久久久久麻豆| 国产精品69毛片高清亚洲| 国产亚洲精品超碰| 丁香天五香天堂综合| 国产精品超碰97尤物18| 色综合中文字幕国产| 一区二区三区美女| 欧美色网站导航| 同产精品九九九| 日韩一区二区精品在线观看| 美女在线观看视频一区二区| 精品欧美一区二区在线观看| 国产在线精品视频| 国产精品女主播av| 色综合久久久久综合体桃花网| 亚洲裸体xxx| 欧美日韩精品一区二区天天拍小说 | 亚洲精品免费播放| 日本韩国一区二区三区| 婷婷久久综合九色综合绿巨人| 欧美日本一区二区三区四区| 免费看精品久久片| 欧美sm美女调教| 成人白浆超碰人人人人| 综合久久给合久久狠狠狠97色| 在线观看日产精品| 青青草国产精品亚洲专区无| 久久精品亚洲乱码伦伦中文| 波多野结衣亚洲一区| 亚洲综合精品久久| 日韩精品专区在线| www.99精品| 亚洲高清不卡在线| 国产亚洲福利社区一区| 一本在线高清不卡dvd|