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

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

?? can232.c

?? C8051F020控制的SJA1000can總線芯片的驅動程序
?? C
字號:
#pragma  REGPARMS
#include <math.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "c8051f020.h"
#include "can20.h"
#define BAUDRATE  115200              // Baud rate of UART in bps
#define SYSCLK    22118400          // SYSCLK frequency in Hz
unsigned char SendBuffer[13];
unsigned char GetBuffer[13];
unsigned char CommBuffer[15];
unsigned char CommP;
int  CommRP,CommRCount;
int  Can0RP,Can0RCount;
int  Can0TP;
int  CommTP;
unsigned char xdata  CommRBuffer[1024];
//unsigned char xdata  CommRBuffer[1024]={0x08,0x55,0x00,0x11,0x22,0x33,0x55,0x44,0x360,0x44,0x36};
unsigned char xdata  Can0RBuffer[1024];
void config (void) {

//Local Variable Definitions
	WDTCN = 0x07;	// Watchdog Timer Control Register
    WDTCN = 0xDE;   // Disable WDT
    WDTCN = 0xAD;

	XBR0 = 0xEF;	// XBAR0: Initial Reset Value
	XBR1 = 0x07;	// XBAR1: Initial Reset Value
	XBR2 = 0x44;	// XBAR2: Initial Reset Value
// Port configuration (1 = Push Pull Output)
    P0MDOUT = 0x1D; // Output configuration for P0 
    P1MDOUT = 0x01; // Output configuration for P1 
    P2MDOUT = 0x03; // Output configuration for P2 
    P3MDOUT = 0x00; // Output configuration for P3 
    P74OUT = 0xff;  // Output configuration for P4-7
    P1MDIN = 0xFF;  // Input configuration for P1
// View port pinout

		// The current Crossbar configuration results in the 
		// following port pinout assignment:
		// Port 0
		// P0.0 = UART TX0        (Push-Pull Output)
		// P0.1 = UART RX0        (Open-Drain Output/Input)
		// P0.2 = SPI Bus SCK     (Push-Pull Output)
		// P0.3 = SPI Bus MISO    (Push-Pull Output)
		// P0.4 = SPI Bus MOSI    (Push-Pull Output)
		// P0.5 = SPI Bus NSS     (Open-Drain Output/Input)
		// P0.6 = SMBus SDA       (Open-Drain Output/Input)
		// P0.7 = SMBus SCL       (Open-Drain Output/Input)

		// Port 1
		// P1.0 = UART TX1        (Push-Pull Output)(Digital)
		// P1.1 = UART RX1        (Open-Drain Output/Input)(Digital)
		// P1.2 = PCA CEX0        (Open-Drain Output/Input)(Digital)
		// P1.3 = PCA CEX1        (Open-Drain Output/Input)(Digital)
		// P1.4 = PCA CEX2        (Open-Drain Output/Input)(Digital)
		// P1.5 = PCA CEX3        (Open-Drain Output/Input)(Digital)
		// P1.6 = PCA CEX4        (Open-Drain Output/Input)(Digital)
		// P1.7 = PCA ECI         (Open-Drain Output/Input)(Digital)
					
		// Port 2		
		// P2.0 = CP0             (Push-Pull Output)
		// P2.1 = CP1             (Push-Pull Output)
		// P2.2 = T0              (Open-Drain Output/Input)
		// P2.3 = /INT0           (Open-Drain Output/Input)
		// P2.4 = GP I/O          (Open-Drain Output/Input)
		// P2.5 = GP I/O          (Open-Drain Output/Input)
		// P2.6 = GP I/O          (Open-Drain Output/Input)
		// P2.7 = GP I/O          (Open-Drain Output/Input)

		// Port 3		
		// P3.0 = GP I/O          (Open-Drain Output/Input)
		// P3.1 = GP I/O          (Open-Drain Output/Input)
		// P3.2 = GP I/O          (Open-Drain Output/Input)
		// P3.3 = GP I/O          (Open-Drain Output/Input)
		// P3.4 = GP I/O          (Open-Drain Output/Input)
		// P3.5 = GP I/O          (Open-Drain Output/Input)
		// P3.6 = GP I/O          (Open-Drain Output/Input)
		// P3.7 = GP I/O          (Open-Drain Output/Input)

    EMI0CF = 0x24;    // External Memory Configuration Register
	EMI0CN=0x00;
    EMI0TC=0x01;
}
void SYSCLK_Init (void)
{
   int data i;                         // delay counter
   OSCXCN = 0x67;                      // start external oscillator with
                                       // 22.1184MHz crystal
   for (i=0; i < 256; i++) ;           // XTLVLD blanking interval (>1ms)
   while (!(OSCXCN & 0x80)) ;          // Wait for crystal osc. to settle
   OSCICN = 0x88;                      // select external oscillator as SYSCLK
                                       // source and enable missing clock
                                       // detector
}
void UART0_Init (void)
{
   SCON0   = 0x50;                     // SCON0: T1 mode 1, 8-bit UART, enable RX
                                      
   TMOD    = 0x21;                     // TMOD: timer 1, mode 2, 8-bit reload
                                       // T0 16 bit Timer
   T2CON &= 0x0cf;                     //select T1 as  baudrate 
   TH1    = -(SYSCLK/BAUDRATE/16);     // set Timer1 reload value for baudrate
   TR1    = 1;                         // start Timer1
   CKCON |= 0x10;                      // Timer1 uses SYSCLK as time base
   PCON  |= 0x80;                      // SMOD00 = 1
   ES0=1;
}
unsigned char Can_Init(void)
{
 unsigned char tt;
 unsigned int i;
 P3=0xff;
 for(i=0;i<1000;i++);
 P3=0x00;
 for(i=0;i<1000;i++);
 P3=0xff;
 for(i=0;i<1000;i++);	 //ModeControlReg= RM_RR_Bit;改動
 ModeControlReg= RM_RR_Bit|STM_Bit;
 tt=ModeControlReg;
 ClockDivideReg=0x88;
 InterruptEnReg=0xff;
 BusTiming0Reg= 0x03; //100 K
 BusTiming1Reg=0x2f;
 AcceptCode0Reg=0x57;
 AcceptCode1Reg=0x00;
 AcceptCode2Reg=0xaa;
 AcceptCode3Reg=0x55;
 AccepMask0Reg=0xff;
 AccepMask1Reg=0xff;
 AccepMask2Reg=0xff;
 AccepMask3Reg=0xff;
 
 RxBufstartAdr=0;
 TxErrCountReg=0;
 RxErrCountReg=0;
 ErrCodeCapReg=0;
 OutControlReg=0x1a;
 ModeControlReg=AFM_Bit;
 
 tt=StatusReg;
 while(tt==0x10)
 tt=StatusReg; 
 return tt;
}
void WriteCan()
{
 unsigned char * xdata tt;
 unsigned int i;
 unsigned char tt1,count;
 count=(CommRBuffer[CommTP]&0x0f);
 if((CommRBuffer[CommTP]&0x80)==0x00)
 count+=3;
 else
 count+=5;


 tt1=StatusReg; 
 if((tt1&RS_Bit)!=0x00)return;
 tt1=StatusReg;
 if((tt1&TCS_Bit)==0x00)return;
 tt=&TxFramInFo;



 for(i=0;i<count;i++)
 {SendBuffer[i]=CommRBuffer[CommTP++];
  if(CommTP==1024)CommTP=0;
 }



 //EA=0;
 for(i=0;i<count;i++)
 {*tt=SendBuffer[i];
  tt++;
 }
 CommandReg=TR_Bit;
//EA=1;
 CommRCount-=count;
 return ;
}
void COMM1_ISR (void) interrupt 4
{
 unsigned char i;
 unsigned char count; 
 if(RI0==0x01)
 {RI0=0;
  CommBuffer[CommP]=SBUF0;
  CommP++;
  if(CommBuffer[0]!=0xaa)
  {CommP=0;
   return;
  }
  if(CommP>2)
  {count=(CommBuffer[2]&0x0f);
   if((CommBuffer[2]&0x80)==0)
   count+=3;
   else
   count+=5;
   if(CommBuffer[1]!=0x55)
   {CommP=0;
    return;
   }
  }
  else
  return;
  if(CommP==(count+2))
  {
   CommP=0;   
   if((CommRCount+count)<1024)
    {for(i=0;i<count;i++)
     {CommRBuffer[CommRP++]=CommBuffer[2+i];
      if(CommRP==1024)
	  CommRP=0;
	 }
	 CommRCount+=count;
/*	 SBUF0=0xaa;
	 while(TI0==0);
	 TI0=0;
     SBUF0=0x55;
	 while(TI0==0);
	 TI0=0;*/
	}
   else
   {
    i=100;
   }
  }
 }

}
void INTE0_ISR (void) interrupt 0
{
  unsigned char tt1;
  unsigned char * xdata tt;
  int i,count;
  tt1=InterruptReg;
  if((tt1&0x04)!=0)
  {
   tt1=StatusReg;
   if((tt1&0x80)!=0)
   ModeControlReg=AFM_Bit;
   return;
  }
 
  if((tt1&0x08)!=0)
  {CommandReg=0x0c;
   return;
  }
  if((tt1&0x01)!=0)
  {tt=&RxFramInFo;
   count=(*tt&0x0f);
   if((*tt&0x80)==0)
   count+=3;
   else
   count+=5;
   for(i=0;i<count;i++)
   {GetBuffer[i]=*tt;
    tt++;
   }
   if((Can0RCount+count)<1024)
   {Can0RCount+=count;
    for(i=0;i<count;i++)
	{Can0RBuffer[Can0RP++]=GetBuffer[i];
	 if(Can0RP==1024)Can0RP=0;
	} 
   }
  CommandReg=RRB_Bit;
  }
  tt1=ArbLostCapReg;
  tt1=ErrCodeCapReg; 
  return;
}
void Write232()
{
 int i,count;
 count=(Can0RBuffer[Can0TP]&0x0f);
 if((Can0RBuffer[Can0TP]&0x80)==0)
 count+=3;
 else
 count+=5;
 SBUF0=0xaa;
 while(TI0==0);
 TI0=0;
 SBUF0=0x55;
 while(TI0==0);
 TI0=0;
 for(i=0;i<count;i++)
 {SBUF0=Can0RBuffer[Can0TP++];
  if(Can0TP==1024)Can0TP=0;
  while(TI0==0);
  TI0=0;
 }
 Can0RCount-=count;
}

/*void Write232a()
{
 unsigned int i,count;
 count=(CommRBuffer[CommTP]&0x0f);
 if((CommRBuffer[CommTP]&0x80)==0)
 count+=3;
 else
 count+=5;
 SBUF0=0xaa;
 while(TI0==0);
 TI0=0;
 SBUF0=0x55;
 while(TI0==0);
 TI0=0;
 for(i=0;i<count;i++)
 {SBUF0=CommRBuffer[CommTP++];
  if(CommTP==100)CommTP=0;
  while(TI0==0);
  TI0=0;
 }
 CommRCount-=count;
}
*/
main()
{
// unsigned char tt1;


 SYSCLK_Init();
 config();
 UART0_Init();
 Can_Init();
 EA=1;
 EX0=1;
 IP=0x01;
 CommP=0;
 CommRP=0;
 CommRCount=0;
 CommTP=0;
 Can0RP=0;
 Can0RCount=0;
 Can0TP=0;




 while(1)
 {if(CommRP!=CommTP)
  //Write232a();
  WriteCan();
  if(Can0RP!=Can0TP)
  Write232();
 // tt1=StatusReg; 
 }
}




?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产乱国产乱300精品| 9i在线看片成人免费| 亚洲国产精品精华液ab| 在线看日韩精品电影| 激情深爱一区二区| 一区二区三区中文在线观看| 2021国产精品久久精品| 欧美日韩亚州综合| 99精品视频一区二区三区| 久久精品99久久久| 亚洲国产色一区| 亚洲欧洲国产日本综合| 久久影视一区二区| 91麻豆精品国产| 色伊人久久综合中文字幕| 国产精品影视在线| 精品一区二区三区免费视频| 亚洲国产成人tv| 亚洲精品中文在线观看| 国产片一区二区| 久久一二三国产| 正在播放亚洲一区| 欧美性受极品xxxx喷水| aaa国产一区| 国产成人一区二区精品非洲| 六月丁香综合在线视频| 日本色综合中文字幕| 亚洲曰韩产成在线| 中文字幕在线不卡一区| 欧美激情一区二区三区蜜桃视频| 日韩一级黄色片| 678五月天丁香亚洲综合网| 欧美性大战久久久久久久蜜臀| 色综合视频在线观看| 99久久综合色| 99久久综合精品| 色综合天天综合色综合av| 色综合天天综合狠狠| 91国偷自产一区二区三区成为亚洲经典 | 欧美日韩精品免费| 欧美三区在线观看| 欧美日韩亚洲综合一区| 欧美日韩国产高清一区| 欧美精品色综合| 911国产精品| 91精品免费观看| 日韩一区和二区| 欧美成人bangbros| 久久免费偷拍视频| 国产精品嫩草影院com| 亚洲欧美综合网| 夜夜夜精品看看| 亚洲国产日日夜夜| 日本v片在线高清不卡在线观看| 婷婷夜色潮精品综合在线| 青青草成人在线观看| 国产在线精品不卡| 成人av中文字幕| 91视频com| 欧美美女网站色| 欧美精品一区二区三区一线天视频 | 丝袜诱惑亚洲看片| 美国三级日本三级久久99| 久久精品99国产精品日本| 国产大片一区二区| 色综合视频在线观看| 欧美日韩在线播放| 精品国产1区二区| 中文字幕第一区| 亚洲一区视频在线| 麻豆91免费看| 成人av小说网| 欧美电影影音先锋| 国产日韩精品久久久| 一区二区高清在线| 美国一区二区三区在线播放| 国产电影一区在线| 欧美色大人视频| 欧美精品一区二区高清在线观看| 国产精品乱码人人做人人爱| 亚洲一区二区欧美日韩| 国产一区二区久久| 色屁屁一区二区| 26uuu亚洲综合色| 亚洲男人的天堂在线aⅴ视频| 天使萌一区二区三区免费观看| 国产精品18久久久久久vr| 日本道精品一区二区三区| 欧美喷潮久久久xxxxx| 精品国产精品一区二区夜夜嗨| 亚洲色图欧美激情| 九色|91porny| 欧美色中文字幕| 国产精品久久久久婷婷| 蜜臀久久99精品久久久画质超高清| 成人av在线播放网站| 欧美变态口味重另类| 一区二区三区日韩欧美| 国产成人精品亚洲777人妖 | 中文字幕精品在线不卡| 一区二区三区在线视频免费| 裸体健美xxxx欧美裸体表演| 91视视频在线直接观看在线看网页在线看| 欧美日韩一卡二卡| 国产精品国产三级国产专播品爱网| 七七婷婷婷婷精品国产| 色天使色偷偷av一区二区| 久久久久久亚洲综合| 美国av一区二区| 8x8x8国产精品| 一区二区三区视频在线看| 成人激情午夜影院| 久久久精品天堂| 精品一区二区国语对白| 欧美精品一二三| 亚洲一区二区三区四区的| 成人在线综合网站| 精品国产乱码91久久久久久网站| 日韩精品福利网| 在线观看免费视频综合| 成人欧美一区二区三区白人| 国产成人亚洲精品狼色在线| 久久久精品中文字幕麻豆发布| 蜜桃av一区二区三区| 欧美一区二区三区人| 五月激情综合婷婷| 在线综合亚洲欧美在线视频| 亚洲一区二区三区国产| 欧美性受极品xxxx喷水| 亚洲国产乱码最新视频| 在线观看国产91| 伊人婷婷欧美激情| 色欧美片视频在线观看在线视频| 中文字幕一区二区三| 成人18精品视频| 国产精品国产a| 99久久综合99久久综合网站| 中文字幕亚洲区| 91色porny| 亚洲午夜私人影院| 91精品国产综合久久久久久 | 亚洲国产日韩在线一区模特| 91久久免费观看| 亚洲国产精品自拍| 欧美日本在线观看| 日本中文字幕一区| 日韩欧美电影在线| 国产精品一级在线| 中文字幕一区二区三区色视频| 色婷婷国产精品综合在线观看| 亚洲国产精品一区二区久久| 欧美日韩一区视频| 蜜桃av一区二区| 国产午夜亚洲精品理论片色戒| 国产一区二区三区黄视频 | 欧美久久一区二区| 美腿丝袜亚洲一区| 国产婷婷精品av在线| 99久久99久久精品免费看蜜桃| 亚洲欧美国产毛片在线| 欧美人妖巨大在线| 国产在线一区观看| 日韩高清中文字幕一区| 91精品国产色综合久久不卡电影| 另类小说色综合网站| 欧美激情一区在线| 欧美亚男人的天堂| 国内精品久久久久影院色 | 日本一区二区在线不卡| 91麻豆精品秘密| 日韩1区2区3区| 亚洲国产精品ⅴa在线观看| 欧美亚洲高清一区二区三区不卡| 美女国产一区二区三区| 国产精品不卡一区二区三区| 欧美日韩一卡二卡三卡 | 日本成人中文字幕| 国产精品视频九色porn| 欧美日韩国产综合久久| 国产综合久久久久久鬼色| 亚洲老司机在线| 精品日韩欧美在线| 色综合久久88色综合天天6| 男男gaygay亚洲| 亚洲女人小视频在线观看| 日韩欧美aaaaaa| 欧美亚洲愉拍一区二区| 国产精品一卡二卡在线观看| 亚洲电影在线免费观看| 中文字幕欧美区| 日韩三级视频在线看| 91久久线看在观草草青青| 国产老女人精品毛片久久| 亚洲国产精品久久久久婷婷884| 国产欧美久久久精品影院| 538prom精品视频线放| 91免费国产视频网站| 国产综合色在线视频区| 天堂av在线一区| 亚洲精品国产品国语在线app|