⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pcckmodbus.lst

📁 lpc932芯片 用于modbus通讯的范例
💻 LST
📖 第 1 页 / 共 5 页
字号:
  39          //bit yunbiao,tingbiao,up000,down000,lef000,trig000;
  40          unsigned char xdata T2buf[30];
  41          unsigned char xdata R2buf[60];
  42          unsigned char xdata RXbuf[30];
  43          unsigned char xdata TXbuf[60];
  44          unsigned char xdata debuf[2];
  45          //unsigned char xdata dembug[3];
  46          unsigned char xdata modbug[3];
  47          void int0(void) interrupt 0 
  48          {
  49   1      debuf[0]=0;
  50   1      }
  51          void int2(void) interrupt 2 
  52          {
  53   1      debuf[0]=2;
  54   1      }
  55          void int3(void) interrupt 3 
  56          {
  57   1      debuf[0]=3;
  58   1      }
  59          void int5(void) interrupt 5 
  60          {
  61   1      debuf[0]=5;
  62   1      }
  63          void int6(void) interrupt 6 
  64          {
  65   1      debuf[0]=5;
  66   1      }
  67          void int10(void) interrupt 10
  68          {
  69   1      debuf[0]=10;
  70   1      }
  71          void int7(void) interrupt 7 
  72          {
  73   1      debuf[0]=7;
  74   1      }
  75          void int8(void) interrupt 8 
  76          {
C51 COMPILER V7.01  PCCKMODBUS                                                             07/23/2004 15:55:57 PAGE 6   

  77   1      debuf[0]=8;
  78   1      }
  79          void int9(void) interrupt 9 
  80          {
  81   1      debuf[0]=9;
  82   1      }
  83          /***************************/
  84          /*       time子程序    */
  85          /***************************/
  86          void timer0(void) interrupt 1 using 2
  87          {
  88   1      static unsigned char miaohao;
  89   1       TH0=0xf1;                //0x83d3
  90   1       TL0=0x9c;
  91   1       ++miaohao;
  92   1       ++click;
  93   1       if (miaohao > 8)
  94   1        {
  95   2           miaohao=0;
  96   2               ++click3;
  97   2               if (wdog==1)
  98   2                {
  99   3                 wdog=0;
 100   3                 WFEED1=0xa5;
 101   3                 WFEED2=0x5a;
 102   3                }
 103   2        }
 104   1       if (click > 3) 
 105   1       {
 106   2        rsbufr=0;
 107   2        }
 108   1       }
 109          /***************************/
 110          /*       串口通讯子程序    */
 111          /***************************/
 112          void comm1(void) interrupt 4 using 1
 113          {
 114   1       static bit modf10=0; 
 115   1       static unsigned char modf10len=50;     
 116   1      if (tsbbb==1)
 117   1        {
 118   2         if (TI==1)
 119   2          {
 120   3           TI=0;
 121   3              if (tsbufr<tsleng)
 122   3                {
 123   4                      ACC=TXbuf[tsbufr];
 124   4                      TB8=P;
 125   4                  SBUF=ACC;
 126   4      //              SBUF=click;
 127   4      //              click=0;
 128   4                      ++tsbufr;
 129   4                }
 130   3              else
 131   3                {
 132   4                      sipm=0;
 133   4                      tsbbb=0;
 134   4                      rsbufr=0;
 135   4                      RI=0;
 136   4                      ACC=SBUF;
 137   4                }
 138   3         } 
C51 COMPILER V7.01  PCCKMODBUS                                                             07/23/2004 15:55:57 PAGE 7   

 139   2       }
 140   1      else
 141   1       {
 142   2        if (RI==1)
 143   2        {
 144   3         RI=0;
 145   3      //   click=0;
 146   3         sipm=0;
 147   3         if (modbjda==0)
 148   3         {
 149   4                if (rsbufr==0)
 150   4                 {
 151   5                        RXbuf[0]=SBUF;
 152   5                        if (RXbuf[0]==modadder)
 153   5                      {
 154   6                               rsbufr=1;
 155   6                              }
 156   5                 }
 157   4                else if (rsbufr==1)
 158   4                 {
 159   5                        RXbuf[1]=SBUF;
 160   5                        if ((RXbuf[1]==1) || (RXbuf[1]==2) || (RXbuf[1]==4) || (RXbuf[1]==5))
 161   5                              {
 162   6                               modf10=0;
 163   6                               rsbufr=2;
 164   6                               }
 165   5                        else
 166   5                              {
 167   6                                rsbufr=0; //modf10=1;
 168   6                               }
 169   5                 }
 170   4                 else if (modf10==0)
 171   4                  {
 172   5                              RXbuf[rsbufr]=SBUF;
 173   5                      if (rsbufr>=7) 
 174   5                          {
 175   6                               modbjda=1;
 176   6                               rlend=rsbufr;
 177   6                          }
 178   5                         else
 179   5                          {
 180   6                               ++rsbufr;
 181   6                              }
 182   5                       }
 183   4                       else if (rsbufr==6)
 184   4                          {
 185   5                               RXbuf[rsbufr]=SBUF;
 186   5                               modf10len=RXbuf[rsbufr]+8;
 187   5                               ++rsbufr;
 188   5                               if (modf10len>28)modf10len=28;
 189   5                          }
 190   4                         else
 191   4                          {
 192   5                                RXbuf[rsbufr]=SBUF;
 193   5                                if (rsbufr>=modf10len)
 194   5                              {
 195   6                                  modbjda=1;
 196   6                                      rlend=rsbufr;
 197   6                                      modf10=0;
 198   6                                      }
 199   5                                 else
 200   5                                  {
C51 COMPILER V7.01  PCCKMODBUS                                                             07/23/2004 15:55:57 PAGE 8   

 201   6                                       ++rsbufr;
 202   6                                      }
 203   5                               }
 204   4                }
 205   3         else
 206   3          {
 207   4               ACC=SBUF;
 208   4              }
 209   3        click=0;   //debug+++++++++++++||||||||||||||||||||||||||||||  
 210   3        }
 211   2       }
 212   1      }
 213          //===================================================
 214          //====================================================================================
 215          code unsigned char auchCRCHi[256] = {
 216                                                  0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
 217                                                  0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
 218                                                  0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,
 219                                                  0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,
 220                                                  0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,
 221                                                  0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,
 222                                                  0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,
 223                                                  0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
 224                                                  0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
 225                                                  0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,
 226                                                  0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,
 227                                                  0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,
 228                                                  0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
 229                                                  0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,
 230                                                  0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,
 231                                                  0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,
 232                                                  0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
 233                                                  0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
 234                                                  0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,
 235                                                  0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
 236                                                  0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,
 237                                                  0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,
 238                                                  0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,
 239                                                  0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
 240                                                  0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
 241                                                  0x80, 0x41, 0x00, 0xC1, 0x81, 0x40
 242          };
 243          code unsigned char auchCRCLo[256] = {
 244                                                                          0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06,
 245                                                                          0x07, 0xC7, 0x05, 0xC5, 0xC4, 0x04, 0xCC, 0x0C, 0x0D, 0xCD,
 246                                                                          0x0F, 0xCF, 0xCE, 0x0E, 0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x09,
 247                                                                          0x08, 0xC8, 0xD8, 0x18, 0x19, 0xD9, 0x1B, 0xDB, 0xDA, 0x1A,
 248                                                                          0x1E, 0xDE, 0xDF, 0x1F, 0xDD, 0x1D, 0x1C, 0xDC, 0x14, 0xD4,
 249                                                                          0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2, 0x12, 0x13, 0xD3,
 250                                                                          0x11, 0xD1, 0xD0, 0x10, 0xF0, 0x30, 0x31, 0xF1, 0x33, 0xF3,
 251                                                                          0xF2, 0x32, 0x36, 0xF6, 0xF7, 0x37, 0xF5, 0x35, 0x34, 0xF4,
 252                                                                          0x3C, 0xFC, 0xFD, 0x3D, 0xFF, 0x3F, 0x3E, 0xFE, 0xFA, 0x3A,
 253                                                                          0x3B, 0xFB, 0x39, 0xF9, 0xF8, 0x38, 0x28, 0xE8, 0xE9, 0x29,
 254                                                                          0xEB, 0x2B, 0x2A, 0xEA, 0xEE, 0x2E, 0x2F, 0xEF, 0x2D, 0xED,
 255                                                                          0xEC, 0x2C, 0xE4, 0x24, 0x25, 0xE5, 0x27, 0xE7, 0xE6, 0x26,
 256                                                                          0x22, 0xE2, 0xE3, 0x23, 0xE1, 0x21, 0x20, 0xE0, 0xA0, 0x60,
 257                                                                          0x61, 0xA1, 0x63, 0xA3, 0xA2, 0x62, 0x66, 0xA6, 0xA7, 0x67,
 258                                                                          0xA5, 0x65, 0x64, 0xA4, 0x6C, 0xAC, 0xAD, 0x6D, 0xAF, 0x6F,
 259                                                                          0x6E, 0xAE, 0xAA, 0x6A, 0x6B, 0xAB, 0x69, 0xA9, 0xA8, 0x68,
 260                                                                          0x78, 0xB8, 0xB9, 0x79, 0xBB, 0x7B, 0x7A, 0xBA, 0xBE, 0x7E,
 261                                                                          0x7F, 0xBF, 0x7D, 0xBD, 0xBC, 0x7C, 0xB4, 0x74, 0x75, 0xB5,
 262                                                                          0x77, 0xB7, 0xB6, 0x76, 0x72, 0xB2, 0xB3, 0x73, 0xB1, 0x71,
C51 COMPILER V7.01  PCCKMODBUS                                                             07/23/2004 15:55:57 PAGE 9   

 263                                                                          0x70, 0xB0, 0x50, 0x90, 0x91, 0x51, 0x93, 0x53, 0x52, 0x92,
 264                                                                          0x96, 0x56, 0x57, 0x97, 0x55, 0x95, 0x94, 0x54, 0x9C, 0x5C,
 265                                                                          0x5D, 0x9D, 0x5F, 0x9F, 0x9E, 0x5E, 0x5A, 0x9A, 0x9B, 0x5B,
 266                                                                          0x99, 0x59, 0x58, 0x98, 0x88, 0x48, 0x49, 0x89, 0x4B, 0x8B,
 267                                                                          0x8A, 0x4A, 0x4E, 0x8E, 0x8F, 0x4F, 0x8D, 0x4D, 0x4C, 0x8C,
 268                                                                          0x44, 0x84, 0x85, 0x45, 0x87, 0x47, 0x46, 0x86, 0x82, 0x42,
 269                                                                          0x43, 0x83, 0x41, 0x81, 0x80, 0x40
 270          };
 271          //=======================================================================
 272          unsigned int CRC16(unsigned char xdata *puchMsg,unsigned char usDataLen)
 273          //unsigned char *puchMsg ;/* 要进行CRC校验的消息 */
 274          //unsigned short usDataLen ; /* 消息中字节数 */
 275          {
 276   1      unsigned char uchCRCHi = 0xFF ; /* 高CRC字节初始化 */
 277   1      unsigned char uchCRCLo = 0xFF ; /* 低CRC 字节初始化 */
 278   1      unsigned char uIndex ; /* CRC循环中的索引 */  
 279   1      while (usDataLen--) /* 传输消息缓冲区 */
 280   1              {
 281   2               uIndex = uchCRCHi ^ *puchMsg; /* 计算CRC */
 282   2               puchMsg++;
 283   2               uchCRCHi = uchCRCLo ^ auchCRCHi[uIndex];
 284   2               uchCRCLo = auchCRCLo[uIndex];
 285   2              }   
 286   1      return (uchCRCHi * 256 | uchCRCLo);
 287   1      }
 288          //=============================================================================
 289          /////////=====================================================
 290          void modbu001()
 291          {
 292   1       bit Rx12,tfbok;
 293   1       unsigned int i;
 294   1       unsigned char lm,lk,j,k;
 295   1       unsigned long bbiitt;
 296   1       if (tsbbb==0)
 297   1       {
 298   2         Rx12=0;
 299   2         tfbok=0;
 300   2         wdog=1;
 301   2         if (modbjda==1)
 302   2                {
 303   3              led1^=1;
 304   3                  puc=&RXbuf[0];
 305   3                      i=CRC16(puc,rlend-1);
 306   3                      lm=i/0x100;
 307   3                      lk=i%0x100;
 308   3             if ((RXbuf[rlend-1]==lm) && (RXbuf[rlend]==lk))
 309   3              {
 310   4                       Rx12=1;
 311   4                      }
 312   3                 else

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -