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

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

?? main.c

?? 這是CAN總線收發器SJA1000的控制程序,采用C語言編寫的,有一定參考價值,
?? C
?? 第 1 頁 / 共 2 頁
字號:
/************************************************************************
 *   廣州周立功單片機發展有限公司    http://www.zlgmcu.com             	*
 ************************************************************************/
/************************************************************************
 *                                                                      *
 *  SJA1000 BasicCAN模式的通訊測試										*
 *                                                                      *
 ************************************************************************/
/************************************************************************
 *                                                                      *
 *  目的:  	建立直觀的BasicCAN測試平臺   								*                                    
 *  文件名:     	main.c                                          	*
 *                                                                      *
 *  模塊名:     	sjanetdemo                                         	*
 *                                                                      *
 *  目標系統:   任何基于任何兼容8051指令的微處理器同SJA1000組成的CAN系統*
 *                                                                      *
 *  應用語言:   Keil C51                                                *
 *                                                                      *
 ************************************************************************
 *  版本 :V1.0                                                          *
 *                                                                      *
 ************************************************************************
 *  廣州周立功單片機發展有限公司 保留所有的版權                         *
 ************************************************************************/

#include <AT89X51.H>   
#include <intrins.h>     
#include  "time_module.C"            			
#include  "sja_bcanFunc.C"
//#include	"sja_peliConf.h"
#include  "seriele.c"
#include  "keyled.c"
//數據類型定義
#define   uchar  unsigned char				
#define   ulong  unsigned long
#define   uint   unsigned int  


//設置系統數據緩沖區
static    uchar  data       SetSystemBuf[10];   //系統設置數據緩沖區 	

static    uchar  data       BandRateBuf;        //設置總線波特率值緩沖區  

static    uchar  idata      EditMsSendCount;	//編輯自動發送的頻率
static    uchar  idata      EditMsSendSave;	    //保存自動發送的頻率

static    uchar  idata      SendDataCount;	    //發送數據顯示

//鍵盤操作函數
extern void	      Write_Xdata(uint Xadr,uchar Info);    // 將info送入外部地址xadr中
extern uchar	  Read_Xdata(uint Xadr);				//從外部地址xadr中讀取數據
extern void   	  Key_Scan(void);						//鍵盤掃描程序
extern uchar      Key_Get(void);						//取鍵盤值
extern void 	  PushKey(uchar keynum);		    	//將鍵值送入按鍵處理隊列
extern uchar      PopKey(void);							//

void      Key_handle(void);						//處理鍵值

void      FundationKey(void);                   //功能鍵
void      MoveKey(void);	                    //移位鍵
void      SearchKey(void);                      //檢索鍵
void      EnterKey(void);                       //確認鍵
void      IncKey(void);                         //增加鍵
void      QuitKey(void);                        //退出鍵
void      CanSendKey(void);						//發送鍵

void      EnterNext(void);                      //按確認鍵后進入下一小項處理
//led  送顯
#define	  LED_SelBit() 	 disp_pt++;if(disp_pt>4)disp_pt=0//位選	       
extern    void      Show_LED(void);						//顯示處理
extern    void      Write_DispBuf(uchar buf0,uchar buf1,uchar buf2,uchar buf3,uchar buf4);//寫入顯示緩沖區
extern    uchar     GetLedData(void);                     //將顯示的值換算
extern    void      Error_disp(uchar ErrByte);            //將錯誤字送顯

void      InitCPU(void);                        //初始化函數
// 配置sja1000
uchar  Config_SJA(void);                        //配置sja1000
void   CanRcv_Prg(void);		                //can總線數據接收后處理
void   CanSend_Prg(void);         				//can發送數據
void   CanErr_Prg(void);	                    //發現錯誤后處理
void   CanDtOver_Prg(void);                     //超載處理
void   CanWui_Prg(void);                    	//喚醒中斷處理

void   UartRcv_Prg(void);						//串口接收到數據處理

void   DrecDisplay(uchar *databuf); 			//直通顯示處理函數
void   TestDispPrg(void);                       //測試處理函數
void   ClearDispPrg(uchar *databuf);			//消隱處理函數
void   FlightDispPrg(uchar *databuf); 			//閃爍處理函數	
void   LiftCrcDispPrg(uchar *databuf);          //左循環顯示處理
void   RightCrcDispPrg(uchar *databuf);         //右循環顯示處理

void   AutoSendDataToCanBus(void);				//自動發送

// 外部中斷0
static   uchar  bdata    CanBusFlag=0;  		//can標志
sbit     CanRcv_Good=CanBusFlag^0; 				//成功接收標志
sbit     CanSend_Good=CanBusFlag^1;				//成功發送標志
sbit     CanErrFlag=CanBusFlag^2;				//can總線錯誤標志
sbit     CanDtOverFlag=CanBusFlag^3;			//can總線超載標志
sbit     CanWuiFlag=CanBusFlag^4;  				//can總線喚醒中斷

/*-------------------------------------------------------------------------------------------
 外部中斷0處理程序                     
 -------------------------------------------------------------------------------------------*/ 
void  ex0_Val(void)  interrupt   0   using  1
{ 
  SJA_BCANAdr=REG_INTERRUPT;
  CanBusFlag=*SJA_BCANAdr;						//保存sja1000中斷標志
}

/*-------------------------------------------------------------------------------------------
 main程序               
 -------------------------------------------------------------------------------------------*/ 
void 	  main(void)
{   
    uchar status;            					//狀態字 
	Delay_50us(100) ;       					//50us*100=5ms
    status=Config_SJA();    					//配置sja1000
	InitCPU();    								//初始化
	if(status!=0) Error_disp(status);           //配置sja1000出現錯誤
	else
    { Disp_Can();                   			//無措顯示CAN1
      Exe_Scon(0xaa,0,0);
	}
    Write_Xdata(Mode_Select,0x00);
										        //設置并行方式
	TimeOut_Start(20);							//20*50us=1ms,定時周期1ms
	while(1)
	{
		if(_testbit_(T0IR))						//1ms時間到
		{
		  LED_SelBit();							//位選
		  Key_Scan();
		  Show_LED();
		  AutoSendDataToCanBus();
	      TimeOut_Start(20);					//20*50us=1ms,定時周期1ms
		}
	//	CanBusFlag=Read_Xdata(REG_INTERRUPT);
        if(_testbit_(CanRcv_Good))  CanRcv_Prg();	//是接收中斷標志
		if(_testbit_(CanSend_Good)) CanSend_Prg();	//是發送中斷標志
        if(_testbit_(CanErrFlag))   CanErr_Prg();	//是錯誤中斷標志
		if(_testbit_(CanDtOverFlag))CanDtOver_Prg();//是超載中斷標志
    	if(_testbit_(CanWuiFlag))   CanWui_Prg();	//是喚醒中斷標志
    	if(_testbit_(UartRcvGood))  UartRcv_Prg();	//串口接收成功標志

		Key_handle();								//鍵盤隊列處理
	}

}


/*-------------------------------------------------------------------------------------------
 按鍵隊列處理程序             
 -------------------------------------------------------------------------------------------*/ 
void      Key_handle(void)
{
	uchar TempData;	
    TempData=PopKey();
 	switch(TempData)
    {
	  case 	Key0:
	        SearchKey();
	  		break;
	  case 	Key1:
	        IncKey();
	  		break;
	  case 	Key2:
	  		break;
	  case 	Key3:
            QuitKey();
	  		break;
      case 	Key4:
	        FundationKey();
	  		break;
	  case 	Key5:
	        MoveKey();
	  		break;
      case 	Key6:
            EnterKey();
	  		break;
	  case 	Key7:
	        CanSendKey();
	  		break;

      default:
	  		break;
	}

}



//功能鍵處理
bit       FunckeyFlag=0; 				      //進入功能標志  
static    uchar     data FunckeyCount;		  //功能選項計數
void      FundationKey(void)
{
  ClearDispAttr();  
  if(FunckeyFlag)
  {
    if(++FunckeyCount>3)FunckeyCount=0;
	switch(FunckeyCount)
	{
      case  0:
	        FunckeyFlag=0;
			Disp_Can();           			  //上電顯示CAN1
			DispFlag=0x00;
			break;
	  case  1:
	        Write_DispBuf(0,0x0b,0x01,0,0);    //進入b功能
			FlightLed3=1;                      //led3閃爍
			break;
	  case  2:
	        Write_DispBuf(0,0x0c,0x01,0,0);       //進入c功能
			FlightLed3=1;                         //led3閃爍
			break;
	  case  3:
	        Write_DispBuf(0,0x05,0x0d,0,0);       
		    break;
	  default:
	        break;
	}
  }
  else
  {
     FunckeyFlag=1;
     Write_DispBuf(0,0x0a,0x01,0,0);       //a1功能
	 FlightLed3=1;                         //led3閃爍
  }
}

 //檢索鍵處理
static    uchar  data  SearchCount;        //檢索計數器
void      SearchKey(void)                  //檢索鍵
{
  if(FunckeyFlag)
  {
    switch(DispBuf[1])
	{
      case  0x0a:
	        SearchCount=DispBuf[2];        //檢索a功能項  
	        if(++SearchCount>3)SearchCount=1;
			DispBuf[2]=SearchCount;
			break;
	  case  0x0b:                           //檢索b功能項 
	        SearchCount=DispBuf[2];         
	        if(++SearchCount>10)SearchCount=1;
			DispBuf[2]=SearchCount;
			break;
	  case  0x0c:
	        
	  default:
	        break;
	}
  }//if結束
}


//移位鍵處理
static    bit   MoveFlag=0;            //移位計數    
void      MoveKey(void)	               //移位鍵
{
  if(FunckeyFlag)
  {
     MoveFlag=~ MoveFlag;              //移位
	 if(MoveFlag)
	 {FlightLed3=0;ClearLed3=0; 
	  FlightLed4=1;
	 }
	 else
	 {
      FlightLed3=1;
	  FlightLed4=0;ClearLed4=0; 
	 }
  }
}

//增加鍵處理
void      IncKey(void)                  //增加鍵
{
   if(FunckeyFlag)
  {
    if(MoveFlag)
	{
      if(++DispBuf[4]>0x0f)DispBuf[4]=0;
	}
    else
	  if(++DispBuf[3]>0x0f)DispBuf[3]=0;
  }
}

//退出鍵處理
void      QuitKey(void)                        //退出鍵
{
  if(FunckeyFlag)
  {
     FunckeyFlag=0;
     Disp_Can();                               //上電顯示CAN1
	 DispFlag=0x00;
  }
}

//確認鍵處理
void      EnterKey(void)                       //確認鍵
{
  uchar   Tempdata;
  if(FunckeyFlag)
  {
     Tempdata=GetLedData();
     if(DispBuf[1]==0x0a)
	 {
        switch(DispBuf[2])
 	    {
           case  0x01:
		         SetSystemBuf[0]=Tempdata; 
				 EnterNext();
				 break;
		   case  0x02:
		         SetSystemBuf[1]=Tempdata;
 				 if(!BCAN_ENTER_RETMODEL())
				 {
	               BCAN_SET_OBJECT(SetSystemBuf[0],SetSystemBuf[1]);
                   BCAN_QUIT_RETMODEL();
				  }
				  else   Error_disp(CAN_ENTRESET_ERR );
				    
				 EnterNext();
				 break;
           case  0x03:
		         BandRateBuf=Tempdata;
				 if(Tempdata>12) Error_disp(NO_BANDRATE_SIZE);
 				 else{
				   if(!BCAN_ENTER_RETMODEL())
				   {
					 BCAN_SET_BANDRATE(Tempdata);
					 BCAN_QUIT_RETMODEL();
				   }
				   DispBuf[2]=1;
                   DispBuf[3]=0;DispBuf[4]=0;
                   FlightLed3=1;
                   FlightLed4=0;ClearLed4=0;
				 }
				 break;
		   default:
		         break;
		}
	 }
	 if(DispBuf[1]==0x0b)
	 {
       if(0<DispBuf[2])
	   {
         SetSystemBuf[DispBuf[2]-1]=Tempdata; 
		 
    	 if(DispBuf[2]==0x0a)
         { 
		   DispBuf[2]=1;
           DispBuf[3]=0;DispBuf[4]=0;
           FlightLed3=1;
           FlightLed4=0;ClearLed4=0; 
		 }
		 else  EnterNext(); 
	   }
	 }
    if(DispBuf[1]==0x0c)
	{
	  switch(DispBuf[2])
	  {
		case 1:
             EditMsSendCount =Tempdata; 
			 EditMsSendSave  =Tempdata; 
			 DispBuf[1]=0x05;
			 DispBuf[2]=0x0d;
			 FunckeyCount++;
			 ClearDispAttr();
			 MoveFlag=0;
 			 break;
		default:
			break;
	  }
	}
  }
}

//按確認鍵后進入下一小項處理
void      EnterNext(void)                     //按確認鍵后進入下一小項處理
{
   DispBuf[3]=0;DispBuf[4]=0;
   FlightLed3=1;
   FlightLed4=0;ClearLed4=0;
   MoveFlag=0;
   DispBuf[2]++;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区三区在线看| 国产一区二区按摩在线观看| 欧美一区二区成人6969| 国产成人在线电影| 亚洲激情图片一区| 国产欧美一区二区精品久导航| 欧美色倩网站大全免费| 成人三级伦理片| 麻豆精品在线看| 亚洲午夜免费电影| 亚洲美女免费视频| 欧美自拍偷拍午夜视频| 国产v综合v亚洲欧| 日本不卡一区二区三区| 伊人婷婷欧美激情| 欧美国产精品专区| 精品国产乱码久久久久久蜜臀| 欧美色国产精品| 色中色一区二区| 成人一区二区三区在线观看| 美女视频一区二区| 午夜视黄欧洲亚洲| 一区二区三区欧美视频| 国产精品天美传媒| 久久先锋影音av鲁色资源| 在线成人av网站| 欧洲色大大久久| 日本高清视频一区二区| 成人午夜碰碰视频| 国产成人免费视频网站 | 国产色综合一区| 日韩天堂在线观看| 欧美精品乱人伦久久久久久| 91久久一区二区| 99精品视频在线免费观看| 国产成人免费9x9x人网站视频| 裸体一区二区三区| 久久精品国产在热久久| 日本午夜一本久久久综合| 亚洲成av人片在www色猫咪| 亚洲精品国产a久久久久久| 亚洲人成小说网站色在线| 中文字幕二三区不卡| 欧美激情艳妇裸体舞| 久久久蜜桃精品| 国产亚洲精品中文字幕| 国产日产欧美一区二区三区| 国产亚洲欧洲一区高清在线观看| 精品国产精品一区二区夜夜嗨| 日韩女优毛片在线| 欧美www视频| 国产日韩高清在线| 国产视频911| 国产精品久久精品日日| 亚洲欧美色一区| 亚洲午夜在线视频| 日韩成人dvd| 国精品**一区二区三区在线蜜桃| 黄页视频在线91| 粉嫩蜜臀av国产精品网站| 成人午夜av电影| 在线看国产一区二区| 欧美三级韩国三级日本一级| 欧美精品日韩一本| 久久这里只有精品6| 欧美国产一区二区| 一区二区三区小说| 秋霞电影一区二区| 国产一区二区电影| 色综合色综合色综合| 欧美肥大bbwbbw高潮| 久久影院午夜论| 日韩伦理电影网| 婷婷六月综合网| 国产精品综合一区二区三区| 99在线精品免费| 欧美一区二区三区四区视频| 国产三级欧美三级日产三级99 | 亚洲欧美在线aaa| 一区二区国产视频| 麻豆一区二区99久久久久| 国产精品一线二线三线精华| 色婷婷精品久久二区二区蜜臀av| 欧美一三区三区四区免费在线看 | 国产麻豆成人传媒免费观看| 9人人澡人人爽人人精品| 欧美日韩大陆一区二区| 久久久久久免费毛片精品| 亚洲精品午夜久久久| 久久精品久久久精品美女| 91亚洲国产成人精品一区二三 | 欧美亚洲综合在线| 久久综合狠狠综合久久激情 | 中文字幕色av一区二区三区| 亚洲成人资源网| 国产成人免费视频网站| 亚洲午夜久久久久久久久电影网| 欧美日韩视频在线观看一区二区三区 | 美女视频黄久久| 成年人网站91| 精品少妇一区二区三区日产乱码| 亚洲天堂免费在线观看视频| 久久精品国产秦先生| 色94色欧美sute亚洲线路二| 久久色.com| 丝袜亚洲精品中文字幕一区| 成人av集中营| 久久亚洲一级片| 三级久久三级久久久| 99精品视频在线观看| 久久久久久久久久久久久女国产乱| 亚洲国产毛片aaaaa无费看 | 91原创在线视频| 久久亚洲综合av| 日韩中文欧美在线| 色94色欧美sute亚洲线路一ni| 亚洲观看高清完整版在线观看| 国产一区二区成人久久免费影院| 欧美视频你懂的| 中文字幕五月欧美| 国产69精品久久99不卡| 日韩精品一区二区三区视频播放 | 欧美性猛片aaaaaaa做受| 国产精品你懂的| 国产一区二区三区久久久 | 一区在线播放视频| 粉嫩蜜臀av国产精品网站| 精品国产制服丝袜高跟| 日韩电影在线观看网站| 欧美视频自拍偷拍| 樱花影视一区二区| 一本久久a久久免费精品不卡| 国产欧美日韩精品a在线观看| 激情丁香综合五月| 久久综合久色欧美综合狠狠| 国内一区二区在线| 欧美大胆人体bbbb| 激情综合网最新| 2020日本不卡一区二区视频| 精品写真视频在线观看| 2020国产精品| 国产夫妻精品视频| 国产午夜精品一区二区三区四区| 亚洲综合无码一区二区| 成人av第一页| 亚洲欧洲精品一区二区三区| 成人av网站在线| 国产精品成人一区二区三区夜夜夜 | 欧美亚洲综合网| 亚洲一区二区三区四区中文字幕| 欧美在线视频日韩| 日韩激情中文字幕| 日韩你懂的在线播放| 国产在线麻豆精品观看| 国产亲近乱来精品视频| av综合在线播放| 亚洲精品欧美在线| 欧美人动与zoxxxx乱| 蜜桃av一区二区三区| 国产日产欧美一区二区视频| 日本久久精品电影| 日韩在线卡一卡二| 久久久精品免费免费| 97se狠狠狠综合亚洲狠狠| 一区二区三区四区在线| 884aa四虎影成人精品一区| 久久福利视频一区二区| 欧美国产成人精品| 欧美影视一区二区三区| 日产国产高清一区二区三区| 久久久综合激的五月天| 99国产精品久久| 日韩精品国产欧美| 国产日韩欧美一区二区三区乱码| 色婷婷精品久久二区二区蜜臂av| 日韩中文字幕av电影| 欧美国产日韩亚洲一区| 欧美日韩精品欧美日韩精品一| 美女在线一区二区| 亚洲欧洲一区二区在线播放| 91精品国产乱| 盗摄精品av一区二区三区| 亚洲va欧美va天堂v国产综合| 久久蜜桃香蕉精品一区二区三区| 91美女视频网站| 精品一区精品二区高清| 亚洲天堂a在线| 精品伦理精品一区| 在线免费观看一区| 国产麻豆91精品| 午夜欧美在线一二页| 国产精品视频你懂的| 91精品国产综合久久蜜臀| av福利精品导航| 国内精品免费**视频| 亚洲图片欧美色图| 中文字幕国产精品一区二区| 日韩视频一区二区三区在线播放 | 国产亚洲欧洲一区高清在线观看| 欧美午夜影院一区|