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

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

?? can.c

?? 用89C51來控制SJA1000的源碼程序
?? C
字號:
#include  "stdio.h"
#include  "string.h"
#include  "intrins.h"
//#include "AT89X51.H"
#include "reg52.h"

//定義SJA1000的基址

#define SJA_BaseAdr  0X7F00

// 控制寄存器

#define         REG_MODE          SJA_BaseAdr+0x00       //內部控制寄存器
#define         REG_COMMAND       SJA_BaseAdr+0x01       //命令寄存器
#define         REG_STATUS        SJA_BaseAdr+0x02       //狀態寄存器
#define         REG_INTERRUPT     SJA_BaseAdr+0x03       //中斷寄存器
#define         REG_INTENABLE     SJA_BaseAdr+0x04       //中斷使能寄存器
#define         REG_BTR0          SJA_BaseAdr+0x06       //總線定時寄存器0
#define         REG_BTR1          SJA_BaseAdr+0x07       //總線定時寄存器1
#define         REG_OCR           SJA_BaseAdr+0x08       //輸出控制寄存器
#define         REG_TEST          SJA_BaseAdr+0x09       //測試寄存器

#define         REG_RESVER1       SJA_BaseAdr+0x0A       //保留1
#define         REG_ARBITRATE     SJA_BaseAdr+0x0B       //仲裁丟失捕捉
#define         REG_ERRCATCH      SJA_BaseAdr+0x0C       //錯誤代碼捕捉
#define         REG_ERRLIMIT      SJA_BaseAdr+0x0D       //錯誤報警限額

#define         REG_RXERR         SJA_BaseAdr+0x0E         //接收錯誤計數器
#define         REG_TXERR         SJA_BaseAdr+0x0F         //發送錯誤計數器

#define         REG_ACR1          SJA_BaseAdr+0x10       //驗收代碼寄存器
#define         REG_ACR2          SJA_BaseAdr+0x11       //驗收代碼寄存器
#define         REG_ACR3          SJA_BaseAdr+0x12       //驗收代碼寄存器
#define         REG_ACR4          SJA_BaseAdr+0x13       //驗收代碼寄存器
#define         REG_AMR1          SJA_BaseAdr+0x14       //驗收屏蔽寄存器
#define         REG_AMR2          SJA_BaseAdr+0x15       //驗收屏蔽寄存器
#define         REG_AMR3          SJA_BaseAdr+0x16       //驗收屏蔽寄存器
#define         REG_AMR4          SJA_BaseAdr+0x17       //驗收屏蔽寄存器

// 發送緩沖區寄存器
#define         REG_TXD_FID       SJA_BaseAdr+0x10         //發送緩沖區1
#define         REG_TXD_ID1       SJA_BaseAdr+0x11         //發送緩沖區2
#define         REG_TXD_ID2       SJA_BaseAdr+0x12         //發送緩沖區3
#define         REG_TXD_ID3       SJA_BaseAdr+0x13         //發送緩沖區4
#define         REG_TXD_ID4       SJA_BaseAdr+0x14         //發送緩沖區5
#define         REG_TXBuffer1     SJA_BaseAdr+0x15         //發送緩沖區6
#define         REG_TXBuffer2     SJA_BaseAdr+0x16         //發送緩沖區7
#define         REG_TXBuffer3     SJA_BaseAdr+0x17         //發送緩沖區8
#define         REG_TXBuffer4     SJA_BaseAdr+0x18         //發送緩沖區9
#define         REG_TXBuffer5     SJA_BaseAdr+0x19         //發送緩沖區10
#define         REG_TXBuffer6     SJA_BaseAdr+0x1A         //發送緩沖區11
#define         REG_TXBuffer7     SJA_BaseAdr+0x1B         //發送緩沖區12
#define         REG_TXBuffer8     SJA_BaseAdr+0x1C         //發送緩沖區13

// 接收緩沖區寄存器
#define         REG_RXD_FID       SJA_BaseAdr+0x10         //接收緩沖區1
#define         REG_RXD_ID1       SJA_BaseAdr+0x11         //接收緩沖區2
#define         REG_RXD_ID2       SJA_BaseAdr+0x12         //接收緩沖區3
#define         REG_RXD_ID3       SJA_BaseAdr+0x13         //接收緩沖區4
#define         REG_RXD_ID4       SJA_BaseAdr+0x14         //接收緩沖區5
#define         REG_RXBuffer1     SJA_BaseAdr+0x15         //接收緩沖區6
#define         REG_RXBuffer2     SJA_BaseAdr+0x16         //接收緩沖區7
#define         REG_RXBuffer3     SJA_BaseAdr+0x17         //接收緩沖區8
#define         REG_RXBuffer4     SJA_BaseAdr+0x18         //接收緩沖區9
#define         REG_RXBuffer5     SJA_BaseAdr+0x19         //接收緩沖區10
#define         REG_RXBuffer6     SJA_BaseAdr+0x1A         //接收緩沖區11
#define         REG_RXBuffer7     SJA_BaseAdr+0x1B         //接收緩沖區12
#define         REG_RXBuffer8     SJA_BaseAdr+0x1C         //接收緩沖區13

#define         REG_RXCOUNT       SJA_BaseAdr+0x1D         //RX報文計數器
#define         REG_RBSA          SJA_BaseAdr+0x1E         //接收緩沖區起始地址
#define         REG_CDR           SJA_BaseAdr+0x1F         //時鐘分頻寄存器

/*
功能說明:   CAN控制器SJA1000通訊波特率.SJA1000的晶振為必須為
16MHZ*/

#define         BTR0_Rate_20k      0x53          //20KBPS的預設值
#define         BTR1_Rate_20k      0x2F          //20KBPS的預設值
#define         BTR0_Rate_40k      0x87          //40KBPS的預設值
#define         BTR1_Rate_40k      0xFF          //40KBPS的預設值
#define         BTR0_Rate_50k      0x47          //50KBPS的預設值
#define         BTR1_Rate_50k      0x2F          //50KBPS的預設值
#define         BTR0_Rate_80k      0x83          //80KBPS的預設值
#define         BTR1_Rate_80k      0xFF          //80KBPS的預設值
#define         BTR0_Rate_100k     0x43          //100KBPS的預設值
#define         BTR1_Rate_100k     0x2f          //100KBPS的預設值
#define         BTR0_Rate_125k     0x03          //125KBPS的預設值
#define         BTR1_Rate_125k     0x1c          //125KBPS的預設值
#define         BTR0_Rate_200k     0x81          //200KBPS的預設值
#define         BTR1_Rate_200k     0xFA          //200KBPS的預設值
#define         BTR0_Rate_250k     0x01          //250KBPS的預設值
#define         BTR1_Rate_250k     0x1c          //250KBPS的預設值
#define         BTR0_Rate_400k     0x80          //400KBPS的預設值
#define         BTR1_Rate_400k     0xfa          //400KBPS的預設值
#define         BTR0_Rate_500k     0x00          //500KBPS的預設值
#define         BTR1_Rate_500k     0x1c          //500KBPS的預設值
#define         BTR0_Rate_666k     0x80          //666KBPS的預設值
#define         BTR1_Rate_666k     0xb6          //666KBPS的預設值
#define         BTR0_Rate_800k     0x00          //800KBPS的預設值
#define         BTR1_Rate_800k     0x16          //800KBPS的預設值
#define         BTR0_Rate_1000k    0x00          //1000KBPS的預設值
#define         BTR1_Rate_1000k    0x14          //1000KBPS的預設值
//命令字
#define    TR_CMD     0X01
#define    AT_CMD     0X02
#define    RRB_CMD    0X04
#define    COS_CMD    0X08
#define    GTS_CMD    0X10
//錯誤字

#define CAN_INTERFACE_OK      0
#define CAN_BUS_OK            0
#define CAN_INTERFACE_ERR     0XFF
#define CAN_ENTERSET_ERR      0XFE
#define CAN_QUITSET_ERR       0XFD
#define CAN_INITOBJECT_ERR    0XFC
#define CAN_INITBTR_ERR       0XFB
#define CAN_INITOUTCTL_ERR    0XFA
#define CAN_INTCLKDIV_ERR     0XF9
#define CAN_BUS_ERR           0XF8

//系統指針,指向SJA1000

unsigned char xdata *SJA_BCANAdr;
unsigned char data Tmod_data;
unsigned char run_lamp_flush_count = 0;
unsigned char run_lamp_flush_time = 10;
sbit  run_lamp = P1^1;
unsigned char data send_data[10],rcv_data[10];
unsigned int data rxbuffer[10]={REG_RxBuffer1,REG_RxBuffer2,REG_RxBuffer3,REG_RxBuffer4,REG_RxBuffer5,REG_RxBuffer6,REG_RxBuffer7,REG_RxBuffer8,REG_RxBuffer9,REG_RxBuffer10};

unsigned int data txbuffer[10]={REG_TxBuffer1,REG_TxBuffer2,REG_TxBuffer3,REG_TxBuffer4,REG_TxBuffer5,REG_TxBuffer6,REG_TxBuffer7,REG_TxBuffer8,REG_TxBuffer9,REG_TxBuffer10};
unsigned char bdata flag_init;
sbit rcv_flag=flag_init^0;
sbit err_flag=flag_init^0;
sbit cs=P2^7;

bit BCAN_CREAT_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==0X01)
         {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==0X00)
         {return 0;}
      else
         {return 1;}
}

bit BCAN_SET_BANDRATE(unsigned char CAN_ByteRate)
{
     unsigned char BR_Num= CAN_ByteRate,BTR0_num,BTR1_num;
       switch (BR_Num)
        {
          case ByteRate_40k  :
               BTR0_num=0x87;
               BTR1_num=0xff;
               break;
          case ByteRate_50k  :
               BTR0_num=0x47;
               BTR1_num=0x2f;
               break;
          case ByteRate_80k  :
               BTR0_num=0x83;
               BTR1_num=0xff;
               break;
          case ByteRate_100k  :
               BTR0_num=0x43;
               BTR1_num=0x2f;
               break;
          case ByteRate_200k  :
               BTR0_num=0x81;
               BTR1_num=0xfa;
               break;
          case ByteRate_400k  :
               BTR0_num=0x80;
               BTR1_num=0xfa;
               break;
          case ByteRate_500k  :
               BTR0_num=0x01;
               BTR1_num=0x1c;
               break;
          case ByteRate_800k  :
               BTR0_num=0x00;
               BTR1_num=0x16;
               break;
          case ByteRate_1000k  :
               BTR0_num=0x00;
               BTR1_num=0x14;
               break;
          default :
               return 1;
               break;
        }

    SJA_BCANAdr=REG_BTR0;
    *SJA_BCANAdr=BTR0_num;
    if(*SJA_BCANAdr!=BTR0_num)
      {return 1;}
    SJA_BCANAdr=REG_BTR1;
    *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_ACR;
    *SJA_BCANAdr= BCAN_ACR;
    if(*SJA_BCANAdr!= BCAN_ACR)
        {return 1;}

    SJA_BCANAdr=REG_AMR;
    *SJA_BCANAdr= BCAN_AMR;
    if(*SJA_BCANAdr!= BCAN_AMR)
        {return 1;}

       return 0;
}

bit BCAN_SET_OUTCLK(unsigned char OUT_CONTROL,unsigned char CLOCK_OUT)
  {

    SJA_BCANAdr=REG_OCR;
    *SJA_BCANAdr= OUT_CONTROL;
    if(*SJA_BCANAdr!= OUT_CONTROL)
        {return 1;}

    SJA_BCANAdr=REG_CDR;
    *SJA_BCANAdr= CLOCK_OUT;
    if(*SJA_BCANAdr!= CLOCK_OUT)
        {return 1;}
else
       return 0;
}

bit BCAN_DATA_WRITE(unsigned char *senddatabuf)
{
    unsigned char tempcount,i;
    SJA_BCANAdr=REG_STATUS;
    if((*SJA_BCANAdr&0x08)==0)
      {return 1;}

    if((*SJA_BCANAdr&0x04)==0)
      {return 1;}

   SJA_BCANAdr=REG_TxBuffer1;
   if((senddatabuf[1]&0x10)==0)
      {tempcount=(senddatabuf[1]&0x0f)+2;}
   else
       {tempcount=2;}
for (i=0;i<tempcount; i++)
     {
       SJA_BCANAdr=txbuffer[i];//發送區的地址區
       *SJA_BCANAdr=senddatabuf[i];
     }
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_RxBuffer2;
if((*SJA_BCANAdr&0x10)==0)

{  tempcount=(*SJA_BCANAdr&0x0f)+2;}
else
{  tempcount=2;}
SJA_BCANAdr=REG_RxBuffer1;
memcpy(RCVdatabuf,SJA_BCANAdr,tempcount);
return 0;
}
bit BCAN_CMD_PGR(unsigned char cmd)
{
    SJA_BCANAdr=REG_COMMAND;
    *SJA_BCANAdr= cmd;
    switch (cmd)
    {
      case TR_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;

       case GTS_CMD:
           return 0;
           break;
       default :
               return 1;
               break;
        }
     }

void ex0_init(void) interrupt 0 using 1
{
SJA_BCANAdr=REG_INTERRUPT;
flag_init=*SJA_BCANAdr;
}
void Init_Cpu( void )
{
PX0=1;
IT0=1;
EX0=1;
ET0=1;
EA=1;
cs=0;
}

void Init_SJA( void )
{
   BCAN_ENTER_RETMODEL();
   BCAN_SET_BANDRATE(8);
   BCAN_SET_OBJECT(0x00,0x00);
   BCAN_SET_OUTCLK(0xAA,0X48);
   BCAN_QUIT_RETMODEL();
SJA_BCANAdr=REG_CONTROL;
*SJA_BCANAdr|=0x1e;
}

void T0IN (void) interrupt 1 using 2
{
TR0=0;
if(run_lamp_flush_count >= run_lamp_flush_time)
    {
        if(run_lamp)
        {    run_lamp = 0;  run_lamp_flush_time = 0; }
        else
        {    run_lamp = 1;  run_lamp_flush_time = 40; }
        run_lamp_flush_count = 0;
    }
    else
        run_lamp_flush_count++;
      TH0=0X4C;
      TL0=0X00;
      TR0=1;
   }
void initt0(void)
{
Tmod_data=TMOD;
Tmod_data&=0X0F;
Tmod_data|=0x01;
TMOD=Tmod_data;
TH0=0X4C;
TL0=0X00;
TR0=1;
}

void main (void)
{
    unsigned int delay;
    for(delay=0;delay<30000;delay++)  {; }  // 復位延時
    initt0();
    Init_Cpu();
    cs=1;
    Init_SJA();
    flag_init=0X00;

    while (1)
      {
        if (rcv_flag)
             {
                   rcv_flag=0;
                   BCAN_DATA_RECEIVE(rcv_data);

               BCAN_CMD_PGR(0x04);
             }
        if(err_flag)
             {
                   err_flag=0;
                   Init_SJA();
               }
     }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲午夜一区二区| 日日夜夜精品视频免费| 精品一区二区av| 制服丝袜中文字幕亚洲| 日韩精品免费专区| 日韩欧美黄色影院| 国产成人精品一区二区三区网站观看| 欧美xxxx老人做受| 日韩1区2区3区| 2020国产成人综合网| 成人激情视频网站| 亚洲午夜精品网| 久久久美女艺术照精彩视频福利播放| 精品亚洲porn| 一区二区三区**美女毛片| 久久无码av三级| 99久久精品国产一区二区三区| 亚洲电影一级黄| 亚洲天堂网中文字| 欧美一二三区精品| 欧美亚洲尤物久久| 国产xxx精品视频大全| 视频精品一区二区| 亚洲婷婷综合色高清在线| 精品日本一线二线三线不卡| 色婷婷久久久久swag精品| 国产成人在线免费| 久久99国产精品免费网站| 一区二区三区中文字幕电影| 国产精品水嫩水嫩| wwwwxxxxx欧美| 2023国产精品视频| 久久综合色8888| 91精品国产一区二区人妖| 99re6这里只有精品视频在线观看| 久久精品噜噜噜成人av农村| 久久国产精品99久久人人澡| 日韩码欧中文字| 国产精品丝袜在线| 中文字幕视频一区| 亚洲最快最全在线视频| 亚洲六月丁香色婷婷综合久久| 国产精品成人一区二区艾草 | 久久精品国产网站| 亚洲人吸女人奶水| 亚洲婷婷综合久久一本伊一区| 久久这里只有精品首页| 国产精品美女久久久久高潮| 国产精品久久99| 亚洲成人免费视| 人人精品人人爱| 99久久精品免费看国产| 678五月天丁香亚洲综合网| 欧美色男人天堂| 精品国产人成亚洲区| 亚洲免费在线看| 国产乱子轮精品视频| 色呦呦日韩精品| 国产欧美日韩三区| 日本亚洲三级在线| 成人精品免费视频| 在线成人午夜影院| 午夜精品福利久久久| 精品一区二区国语对白| 成人av免费在线| 日韩三级视频中文字幕| 中文字幕不卡在线| 天堂av在线一区| 国产精品一线二线三线| 一本久久a久久免费精品不卡| 欧美丰满高潮xxxx喷水动漫| 久久久777精品电影网影网 | 最近日韩中文字幕| 狠狠久久亚洲欧美| 不卡欧美aaaaa| 欧美激情中文不卡| 首页欧美精品中文字幕| av激情综合网| 精品国产乱码久久久久久闺蜜 | 国产午夜精品久久| 蜜桃在线一区二区三区| 丁香激情综合国产| 国产精品剧情在线亚洲| 老司机精品视频线观看86| 欧美影院一区二区三区| 一区二区三区在线观看国产| 青青青伊人色综合久久| 精品久久免费看| 亚洲另类中文字| 欧美日韩亚洲国产综合| 国产精品欧美一区二区三区| 国产乱子伦一区二区三区国色天香| 99久久伊人精品| 亚洲男帅同性gay1069| 色欧美片视频在线观看 | 一本久久a久久精品亚洲| 国产精品久久久久aaaa樱花| www.亚洲色图| 亚洲午夜久久久| 精品va天堂亚洲国产| 国产馆精品极品| 国产精品网曝门| 欧美性猛交xxxx乱大交退制版| 蜜臂av日日欢夜夜爽一区| 国产在线视视频有精品| 日韩一级在线观看| 波多野结衣中文一区| 日韩精品久久理论片| 6080国产精品一区二区| 亚洲激情成人在线| 精品欧美乱码久久久久久| 成人激情动漫在线观看| 亚洲成av人片在www色猫咪| 国产欧美一区二区精品久导航| 99精品热视频| 国产在线精品免费| 午夜精品一区二区三区免费视频| 久久久久久黄色| 欧美色爱综合网| 色妹子一区二区| 国产精品亚洲第一区在线暖暖韩国| 一区二区三区电影在线播| 国产视频亚洲色图| 久久久亚洲精品一区二区三区| 99久久综合狠狠综合久久| 国产精品66部| 午夜精品久久久久久久99樱桃| 亚洲精品中文字幕乱码三区| 国产精品二区一区二区aⅴ污介绍| 日韩欧美一区二区不卡| 欧美一区二区三区日韩视频| 欧美在线免费观看亚洲| 成人国产精品免费观看| 成人免费看的视频| 91精彩视频在线观看| 色伊人久久综合中文字幕| 91黄色激情网站| 欧美电影影音先锋| 久久久国产一区二区三区四区小说 | www.亚洲色图| 不卡的av电影| 欧美裸体bbwbbwbbw| 欧美日韩在线不卡| 26uuu国产日韩综合| 亚洲免费三区一区二区| 青青草视频一区| 91丨porny丨中文| 日韩一区二区在线观看| 精品少妇一区二区三区| 亚洲视频免费观看| 日本午夜精品视频在线观看| 国产在线精品一区二区夜色 | 自拍偷拍国产精品| 午夜精品国产更新| 蜜桃视频第一区免费观看| 国精品**一区二区三区在线蜜桃| 91丨porny丨最新| 久久亚洲捆绑美女| 亚洲超碰97人人做人人爱| 国产一区二区三区免费播放| 欧美日韩色一区| 一级中文字幕一区二区| 国产精品一线二线三线| 欧美成人vr18sexvr| 午夜精品视频在线观看| 91日韩一区二区三区| 中文字幕在线视频一区| 国产在线日韩欧美| 日韩亚洲国产中文字幕欧美| 成人精品gif动图一区| 国产999精品久久久久久| 欧美影视一区二区三区| 亚洲国产高清在线观看视频| 国产麻豆精品视频| 日韩一区二区三区四区五区六区| 一区二区三区在线视频播放| 成人性视频网站| 中文字幕在线不卡国产视频| 国产精品一区二区不卡| 欧美激情综合五月色丁香| 国产精品一区专区| 国产精品久久久久影院色老大 | 亚洲免费在线观看| 欧美性高清videossexo| 日韩国产精品91| 国产丝袜欧美中文另类| 91丝袜国产在线播放| 午夜精品在线视频一区| 久久蜜桃一区二区| 成人精品免费网站| 婷婷中文字幕一区三区| 国产亚洲欧美在线| 在线免费一区三区| 国产一区二区三区久久悠悠色av| 精品黑人一区二区三区久久| 欧美伊人久久大香线蕉综合69| 美女视频网站久久| 一区二区三区四区精品在线视频| 欧美一区二区三区四区在线观看 | 91精品国产高清一区二区三区蜜臀|