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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? mcp2510.lst

?? 在51單片機(jī)上實(shí)現(xiàn)的擴(kuò)展CAN總線驅(qū)動程序
?? LST
?? 第 1 頁 / 共 2 頁
字號:
C51 COMPILER V7.50   MCP2510                                                               07/11/2005 20:13:03 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE MCP2510
OBJECT MODULE PLACED IN MCP2510.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE MCP2510.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /************************************************************************************\
   2                  MCP2510 CAN總線試驗(yàn)演示程序2003.10
   3          \************************************************************************************/
   4          
   5          
   6          #include "MCP2510.h"
   7          #include "def.h"
   8          #include "regx51.h"
   9          
  10          /********************** MCP2510 Pin *********************************/
  11          //#define MCP2510_CS                            0x4             //EXIO2
  12          
  13          /********************** MCP2510 Instruction *********************************/
  14          #define MCP2510INSTR_RESET              0xc0
  15          #define MCP2510INSTR_READ               0x03
  16          #define MCP2510INSTR_WRITE              0x02
  17          #define MCP2510INSTR_RTS                0x80    //request to send
  18          #define MCP2510INSTR_RDSTAT     0xa0    //read status
  19          #define MCP2510INSTR_BITMDFY    0x05    //bit modify
  20          
  21          
  22          //#define MCP2510_Enable()              do{CLREXIOBIT(MCP2510_CS);}while(0)
  23          //#define MCP2510_Disable()             do{SETEXIOBIT(MCP2510_CS); Delay(1);}while(0)
  24          
  25              MCP2510_Enable()
  26              {P1_0=0;}
  27          
  28                  MCP2510_Disable()
  29              {P1_0=1;}
  30          
  31          void MCP2510_Reset()
  32          {
  33   1              MCP2510_Enable();
  34   1      
  35   1              SendSIOData(MCP2510INSTR_RESET);
  36   1      
  37   1              MCP2510_Disable();
  38   1      }
  39          
  40          void MCP2510_Write(int address, int value)
  41          {
  42   1              MCP2510_Enable();
  43   1      
  44   1              SendSIOData(MCP2510INSTR_WRITE);
  45   1              SendSIOData((unsigned char)address);
  46   1              SendSIOData((unsigned char)value);
  47   1      
  48   1              MCP2510_Disable();
  49   1      }
  50          
  51          unsigned char MCP2510_Read(int address)
  52          {
  53   1              unsigned char result;
  54   1      
  55   1              MCP2510_Enable();
C51 COMPILER V7.50   MCP2510                                                               07/11/2005 20:13:03 PAGE 2   

  56   1      
  57   1              SendSIOData(MCP2510INSTR_READ);
  58   1              SendSIOData((unsigned char)address);
  59   1      
  60   1              //SendSIOData(0);
  61   1              result=ReadSIOData();
  62   1      
  63   1              MCP2510_Disable();
  64   1      
  65   1              return result;
  66   1      }
  67          
  68          unsigned char MCP2510_ReadStatus()
  69          {
  70   1              unsigned char result;
  71   1      
  72   1              MCP2510_Enable();
  73   1      
  74   1              SendSIOData(MCP2510INSTR_RDSTAT);
  75   1      
  76   1              result=ReadSIOData();
  77   1      
  78   1              MCP2510_Disable();
  79   1      
  80   1              return result;
  81   1      }
  82          
  83          void MCP2510_WriteBits(int address,int value,int mask)
  84          {  int baddress,bvalue,bmask;
  85   1          baddress=address;
  86   1              bvalue=value;
  87   1              bmask=mask;
  88   1              MCP2510_Enable();
  89   1      
  90   1              SendSIOData(MCP2510INSTR_BITMDFY);
  91   1              SendSIOData((unsigned char)baddress);
  92   1              SendSIOData((unsigned char)bmask);
  93   1              SendSIOData((unsigned char)bvalue);
  94   1      
  95   1              MCP2510_Disable();
  96   1      }
  97          
  98          
  99          void MCP2510_SetBandRate(CanBandRate bandrate, BOOL IsBackNormal)
 100          {
 101   1              //
 102   1              // Bit rate calculations.
 103   1              //
 104   1              //Input clock fre=16MHz
 105   1              // In this case, we'll use a speed of 125 kbit/s, 250 kbit/s, 500 kbit/s.
 106   1              // If we set the length of the propagation segment to 7 bit time quanta,
 107   1              // and we set both the phase segments to 4 quanta each,
 108   1              // one bit will be 1+7+4+4 = 16 quanta in length.
 109   1              //
 110   1              // setting the prescaler (BRP) to 0 => 500 kbit/s.
 111   1              // setting the prescaler (BRP) to 1 => 250 kbit/s.
 112   1              // setting the prescaler (BRP) to 3 => 125 kbit/s.
 113   1              //
 114   1              // If we set the length of the propagation segment to 3 bit time quanta,
 115   1              // and we set both the phase segments to 1 quanta each,
 116   1              // one bit will be 1+3+2+2 = 8 quanta in length.
 117   1              // setting the prescaler (BRP) to 0 => 1 Mbit/s.
C51 COMPILER V7.50   MCP2510                                                               07/11/2005 20:13:03 PAGE 3   

 118   1      
 119   1              // Go into configuration mode
 120   1              MCP2510_Write(MCP2510REG_CANCTRL, MODE_CONFIG);
 121   1      
 122   1              switch(bandrate){
 123   2              case BandRate_125kbps:
 124   2                      MCP2510_Write(CNF1, SJW1|BRP4); //Synchronization Jump Width Length =1 TQ
 125   2                      MCP2510_Write(CNF2, BTLMODE_CNF3|(SEG4<<3)|SEG7); // Phase Seg 1 = 4, Prop Seg = 7
 126   2                      MCP2510_Write(CNF3, SEG4);// Phase Seg 2 = 4
 127   2                      break;
 128   2              case BandRate_250kbps:
 129   2                      MCP2510_Write(CNF1, SJW1|BRP2); //Synchronization Jump Width Length =1 TQ
 130   2                      MCP2510_Write(CNF2, BTLMODE_CNF3|(SEG4<<3)|SEG7); // Phase Seg 1 = 4, Prop Seg = 7
 131   2                      MCP2510_Write(CNF3, SEG4);// Phase Seg 2 = 4
 132   2                      break;
 133   2              case BandRate_500kbps:
 134   2                      MCP2510_Write(CNF1, SJW1|BRP1); //Synchronization Jump Width Length =1 TQ
 135   2                      MCP2510_Write(CNF2, BTLMODE_CNF3|(SEG4<<3)|SEG7); // Phase Seg 1 = 4, Prop Seg = 7
 136   2                      MCP2510_Write(CNF3, SEG4);// Phase Seg 2 = 4
 137   2                      break;
 138   2              case BandRate_1Mbps:
 139   2                      MCP2510_Write(CNF1, SJW1|BRP1); //Synchronization Jump Width Length =1 TQ
 140   2                      MCP2510_Write(CNF2, BTLMODE_CNF3|(SEG3<<3)|SEG2); // Phase Seg 1 = 2, Prop Seg = 3
 141   2                      MCP2510_Write(CNF3, SEG2);// Phase Seg 2 = 1
 142   2                      break;
 143   2              }
 144   1      
 145   1              if(IsBackNormal){
 146   2                      //Enable clock output
 147   2                      MCP2510_Write(CLKCTRL, MODE_LOOPBACK | CLKEN | CLK1);
 148   2              }
 149   1      }
 150          
 151          
 152          /*******************************************\
 153          *       序列讀取MCP2510數(shù)據(jù)                             *
 154          \*******************************************/
 155          /*unsigned char MCP2510_SRead( int address)
 156          {         unsigned char value[8];
 157                  //int i;
 158          
 159                  MCP2510_Enable();
 160                  SendSIOData(MCP2510INSTR_READ);
 161                  SendSIOData((unsigned char)address);
 162                  //for(i=0;i<nlength;i++)
 163              value[0]=ReadSIOData();     
 164                  MCP2510_Disable();
 165                  return value[0];
 166          }*/
 167          
 168          
 169          /*******************************************\
 170          *       序列寫入MCP2510數(shù)據(jù)                             *
 171          \*******************************************/
 172          void MCP2510_Swrite(int address,unsigned char value,unsigned char nlength)
 173          {   //int address;
 174   1              int i;
 175   1              unsigned char IDarry[1];
 176   1              IDarry[0]=value;
 177   1              MCP2510_Enable();
 178   1      
 179   1              SendSIOData(MCP2510INSTR_WRITE);
C51 COMPILER V7.50   MCP2510                                                               07/11/2005 20:13:03 PAGE 4   

 180   1              SendSIOData((unsigned char)address);
 181   1      
 182   1              for (i=0; i < nlength; i++) {
 183   2                      SendSIOData(IDarry[i]);
 184   2                      //pdata++;
 185   2              }
 186   1              MCP2510_Disable();
 187   1      }
 188          
 189          /*******************************************\
 190          *       讀取MCP2510 CAN總線ID                           *
 191          *       參數(shù): address為MCP2510寄存器地址*
 192          *                       can_id為返回的ID值                      *
 193          *       返回值                                                          *
 194          *       TRUE,表示是擴(kuò)展ID(29位)                        *
 195          *       FALSE,表示非擴(kuò)展ID(11位)               *
 196          \*******************************************/
 197          /*BOOL MCP2510_Read_Can_ID( int address, U32* can_id)
 198          {
 199                  U32 tbufdata;
 200                  unsigned char* p=(unsigned char*)&tbufdata;
 201          
 202                  MCP2510_SRead(address, p, 4);
 203                  *can_id = (tbufdata<<3)|((tbufdata>>13)&0x7);
 204                  *can_id &= 0x7ff;
 205          
 206                  if ( (p[MCP2510LREG_SIDL] & TXB_EXIDE_M) ==  TXB_EXIDE_M ) {
 207                          *can_id = (*can_id<<2) | (p[MCP2510LREG_SIDL] & 0x03);
 208                          *can_id <<= 16;
 209                          *can_id |= tbufdata>>16;
 210                          return TRUE;
 211                  }
 212                  return FALSE;
 213          }*/
 214          
 215          /***********************************************************\
 216          *       讀取MCP2510 接收的數(shù)據(jù)                                                  *
 217          *       參數(shù): nbuffer為第幾個緩沖區(qū)可以為3或者4 *
 218          *                       can_id為返回的ID值                                                      *
 219          *                       rxRTR表示是否是RXRTR                                            *
 220          *                       data表示讀取的數(shù)據(jù)                                              *
 221          *                       dlc表示data length code                                                 *
 222          *       返回值                                                                                          *
 223          *               TRUE,表示是擴(kuò)展總線                                            *
 224          *               FALSE,表示非擴(kuò)展總線                                           *
 225          \***********************************************************/
 226          /*BOOL MCP2510_Read_Can(U8 nbuffer, BOOL* rxRTR, U32* can_id, U8* data , U8* dlc)
 227          {
 228          
 229                  U8 mcp_addr = (nbuffer<<4) + 0x31, ctrl;
 230                  BOOL IsExt;
 231          
 232                  IsExt=MCP2510_Read_Can_ID( mcp_addr, can_id);
 233          
 234                  ctrl=MCP2510_Read(mcp_addr-1);
 235                  *dlc=MCP2510_Read( mcp_addr+4);
 236                  if ((ctrl & 0x08)) {
 237                          *rxRTR = TRUE;
 238                  }
 239                  else{
 240                          *rxRTR = FALSE;
 241                  }
C51 COMPILER V7.50   MCP2510                                                               07/11/2005 20:13:03 PAGE 5   

 242                  *dlc &= DLC_MASK;
 243                  MCP2510_SRead(mcp_addr+5, data, *dlc);
 244          
 245                  return IsExt;
 246          }*/
 247          
 248          
 249          /***********************************************************\
 250          *       寫入MCP2510 發(fā)送的數(shù)據(jù)                                                  *
 251          *       參數(shù): nbuffer為第幾個緩沖區(qū)可以為0、1、2        *
 252          *                       ext表示是否是擴(kuò)展總線                                   *
 253          *                       can_id為返回的ID值                                                      *
 254          *                       rxRTR表示是否是RXRTR                                            *
 255          *                       data表示讀取的數(shù)據(jù)                                              *
 256          *                       dlc表示data length code                                                 *
 257          *               FALSE,表示非擴(kuò)展總線                                           *
 258          \***********************************************************/
 259          /*void MCP2510_Write_Can( U8 nbuffer, BOOL ext, U32 can_id, BOOL rxRTR, U8* data,U8 dlc )

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产精品二十页| 在线免费不卡电影| 久久久久88色偷偷免费| 国产一区二区三区国产| 久久精品欧美一区二区三区不卡| 国产呦精品一区二区三区网站| 精品国产乱码久久久久久久久 | 日本午夜精品视频在线观看| 欧美伦理影视网| 老司机免费视频一区二区| 精品国产乱子伦一区| av在线综合网| 亚洲第一久久影院| 欧美成人精品福利| 成人免费毛片app| 一区二区免费在线播放| 日韩午夜激情视频| 成人免费视频视频在线观看免费| 亚洲精品国产第一综合99久久| 制服丝袜中文字幕亚洲| 国产一区二区剧情av在线| 亚洲欧美视频一区| 日韩视频国产视频| av动漫一区二区| 天天综合天天做天天综合| 久久久青草青青国产亚洲免观| 亚洲色图都市小说| 3751色影院一区二区三区| 成人永久aaa| 亚洲一区二区精品久久av| 久久久久综合网| 欧美亚洲免费在线一区| 国产精品18久久久久| 亚洲线精品一区二区三区| 2023国产精华国产精品| 欧美亚日韩国产aⅴ精品中极品| 国产在线播放一区二区三区| 一个色综合av| 中文字幕精品—区二区四季| 欧美精品777| 91在线精品一区二区三区| 精品中文av资源站在线观看| 亚洲女人****多毛耸耸8| 久久夜色精品国产欧美乱极品| 欧美午夜精品免费| 岛国精品在线观看| 久久99精品一区二区三区三区| 亚洲一区免费在线观看| 国产精品久久久久久福利一牛影视| 欧美一区三区二区| 欧美在线观看视频在线| 成人免费毛片app| 国产乱子伦视频一区二区三区| 亚洲成人免费在线| 亚洲欧美偷拍三级| 国产精品麻豆欧美日韩ww| 久久久久国产成人精品亚洲午夜| 欧美二区在线观看| 欧美视频精品在线| 色综合久久中文字幕| jizz一区二区| 成人app下载| 国产99久久久国产精品潘金| 激情六月婷婷久久| 毛片av中文字幕一区二区| 日韩精品久久理论片| 五月激情丁香一区二区三区| 亚洲一区视频在线观看视频| 亚洲精品v日韩精品| 18成人在线观看| 国产精品色哟哟| 中文字幕第一区综合| 国产日本一区二区| 日本一区二区三区视频视频| 国产亚洲欧洲997久久综合| 久久先锋影音av鲁色资源网| 久久久蜜桃精品| 久久精品欧美日韩| 国产午夜精品一区二区三区视频 | 一本色道久久综合亚洲aⅴ蜜桃| 不卡的电视剧免费网站有什么| 国产成人精品在线看| 国产不卡视频一区二区三区| 国产精品一二三| 成人影视亚洲图片在线| 不卡的看片网站| 91视频观看视频| 欧美主播一区二区三区| 亚洲免费观看在线观看| 一区二区三区四区在线播放| 亚洲在线中文字幕| 日韩精品乱码免费| 国产制服丝袜一区| 丁香桃色午夜亚洲一区二区三区| 成人午夜免费电影| 色94色欧美sute亚洲13| 欧美日韩一级片网站| 日韩欧美一区中文| 亚洲国产高清aⅴ视频| 亚洲另类一区二区| 日本在线不卡视频一二三区| 国产一区二区三区精品视频| 99精品一区二区| 欧美精选午夜久久久乱码6080| 精品国产自在久精品国产| 欧美韩国日本一区| 午夜精品久久久久久久久| 韩国成人在线视频| 色婷婷av一区二区| 日韩女优视频免费观看| 国产精品三级电影| 午夜欧美电影在线观看| 韩国成人在线视频| 色就色 综合激情| 精品国产自在久精品国产| 亚洲免费观看高清完整版在线观看 | 亚洲国产激情av| 午夜一区二区三区在线观看| 国产伦精一区二区三区| 欧美亚洲综合在线| 国产无一区二区| 天堂av在线一区| 不卡av在线网| 欧美成人官网二区| 一区二区三区在线高清| 色国产精品一区在线观看| 精品成人一区二区三区四区| 亚洲美女少妇撒尿| 国产精品一卡二| 欧美一区二区三区四区久久| 国产精品初高中害羞小美女文| 日本不卡一区二区三区| 成人av影院在线| 精品国产百合女同互慰| 一区二区三区在线免费观看| 国产成人精品www牛牛影视| 欧美日韩在线播放一区| 国产精品国产三级国产普通话99| 久久精品免费观看| 欧美日韩亚洲综合在线 欧美亚洲特黄一级 | 亚洲欧洲av色图| 国产一区二区三区黄视频 | 五月婷婷激情综合| 91视频一区二区三区| 久久精品欧美一区二区三区不卡 | 亚洲丝袜制服诱惑| 国产一区二区三区最好精华液| 欧美日韩视频不卡| 亚洲精品欧美二区三区中文字幕| 国产精品一区二区视频| 日韩欧美二区三区| 琪琪一区二区三区| 555www色欧美视频| 亚洲国产欧美日韩另类综合 | 国产一区二区三区在线观看免费 | 久久久一区二区三区捆绑**| 日韩在线一二三区| 欧美日韩免费不卡视频一区二区三区| 欧美激情一二三区| 国产宾馆实践打屁股91| 久久综合久久综合久久| 久久99久久99小草精品免视看| 在线成人免费观看| 日本最新不卡在线| 欧美一区二区在线免费播放| 污片在线观看一区二区| 欧美日韩国产123区| 亚洲高清中文字幕| 欧美在线影院一区二区| 一区二区三区成人| 精品视频免费看| 日本特黄久久久高潮| 日韩午夜激情av| 国产综合久久久久久鬼色| 欧美精品一区二区三区很污很色的 | 久久精品视频一区二区| 国产suv一区二区三区88区| 欧美国产视频在线| 91在线你懂得| 午夜视频一区二区| 日韩女优视频免费观看| 国产精品一区二区在线观看不卡 | 久久爱另类一区二区小说| 精品国产1区二区| 盗摄精品av一区二区三区| 国产精品久久久久久久久免费桃花 | 欧美日韩精品一区二区| 午夜精品福利久久久| 日韩一区二区免费在线观看| 国产一区二区在线看| 国产精品自拍av| 国产精品视频一区二区三区不卡| av一区二区三区在线| 一区二区三区四区在线| 91精品国产入口| 懂色中文一区二区在线播放| 亚洲激情av在线| 日韩欧美第一区| 99热精品国产| 日韩国产欧美在线视频|