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

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

?? selftest.c

?? can for 51 ,用keil 51建的項目
?? C
字號:
#include "REG52.H"
#include "SJA_BCANCONF.H"
#include "VIIC_C51.h"
#include "ZLG7290.h"
#include "string.h"
#include "intrins.h"

void Init_Cpu(void);
void Init_T0(void);
void Sja_1000_Init(void);
void disp_ok(unsigned char *);
void disp_err(void);
void delay(unsigned int k);
//void send(unsigned char a);
void display(unsigned char display_buffer[5]);


bit flag_sec;
unsigned char data a[5];
unsigned char data  send_data[10],rcv_data[10];
unsigned char databuf,sec_data,second;
unsigned char data  Tmod_data;
unsigned char bdata flag_init;

unsigned	char	data	display_bit;

sbit rcv_flag=flag_init^0;
sbit err_flag=flag_init^2;


void main(void)
{
	Sja_1000_Init();								//initialize Sja1000
	Init_T0();										//initialize T0
	Init_Cpu();										//initialize mcu
	flag_init=0x00;

	while(1)
	{
		if(rcv_flag)								//if there is receive interrupt
		{
			rcv_flag=0;
			BCAN_DATA_RECEIVE(rcv_data);
			BCAN_CMD_PRG(0x04);						//釋放緩沖區
			disp_ok(rcv_data);
		}
		if(flag_sec)								//
		{
			flag_sec=0;								//send data if reach 1 s
			//send_data[0]=0xaa;					//Basic can
			send_data[0]=0x08;						//Pelican
			send_data[1]=0xaa;
			send_data[2]=second;
			send_data[3]=second;
			BCAN_DATA_WRITE(send_data);
			BCAN_CMD_PRG(0x01);
		}
		if (err_flag)
		{
			err_flag=0;
			disp_err();
			Sja_1000_Init();
		}
	

		display(a);
		delay(200);
	}	
}


void ex0_int(void) interrupt 2 //using 1
{
	SJA_BCANAdr=REG_INTERRUPT;
	flag_init=*SJA_BCANAdr;
}

void T0_int(void) interrupt 1 //using 2
{
static unsigned char ii=0;
	TR0=0;
		TH0=0x80;
		TL0=0x60;
		ii++;
		if(ii>40)
		{
			flag_sec=1;
			ii=0;
			second++;
		}
	TR0=1;
}

void Init_Cpu(void)
{
	PX1=1;
	IT1=1;
	EX1=1;
	ET0=1;
	EA=1;
	sec_data=0x10;
}


void Init_T0(void)
{
Tmod_data=TMOD;
Tmod_data&=0xf0;
Tmod_data|=0x01;
TMOD=Tmod_data;
TH0=0x80;
TL0=0x60;
TR0=1;
sec_data=0x20;
second=0x00;
}

void Sja_1000_Init(void)
{
	bit s;
	s=BCAN_CREATE_COMMUNATION();
	s=BCAN_ENTER_RETMODEL();
	s=BCAN_SET_OUTCLK(0xaa,0xc8);				//Pelican
	s=BCAN_SET_BANDRATE(0x04);
	s=BCAN_SET_OBJECT(0xaa,0xff);
	//s=BCAN_SET_OUTCLK(0xaa,0x48);
	s=BCAN_SET_MOD();
	s=BCAN_QUIT_RETMODEL();
	SJA_BCANAdr=REG_IER;
	*SJA_BCANAdr=0x03;
	//*SJA_BCANAdr=0xff;
	//SJA_BCANAdr=REG_CONTROL;
	//*SJA_BCANAdr|=0x1e;
}



void disp_ok(unsigned char * rcv_data)
{
	a[0]=rcv_data[0]%16;
	a[1]=rcv_data[0]/16;
	a[2]=0x1f;
	a[3]=rcv_data[3]%16;
	a[4]=rcv_data[3]/16;
}


void disp_err(void)
{
	a[0]=0x18;
	a[1]=0x15;
	a[2]=0x18;
	a[3]=0x18;
	a[4]=0x0E;
}



 bit   BCAN_CREATE_COMMUNATION(void)
 {  
    SJA_BCANAdr=REG_TEST;                     //訪問測試寄存器            
    
    *SJA_BCANAdr   =0xaa;                     //寫入測試值
    if(*SJA_BCANAdr == 0xaa)
    {
        return    0;                          //讀測試正確
    }
    else
    {    
       return    1;
    } 
 }      


 bit   BCAN_ENTER_RETMODEL(void)
 {
    unsigned   char   TempData;
    SJA_BCANAdr  = REG_CONTROL;                   //訪問地址指向控制寄存器 
    TempData=  *SJA_BCANAdr;                      //保存原始值
    *SJA_BCANAdr=(TempData|0x01);                 //置位復位請求
    if((*SJA_BCANAdr&0x01) == 1)
    {
       return   0;
    }
    else
    {
       return   1;
    }
    
 }


 bit   BCAN_QUIT_RETMODEL(void)
 {
    unsigned   char   TempData;
    SJA_BCANAdr = REG_CONTROL;                   //訪問地址指向控制寄存器 
    TempData    = *SJA_BCANAdr;                  //保存原始值
    *SJA_BCANAdr=(TempData&0xfe);       		 //清除復位請求
    if((*SJA_BCANAdr&0x01) == 0)
    {
       return   0;                               //
    }
    else
    {
       return   1;                              //退出成功
    }

 }


unsigned  char	code	SJA_BTR_CODETAB[]={
    0x53,0x2F,		              //   ;20KBPS的預設值
    0x87,0xFF,                     //;40KBPS的預設值
    0x47,0x2F,                     //;50KBPS的預設值
    0x83,0xFF,                     //;80KBPS的預設值
    0x43,0x2f,                     //;100KBPS的預設值
    0x03,0x1c,                     //;125KBPS的預設值
    0x81,0xfa,                     //;200KBPS的預設值
    0x01,0x1c,                     //;250KBPS的預設值
    0x80,0xfa,                     //;400KBPS的預設值
    0x00,0x1c,                     //;500KBPS的預設值
    0x80,0xb6,                     //;666KBPS的預設值
    0x00,0x16,                     //;800KBPS的預設值
    0x00,0x14                     //;1000KBPS的預設值
   
};

bit   BCAN_SET_BANDRATE(unsigned char CAN_ByteRate)
{
  unsigned  char  BTR0_num,BTR1_num;
  BTR0_num = SJA_BTR_CODETAB[CAN_ByteRate*2];
  BTR1_num = SJA_BTR_CODETAB[CAN_ByteRate*2+1];
  //將波特率的的預設值裝入sja1000的總線定時器
  SJA_BCANAdr=REG_BTR0;          		//訪問地址指向總線定時寄存器0
  *SJA_BCANAdr=BTR0_num;      			//寫入參數
  if(*SJA_BCANAdr != BTR0_num)			//校驗寫入值
  {
    return  1; 
  }
  SJA_BCANAdr=REG_BTR1;         		//訪問地址指向總線定時寄存器0
  *SJA_BCANAdr=BTR1_num;      			//寫入參數
  if(*SJA_BCANAdr != BTR1_num)			//校驗寫入值
  {
    return  1; 
  }

  return    0;
}  



bit    BCAN_SET_OBJECT(unsigned char  BCAN_ACR,unsigned char  BCAN_AMR)
{
  SJA_BCANAdr=REG_TxBuffer5;          		//訪問地址指向驗收屏蔽寄存器(AMR)
  *SJA_BCANAdr=BCAN_AMR;        		//寫入參數
  *(SJA_BCANAdr+1)=BCAN_AMR;
  *(SJA_BCANAdr+2)=BCAN_AMR;
  *(SJA_BCANAdr+3)=BCAN_AMR;
  if(*SJA_BCANAdr != BCAN_AMR)  		//校驗寫入值
  {
    return  1; 
  }

  SJA_BCANAdr=REG_TxBuffer1;          		//訪問地址指向驗收代碼寄存器(ACR)
  *SJA_BCANAdr=BCAN_ACR;        		//寫入參數

  if(*SJA_BCANAdr != BCAN_ACR)  		//校驗寫入值
  {
    return  1; 
  }

  return    0;
}


bit  BCAN_SET_OUTCLK (unsigned char Out_Control,    
                     unsigned char  Clock_Out)
{ 
SJA_BCANAdr=REG_CDR;          		//訪問地址指向輸出控制寄存器
  *SJA_BCANAdr=Clock_Out;        		//寫入參數
   if(*SJA_BCANAdr != Clock_Out)		//校驗寫入值
  {
    return  1; 
  } 
  SJA_BCANAdr=REG_OCR ;          		//訪問地址指向輸出控制寄存器
  *SJA_BCANAdr=Out_Control;      		//寫入參數
  if(*SJA_BCANAdr != Out_Control)		//校驗寫入值
  {
    return  1; 
  } 
 
  return    0;
}



 bit   BCAN_DATA_WRITE(unsigned char *SendDataBuf)
 {
   unsigned  char  TempCount;
   SJA_BCANAdr = REG_STATUS;            //訪問地址指向狀態寄存器
   if((*SJA_BCANAdr&0x08) == 0)         //判斷上次發送是否完成
   {
    return	1;
   }  

   if((*SJA_BCANAdr&0x04)==0)          //判斷發送緩沖區是否鎖定
   {
     return	1;
   }  
 
   SJA_BCANAdr = REG_TxBuffer1;        //訪問地址指向發送緩沖區1
   if((SendDataBuf[0]&0x40)==0)        //判斷RTR,從而得出是數據幀還是遠程幀
   { 
     TempCount =(SendDataBuf[0]&0x0f)+3; //輸入數據幀
   }

   else
   {
     TempCount =3;                     //遠程幀
   }

  memcpy(SJA_BCANAdr,SendDataBuf,TempCount);
   return 0;
}



bit    BCAN_DATA_RECEIVE(unsigned char *RcvDataBuf)
 {
   unsigned  char  TempCount; 
   SJA_BCANAdr = REG_STATUS;                //訪問地址指向狀態寄存器
   if((*SJA_BCANAdr&0x01)==0)               //判斷報文是否有效
   {
      return 1;
   }
   
   SJA_BCANAdr = REG_RxBuffer1;             //訪問地址指向接收緩沖區2
   if((*SJA_BCANAdr&0x40)==0)               //如果是數據幀
   {
     TempCount=(*SJA_BCANAdr&0x0f)+3;       //計算報文中數據的個數
   }
   
   else
   {
    TempCount=3;
   }
   SJA_BCANAdr = REG_RxBuffer1;             //訪問地址指向接收緩沖區1
   memcpy(RcvDataBuf,SJA_BCANAdr,TempCount);//讀取接收緩沖區的報文
   return  0;
 }

bit  BCAN_SET_MOD(void)
{
  unsigned   char   TempData;
  SJA_BCANAdr=REG_CONTROL;
  TempData=  *SJA_BCANAdr;
  *SJA_BCANAdr=TempData&0xf8;
  SJA_BCANAdr=REG_EMLR;
 *SJA_BCANAdr=0xc0;

   return 0;
}

bit  BCAN_CMD_PRG(unsigned char cmd)
 {
   SJA_BCANAdr=REG_COMMAND;            //訪問地址指向命令寄存器
   *SJA_BCANAdr=cmd;                   //啟動命令字
   switch(cmd)
   {
 
		case  TR_CMD:                     //發送請求命令
           return    0;
           break;

		case  SRR_CMD:						//自接收請求
	 	   return	0;
		   break;
    
		case  AT_CMD:                     //夭折發送命令 
           SJA_BCANAdr = REG_STATUS;   //訪問地址指向狀態寄存器   
           if((*SJA_BCANAdr & 0x20)==0)//判斷是否正在發送
           {
              return  0;
           }
           else
           {
              return  1;
           }   
           break; 
     case  RRB_CMD:                    //釋放接收緩沖區 
           SJA_BCANAdr = REG_STATUS;   //訪問地址指向狀態寄存器   
           if((*SJA_BCANAdr & 0x01)==1)//判斷是否釋放成功
           {
             return  1;
           }
           else
           {
              return  0;
           }   
           break; 
  
     case  COS_CMD:                    //清除超載狀態
           SJA_BCANAdr = REG_STATUS;   //訪問地址指向狀態寄存器   
           if((*SJA_BCANAdr & 0x02)==0)//判斷清除超載是否成功
           {
             return  0;
           }
           else
           {
              return  1;
           }   
           break; 
     default:
             return  1;
             break; 
   }
}

void	delay(unsigned int k)
	{	unsigned	int	i,j;
		for(i=0;i<k;i++)
		for(j=0;j<100;j++);
	}

void	display(unsigned char display_buffer[5])
	{
		ZLG7290_SendBuf(display_buffer,5);
	}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
www.66久久| 在线精品国精品国产尤物884a| 成人免费视频免费观看| 欧美日免费三级在线| 国产日韩精品一区二区三区 | 99视频超级精品| 欧美一级日韩免费不卡| 亚洲另类春色国产| 成人黄色a**站在线观看| 精品国产91久久久久久久妲己| 亚洲欧美aⅴ...| 成人性视频免费网站| 久久久久久久免费视频了| 日韩国产精品久久久| 在线观看www91| 亚洲视频在线观看三级| 丰满岳乱妇一区二区三区| 日韩女同互慰一区二区| 天使萌一区二区三区免费观看| 91视视频在线直接观看在线看网页在线看 | 日本一区二区三区免费乱视频| 亚洲妇女屁股眼交7| 91网站最新地址| 中文字幕一区不卡| 国产精品69久久久久水密桃| 精品国产亚洲一区二区三区在线观看| 五月激情综合网| 欧美日韩国产精品自在自线| 一区二区三区四区视频精品免费 | 成人激情动漫在线观看| 久久久综合视频| 久久精品噜噜噜成人88aⅴ| 337p亚洲精品色噜噜| 三级成人在线视频| 日韩写真欧美这视频| 狠狠色伊人亚洲综合成人| 欧美精品一区二| 国产精品123| 国产农村妇女毛片精品久久麻豆 | 视频在线在亚洲| 欧美日韩电影在线播放| 青青草97国产精品免费观看| 777a∨成人精品桃花网| 免费在线观看精品| 欧美成人免费网站| 国产福利电影一区二区三区| 国产精品三级在线观看| 91免费版在线| 性感美女极品91精品| 91精品国产全国免费观看| 美国十次综合导航| 久久久久综合网| 91免费观看在线| 全国精品久久少妇| 国产日产精品1区| 色噜噜久久综合| 日日嗨av一区二区三区四区| 精品欧美黑人一区二区三区| 大尺度一区二区| 亚洲人精品午夜| 91精品国产日韩91久久久久久| 国产真实精品久久二三区| 国产精品乱人伦| 欧美疯狂性受xxxxx喷水图片| 麻豆精品一区二区综合av| 国产精品久久精品日日| 69久久99精品久久久久婷婷| 日韩精品中文字幕一区二区三区 | 亚洲欧美另类久久久精品2019| 欧美性受极品xxxx喷水| 精品一区二区精品| 曰韩精品一区二区| xnxx国产精品| 欧美三级在线看| 成人亚洲一区二区一| 日韩一区欧美二区| 亚洲免费观看在线观看| 欧美成人性福生活免费看| 91传媒视频在线播放| 国产精品1区二区.| 日本女人一区二区三区| 亚洲三级电影网站| 久久久高清一区二区三区| 91精品国产一区二区三区| 欧洲精品一区二区三区在线观看| 狠狠色丁香婷婷综合久久片| 亚洲国产婷婷综合在线精品| 中文字幕av资源一区| 日韩免费观看高清完整版| 欧美三级乱人伦电影| 99久久婷婷国产综合精品 | 91伊人久久大香线蕉| 韩国av一区二区三区| 亚洲五码中文字幕| 综合久久综合久久| 中文字幕乱码久久午夜不卡 | 欧美成人激情免费网| 色哟哟日韩精品| 成人avav在线| 国产不卡在线播放| 555www色欧美视频| 91福利视频网站| 欧美亚洲国产一区在线观看网站 | 欧美日本一道本在线视频| 91在线精品一区二区三区| 成人综合激情网| 国产大陆亚洲精品国产| 极品美女销魂一区二区三区| 蜜臀av一级做a爰片久久| 亚洲电影在线播放| 亚洲午夜精品久久久久久久久| 亚洲欧美日韩国产另类专区| 国产精品激情偷乱一区二区∴| www日韩大片| 久久精品视频免费观看| 久久精品男人的天堂| 久久精品欧美一区二区三区不卡| 国产肉丝袜一区二区| 国产欧美一区二区精品忘忧草| 久久久久亚洲蜜桃| 国产精品免费网站在线观看| 国产精品丝袜91| 亚洲少妇30p| 一区二区三区资源| 亚洲国产精品自拍| 免费成人在线播放| 精品一区二区久久| 不卡电影免费在线播放一区| 99re6这里只有精品视频在线观看| 99re在线精品| 欧美精品一级二级三级| 日韩你懂的电影在线观看| 国产欧美日韩另类一区| 自拍偷拍国产亚洲| 亚洲va国产天堂va久久en| 免费看欧美美女黄的网站| 国产精品主播直播| 一本久道久久综合中文字幕| 欧美四级电影在线观看| 日韩免费观看高清完整版在线观看| 欧美精品一区二区三| 中文字幕在线视频一区| 亚洲综合色婷婷| 久久99精品一区二区三区| 成人黄色小视频在线观看| 欧美日韩卡一卡二| 国产色综合久久| 亚洲丝袜另类动漫二区| 日本最新不卡在线| 国产在线播精品第三| 一本大道久久a久久综合| 日韩一区二区在线观看视频| 亚洲国产精品精华液2区45| 亚洲一区二区四区蜜桃| 国模套图日韩精品一区二区| 成人av在线观| 欧美日本免费一区二区三区| 国产午夜精品一区二区| 亚洲国产精品欧美一二99| 国产毛片精品一区| 欧美福利视频导航| 亚洲人成人一区二区在线观看| 久久福利资源站| 欧美伊人久久久久久久久影院| 久久久一区二区三区捆绑**| 一区二区三区资源| 成人一区二区三区在线观看| 91精选在线观看| 一区二区三区在线视频免费| 精品亚洲成av人在线观看| 欧美系列一区二区| 国产精品亲子乱子伦xxxx裸| 青青草97国产精品免费观看| 色噜噜狠狠成人中文综合| 国产亚洲欧美在线| 日本aⅴ精品一区二区三区| 91黄视频在线观看| 国产精品久久影院| 国内国产精品久久| 欧美一级夜夜爽| 亚洲成人1区2区| 91福利视频网站| 中文字幕一区二区三中文字幕| 久久国产精品72免费观看| 欧美精品自拍偷拍| 亚洲电影第三页| 欧美日韩精品三区| 亚洲国产精品自拍| 欧美羞羞免费网站| 一区二区三区欧美在线观看| 99久精品国产| 一区免费观看视频| 色综合中文字幕国产| 久久久国产精华| 国产精品资源在线看| 久久久久久久久99精品| 黄色小说综合网站| 久久久久亚洲蜜桃| 风间由美一区二区三区在线观看 | 91麻豆高清视频|