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

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

?? can_self.c

?? CAN總線到RS232串口通信源程序
?? C
字號:

//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
//描述:
//      INT0按鍵程序+顯示程序+CAN自收發程序                                    &
//      數碼管1-2(從右至左)顯示本節點計數結果,數碼管3-4顯示接收到的數據     &
//      十進制顯示                                                             &
//      CAN主要參數:       PeliCAN模式,擴展幀EFF模式                          &
//      29位標示碼結構:                                                       &
//      發送數據結構:計數結果,0x02,0x03,0x04,0x05,0x06,0x07,0x08              &
//      接收數據結構: 待顯示數據+其它7個字節的數據                             &
//      本節點的地址: 0x11,0x22,0x33,0x00;可以接收全部節點的數據               &
//      目的節點地址:0x01,0x02,0x03,0x00;可以被能接收全部節點數據的節點接收   &


//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
//【聲明】 此程序僅用于學習與參考,引用請注明版權和作者信息!                   &
//【聲明】 作者: PIAE小組                                                      &

#include <reg52.h>
#include <intrins.h>
#include <can_selfdef.h>
#define uchar  unsigned char


bit receive;  //接收標志


uchar  i,buffer[8];//串口緩沖區
uchar  sbuffer;

uchar  cmd_numb ;//發送緩沖區填充完成標志
uchar data TX_buffer[ N_can ] ;

void  led_seg7(uchar ,uchar ) ;


/********************************系統初始化函數************************/

void initial(void)
{  uchar j;
   SCON=0x50;           //串口工作方式1,允許接收
   PCON=0x80;           //波特率翻倍
   TCON=0;              
   TMOD=0x26;           //T1用于串口波特率控制
   TL1=0xfa;            //初始化T1,波特率為9600(晶振11.0592M)
   TH1=0xfa;                    
   TR1=1;               //開定時器
  
   ES=1;                //開串口中斷

   receive = 0;        //接收標志清零

   cmd_numb = 0;       //接受計數器清零
 //  P1 = 0xb0;           //RS485允許接收
  for(j=0; j<8; j++)   //串口緩沖區清空
      buffer[j] = 0xff;  //table[18]為空顯示   
  
 // cash[0] = 15;  
 //CPU初始化
    SJA_RST = 1;//CAN總線復位管腳,復位無效
    SJA_CS = 0;//CAN總線片選有效
   
    IT1 = 0;//CAN總線低電平接收中斷
   // IT0 = 1;//外部中斷0負邊沿觸發
  //  EX0 = 1;//打開外部中斷0	
    EX1 = 1; //	打開外部中斷1
    EA = 1; //打開總中斷


    SJA_CS = 1;//CAN總線片選無效,使對數據總線的操作不會影響SJA1000。
//CPU初始化 
//初始化標示碼頭信息 

    TX_buffer[0] = 0x88;//.7=0擴展幀;.6=0數據幀; .3=1數據長度
    TX_buffer[1] = 0x01;//本節點地址
    TX_buffer[2] = 0x02;//
    TX_buffer[3] = 0x03;//
    TX_buffer[4] = 0x00;//
//初始化標示碼頭信息

//初始化發送數據單元
    TX_buffer[5]  = 0xff;
    TX_buffer[6]  = 0x22;
    TX_buffer[7]  = 0x33;
    TX_buffer[8]  = 0x44;//
    TX_buffer[9]  = 0x55;//
    TX_buffer[10] = 0x66;//
    TX_buffer[11] = 0x77;//
    TX_buffer[12] = 0x88;//
//初始化數據信息 
 }                        




/*****************************串口中斷響應處理函數***********************/

void serial(void) interrupt 4
{  uchar k;
  if(RI)//為接收中斷
     {      
      RI=0;                                         //清接收中斷標志
       LED_RED= ~LED_RED;                                  //閃串口指示LED
      sbuffer = SBUF;                               //讀取串口緩沖區數據

      if((sbuffer == 's') && (receive == 0))       //判斷是否為數據頭 ,是數據頭則準備接收
       {     
           receive = 1;     //開始接收標志                         
           cmd_numb = 0;    //清接收計數器
           TXD_flag = 0;   //清接收完成標志
          }
      else if(sbuffer == 'e')   //判斷數據尾     
        { 
          if(cmd_numb<8)//接收到的字符少于8個
            for(k=cmd_numb;k<8;k++)//則空位填空顯示
              buffer[k] = 0;
          TXD_flag = 1;         //置接收完成標志      
          receive =0;            //清接收標志
          }
      else if(receive){     //判斷當前是否處于接收狀態
                   
          buffer[cmd_numb++] = sbuffer;  //當前字符送緩沖區
			Txd_data=cmd_numb ;

         }      
      else                    //無效命令則返回
         return;
       }
}


void CAN_RXD( void ) interrupt 2		  //接收數據函數,在中斷服務程序中調用
{

    uchar data Judge;
    EA = 0;    //關CPU中斷
   //	 IE0 = 0;  //禁止INT0

    Judge = IR;
    if( Judge & 0x01)	  //IR.0 = 1 接收中斷
    {
        RX_buffer[0] =  RBSR;
        RX_buffer[1] =  RBSR1;
        RX_buffer[2] =  RBSR2;
        RX_buffer[3] =  RBSR3;
        RX_buffer[4] =  RBSR4;
        RX_buffer[5] =  RBSR5;
        RX_buffer[6] =  RBSR6;
        RX_buffer[7] =  RBSR7;
        RX_buffer[8] =  RBSR8;
        RX_buffer[9] =  RBSR9;
        RX_buffer[10] =  RBSR10;
        RX_buffer[11] =  RBSR11;
        RX_buffer[12] =  RBSR12;
        RXD_flag = 1;//置有接收標志
        CMR = 0X04;	//釋放接收緩沖區
        Judge = ALC;//釋放仲裁隨時捕捉寄存器
        Judge = ECC;//釋放錯誤代碼捕捉寄存器
    }
    IER = 0x01;// .0=1--接收中斷使能;
    EA = 1;//打開CPU中斷
}

void main(void)
{

	initial(   );//串口初始化
    CAN_init(  ); //SJA1000初始化,對 SJA1000寄存器的讀寫是采用外部寄存器尋址方式,所以不需要程序單獨控制片選有效無效
    _nop_();
    _nop_();
    while(1)
    {
        _nop_();
        _nop_();

        Rxd_deal();//接收處理程序
        Txd_deal();//發送處理程序
	
       led_seg7(1,Txd_data);
       led_seg7(3,Rxd_data);
	 
    }

}



//*********************處理函數********************************


void Rxd_deal(void)
{//////// CAN接收處理程序//////////////
    if( RXD_flag )	//RXD_flag=0說明無數據可以接收,RXD_flag=1說明有數據可以接收	
    {	uchar  i ;
       // EA = 0;		//關閉CPU中斷
	   
		EX1=0;
        RXD_flag = 0;	//RXD_flag清零,以便下次查詢
		 for(i=0;i<8;i++)
	        { 		LED_GRE=~LED_GRE;
				TI=0;
				SBUF = RX_buffer[i+5];	//CAN總線要接收的數據,也是要在數碼管3-4位置顯示的數據
				while(!TI);
			}
		EX1 = 1;
        
	
		
	//	TI=1;
     }
}//////// 接收處理程序//////////////

void Txd_deal(void)		  //CAN發送處理函數,主要是準備數據,并且調用發送函數
{
    if( TXD_flag )
    {
        _nop_();
        TXD_flag = 0;
        TX_buffer[5]  = buffer[0];//
		TX_buffer[6]  = buffer[1];
		TX_buffer[7]  = buffer[2];
		TX_buffer[8]  = buffer[3];
		TX_buffer[9]  = buffer[4];
		TX_buffer[10]  = buffer[5];
		TX_buffer[11]  = buffer[6];
		TX_buffer[12]  = buffer[7];
        CAN_TXD();
        _nop_();
        _nop_();
     }
}

//*********************處理函數********************************


//*********************CAN子函數***********************

void CAN_init( void )	//SJA1000 的初始化
{
    uchar bdata Judge;
    uchar ACRR[4];
    uchar AMRR[4];
    ACRR[0] = 0x11;
    ACRR[1] = 0x22;
    ACRR[2] = 0x33;
    ACRR[3] = 0x44;//接收代碼寄存器,節點1
    AMRR[0] = 0xff;
    AMRR[1] = 0Xff;
    AMRR[2] = 0xff;
    AMRR[3] = 0xff;//接收屏蔽寄存器。 只接收主機發送的信息
    do
    {//  .0=1---reset MODRe,進入復位模式,以便設置相應的寄存器
     //防止未進入復位模式,重復寫入
        MODR   = 0x09;	//復位模式  單濾波
    	Judge = MODR ;
    }
    while( !(Judge & 0x01) );
    CDR  = 0x88;// CDR.3=1--時鐘關閉, .7=0---basic CAN, .7=1---Peli CAN
    BTR0 = 0x31;
    BTR1 = 0x1c;//總線波特率設定
    IER  = 0x01;// .0=1--接收中斷使能;  .1=0--關閉發送中斷使能
    OCR  = 0xaa;// 配置輸出控制寄存器
    CMR  = 0x04;//釋放接收緩沖器

    ACR  = ACRR[0];
    ACR1 = ACRR[1];
    ACR2 = ACRR[2];
    ACR3 = ACRR[3];//初始化標示碼

    AMR  = AMRR[0];
    AMR1 = AMRR[1];
    AMR2 = AMRR[2];
    AMR3 = AMRR[3];//初始化掩碼
    do
    {//確保進入自接收模式 可以檢測所有節點
	MODR   = 0x04;
	Judge  = MODR;
     }
    while( !(Judge & 0x04) );

}//SJA1000 的初始化


void CAN_TXD( void )
{
    uchar data Judge;
  

    EA = 0; //關中斷
    do
    {
        Judge = SR;
        LED_RED = 0;//
    }
    while( Judge & 0x10 );  //SR.4=1 正在接收,等待
    
    do
    {
        Judge = SR;
        LED_RED = 0;//
    }
    while(!(Judge & 0x08)); //SR.3=0,發送請求未處理完,等待

    do
    {
        Judge = SR;
        LED_RED = 0;//
    }
    while(!(Judge & 0x04)); //SR.2=0,發送緩沖器被鎖。等待

    LED_RED = !LED_RED;
    LED_GRE = !LED_GRE;//燈閃爍

    TBSR   = TX_buffer[0];
    TBSR1  = TX_buffer[1];
    TBSR2  = TX_buffer[2];
    TBSR3  = TX_buffer[3];
    TBSR4  = TX_buffer[4];
    TBSR5  = TX_buffer[5];
    TBSR6  = TX_buffer[6];
    TBSR7  = TX_buffer[7];
    TBSR8  = TX_buffer[8];
    TBSR9  = TX_buffer[9];
    TBSR10 = TX_buffer[10];
    TBSR11 = TX_buffer[11];
    TBSR12  = TX_buffer[12];

    CMR = 0x01;//置位自發送接收請求
    EA  = 1;

}

void Delay(uchar delay_time)
{//延時程序
    while(delay_time--)
    {}
}

//*********************CAN子函數*************************

void  led_seg7 (uchar from,uchar number)  //from(1_4):數碼管顯示起始位置(從右到左),number:顯示的數
{
    uchar digit,temp_l;
    uchar temp_h=0x7f;
    temp_h = _cror_(temp_h,from-1);   //確定從哪一位開始顯示,即確定高四位
    temp_h = temp_h & 0xf0;           //取高四位
    temp_l = P2 & 0x0f;               //取P2的低四位
    P2 = temp_h | temp_l;             //設定P2口

    if(number==0)
    {
        P0 = led[0];
        Delay(5);
        P0 = 0xff;
    }
    else
    {
        while(number)
	{
            digit = number%10 ;
	    number /= 10;
            P0 = led[digit] ;
	    Delay(5);
            temp_h = P2 & 0xf0;               //取P2的高四位
            temp_h = temp_h | 0x0f;           //拼裝 temp_h,進行位選
	    temp_h = _cror_(temp_h,1);
	    temp_h = temp_h & 0xf0;           //取高四位
            temp_l = P2 & 0x0f;               //取P2的低四位
            P0 = 0xff;
            P2 = temp_h | temp_l;             //設定P2口
        }//while結束
    }//else結束
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩你懂得| 在线一区二区三区四区五区| 一区二区三区国产精品| 日本一区二区三区高清不卡| 久久日韩精品一区二区五区| 日韩欧美一卡二卡| 精品国产乱码久久久久久免费| 欧美日韩二区三区| 欧美一区二区三区免费大片 | 欧美日韩精品欧美日韩精品一| 色哟哟国产精品免费观看| 91丝袜呻吟高潮美腿白嫩在线观看| 国产91精品免费| 色综合天天综合狠狠| 欧美午夜视频网站| 欧美一区二视频| 国产午夜精品福利| 亚洲三级在线免费| 亚洲超碰精品一区二区| 奇米一区二区三区| 国产成人av电影| 在线视频你懂得一区| 欧美精品电影在线播放| 精品第一国产综合精品aⅴ| 久久久www免费人成精品| 中文字幕视频一区| 婷婷夜色潮精品综合在线| 韩国毛片一区二区三区| 99久久精品国产毛片| 欧美日韩国产小视频在线观看| 日韩一区二区在线看片| 国产精品视频在线看| 五月婷婷久久丁香| 成人av资源下载| 在线观看91av| 日韩理论片在线| 美女精品自拍一二三四| 99在线精品观看| 日韩欧美在线影院| 亚洲乱码国产乱码精品精的特点 | 一本大道久久精品懂色aⅴ| 欧美精品久久一区二区三区| 国产欧美精品日韩区二区麻豆天美 | 成人夜色视频网站在线观看| 色噜噜夜夜夜综合网| 久久先锋资源网| 午夜精品福利一区二区三区蜜桃| 视频在线观看国产精品| 波多野结衣在线一区| 欧美一卡2卡三卡4卡5免费| 中文字幕日本乱码精品影院| 毛片基地黄久久久久久天堂| 色8久久人人97超碰香蕉987| 精品国产髙清在线看国产毛片| 一区二区三区日韩欧美精品 | 日本一区二区三区dvd视频在线 | 久久国产精品无码网站| 欧洲精品一区二区| 国产精品福利影院| 国产一区二区三区四区五区美女| 欧美综合一区二区| 国产精品国模大尺度视频| 国产乱理伦片在线观看夜一区| 欧美视频三区在线播放| 亚洲欧美成人一区二区三区| 丁香啪啪综合成人亚洲小说| 精品国产髙清在线看国产毛片| 午夜国产不卡在线观看视频| 成人在线综合网| 国产亚洲成aⅴ人片在线观看| 免费成人美女在线观看.| 欧美丝袜第三区| 亚洲第一福利一区| 欧美日韩国产影片| 亚洲国产裸拍裸体视频在线观看乱了 | 日韩欧美一区二区视频| 亚洲激情欧美激情| 色嗨嗨av一区二区三区| 亚洲色图欧洲色图| 99在线精品观看| 亚洲男人电影天堂| 欧美中文字幕一区二区三区| 一区二区三区国产| 欧美日韩精品一二三区| 麻豆精品国产传媒mv男同| 日韩一区二区影院| 国产一区二区在线影院| 国产日韩一级二级三级| 99精品桃花视频在线观看| 亚洲美女在线一区| 欧美二区在线观看| 精品制服美女丁香| 国产精品视频九色porn| 91免费视频观看| 天天色天天爱天天射综合| 91.com在线观看| 国产大陆a不卡| 亚洲美女视频一区| 91精品婷婷国产综合久久竹菊| 捆绑紧缚一区二区三区视频 | 成人av在线网| 一区二区在线观看不卡| 制服丝袜中文字幕一区| 国产福利一区二区三区视频在线| 1区2区3区国产精品| 欧美日韩一区二区欧美激情| 久久se这里有精品| 国产精品拍天天在线| 欧美欧美欧美欧美| 国产丶欧美丶日本不卡视频| 亚洲国产成人va在线观看天堂| 日韩一区二区视频在线观看| 大胆亚洲人体视频| 日本伊人色综合网| 国产精品福利一区二区| 日韩一区二区中文字幕| 91在线播放网址| 激情欧美日韩一区二区| 亚洲一区av在线| 国产欧美1区2区3区| 制服丝袜亚洲播放| 色综合天天综合网天天看片| 韩国视频一区二区| 午夜一区二区三区视频| 国产精品成人免费精品自在线观看| 欧美精品18+| 色婷婷综合激情| 懂色av中文一区二区三区| 日本欧美一区二区在线观看| 亚洲人吸女人奶水| 国产精品天美传媒沈樵| 精品国产免费视频| 9191成人精品久久| 欧美在线制服丝袜| av在线免费不卡| 国产精品亚洲专一区二区三区| 日韩av中文在线观看| 一级精品视频在线观看宜春院| 国产婷婷一区二区| 精品91自产拍在线观看一区| 777久久久精品| 欧美色涩在线第一页| 91国偷自产一区二区三区成为亚洲经典| 国产成人免费视| 国产经典欧美精品| 精品亚洲国内自在自线福利| 青青草国产成人99久久| 婷婷六月综合网| 天涯成人国产亚洲精品一区av| 亚洲综合色噜噜狠狠| |精品福利一区二区三区| 亚洲国产精品成人综合 | 99久久精品99国产精品| 国产91富婆露脸刺激对白| 国产乱妇无码大片在线观看| 精东粉嫩av免费一区二区三区| 理论片日本一区| 精品一区二区三区在线观看 | 成人久久久精品乱码一区二区三区| 六月婷婷色综合| 黑人巨大精品欧美黑白配亚洲 | 久久精品欧美日韩精品| 国产亚洲综合在线| 国产精品久久久久一区二区三区共| 亚洲成人午夜电影| 香蕉久久一区二区不卡无毒影院| 婷婷中文字幕一区三区| 青青草97国产精品免费观看| 九九九精品视频| 成人妖精视频yjsp地址| 色综合欧美在线视频区| 欧美日韩精品一区二区三区蜜桃 | 日本视频免费一区| 久久精品国产免费| 成人va在线观看| 欧美揉bbbbb揉bbbbb| 精品久久久久久久人人人人传媒 | 国产精品88av| 成人av免费网站| 欧美日韩亚洲国产综合| 欧美日韩国产经典色站一区二区三区 | 成人午夜碰碰视频| 91天堂素人约啪| 欧美日韩另类一区| 国产欧美在线观看一区| 一区二区三区资源| 久久精品99久久久| 成人永久免费视频| 欧美日韩精品三区| 欧美国产精品v| 婷婷国产v国产偷v亚洲高清| 国产91精品精华液一区二区三区| 日本精品一区二区三区高清 | 免费高清在线一区| 国产精品影音先锋| 欧美系列日韩一区| 国产精品丝袜久久久久久app| 日韩精品每日更新| 97精品久久久午夜一区二区三区| 欧美一级片免费看|