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

📄 plc51x.lst

📁 PLC源代码
💻 LST
📖 第 1 页 / 共 4 页
字号:
 154          volatile unsigned char   data  MPS_BIT;                         //  位元件 8级堆栈
 155          
 156          //-------------------------------------------------------------------------------------//
 157          //  位元件 D 内存分配                                                                  //
 158          //-------------------------------------------------------------------------------------//
 159           
 160          volatile TYPE_BIT_BYTE   data  rX[_X_BYTE] , rY[_Y_BYTE];       //  位元件 X,Y 存储位
 161          volatile TYPE_BIT_BYTE   data  rX1[_X_BYTE], rY1[_Y_BYTE];      //  位元件 X,Y 存储位上一步备份
 162          volatile TYPE_BIT_BYTE   data  rM8xxx[3];                       //  位元件 M8xxx 存储位 
 163          volatile TYPE_BIT_BYTE   data  rM8xxx1[3];                      //  位元件 M8xxx 存储位上一步备份 
 164          volatile TYPE_BIT_BYTE   data  rTF[_T_BYTE];                    //  T 得电失电标志位 
 165          volatile TYPE_BIT_BYTE   data  rCF[_C_BYTE];                    //  C 得电失电标志位 
 166          volatile TYPE_BIT_BYTE   data  rT[_T_BYTE] , rC[_C_BYTE];       //  位元件 T,C 输出位    
 167          volatile TYPE_BIT_BYTE   data  rT1[_T_BYTE], rC1[_C_BYTE];      //  位元件 T,C 输出位上一步备份
 168          volatile TYPE_BIT_BYTE  xdata  rM[_M_BYTE];                     //  位元件 M 存储位
 169          volatile TYPE_BIT_BYTE  xdata  rS[_S_BYTE];                     //  位元件 S 存储位
 170          volatile TYPE_BIT_BYTE  xdata  rM1[_M_BYTE];                    //  位元件 M 存储位上一步备份
 171          volatile TYPE_BIT_BYTE  xdata  rS1[_S_BYTE];                    //  位元件 S 存储位上一步备份
 172          volatile signed   int   xdata  _T[_T_num][2];                   //  位元件 T 内存分配    
 173          volatile signed   int   xdata  _C[_C_num];                      //  位元件 C 内存分配    
 174          volatile signed   int   xdata  _D[_D_num];                      //  位元件 D 内存分配 
 175          
 176          //-------------------------------------------------------------------------------------//
 177          //  基本指令,扩展指令 子函数                                                          //
 178          //-------------------------------------------------------------------------------------//
 179          volatile unsigned char  xdata addr0T,addr1T,addr2T,addr3T,addr4T;  // 数据位第一至第五位字地址/数据类型
C51 COMPILER V8.16   PLC51X                                                                10/10/2009 14:43:40 PAGE 4   

 180          
 181          volatile TYPE_BYTES_WORD xdata addr0x,addr1x,addr2x,addr3x,addr4x; // 数据位第一至第五位字地址/数据缓冲区
 182          
 183          volatile TYPE_BYTES_WORD  xdata order0;                                               // 命令位地址缓冲区
 184          
 185          volatile unsigned int ppp;
 186          volatile unsigned char code *CODE_p;
 187                                                                  
 188          #if  DEBUG
              
                unsigned char code CODE_START[PLCSTEP*4] = {0x0,0x24,0x8,0x0,0x0,0x88,0x0,0x28,0x0,0xd5,0x1,0x24,0x9,
                0x0,0x1,0x88,0x1,0x28,0x0,0xe5,0xca,0x1,0x2,0x84,0x2,0xc8,0x2,0x28,0x1,0xd5,0xcb,0x1,0x2,0x84,0x3,
                0xc8,0x3,0x28,0x1,0xe5,0x0f,0x0
                                          };    
              
              
              /*
                unsigned char code CODE_START[PLCSTEP*4] = {0x00,0x24,0x00,0xd5, // 模拟PLC运行代码
                             0x01,0x24,0x00,0xe5,0x02,0x24,0x01,0xd5,0x03,0x24,0x01,0xe5,0x04,0x24,0x02,0xd5,
                             0x05,0x24,0x02,0xe5,0x06,0x24,0x03,0xd5,0x07,0x24,0x03,0xe5,0x08,0x24,0x04,0xc5,
                             0x09,0x24,0xfd,0xff,0x05,0xc5,0x0a,0x24,0x06,0xc5,0x0b,0x24,0xfd,0xff,0x07,0xc5,
                             0x0f,0x00,0xff,0xff,0xff,0xff };   
              */
              
              /*
                unsigned char code CODE_START[PLCSTEP*2] = {
              0x0,0x2f,0x1,0x6,0xa,0x80,0x0,0x80,0x1,0x26,0x0,0xc5,0x0,0x25,0x2,0x6,0xa,0x80,0x0,0x80,0x2,0x26,
              0x1,0xc5,0x1,0x25,0x3,0x6,0xa,0x80,0x0,0x80,0x3,0x26,0x2,0xc5,0x2,0x25,0x4,0x6,0xa,0x80,0x0,0x80,
              0x4,0x26,0x3,0xc5,0x3,0x25,0x5,0x6,0xa,0x80,0x0,0x80,0x5,0x26,0x4,0xc5,0x4,0x25,0x6,0x6,0xa,0x80,
              0x0,0x80,0x6,0x26,0x5,0xc5,0x5,0x25,0x7,0x6,0xa,0x80,0x0,0x80,0x7,0x26,0x6,0xc5,0x6,0x25,0x8,0x6,
              0xa,0x80,0x0,0x80,0x8,0x26,0x7,0xc5,0x7,0x25,0x0,0x6,0xa,0x80,0x0,0x80,0x0,0x26,0xc,0x0,0x1,0x86,
              0xc,0x0,0x2,0x86,0xc,0x0,0x3,0x86,0xc,0x0,0x4,0x86,0xc,0x0,0x5,0x86,0xc,0x0,0x6,0x86,0xc,0x0,0x7,
              0x86,0xc,0x0,0x8,0x86,0xc,0x0,0x9,0x86,0xc,0x0,0x0,0x86,0x0f,0x0
               };     
              */
              
              #endif
 217          
 218          
 219          
 220          //-----------------------------------------------------------------------------------------//
 221          //    子函数名:  void inc_CODE_p(void)                                                    //
 222          //                                                                                         //
 223          //    注    释:  指向 PLC 运行程序的当前指针 CODE_p 值加 1                                //
 224          //                                                                                         //
 225          //    入口参数:  无                                                                       //
 226          //    出口参数:  无                                                                       //
 227          //-----------------------------------------------------------------------------------------//
 228          //void inc_CODE_p(void)
 229          //{ CODE_p++;
 230          //}
 231          
 232          //-------------------------------------------------------------------------------------//
 233          //  10ms延时子程序                                                                     //
 234          //-------------------------------------------------------------------------------------//
 235          
 236          void Time_10ms(void)   
 237          { volatile unsigned char i;  
 238   1        for(i=0; i<10; i++)
 239   1          { ; }
 240   1      }
 241          
C51 COMPILER V8.16   PLC51X                                                                10/10/2009 14:43:40 PAGE 5   

 242          //-------------------------------------------------------------------------------------//
 243          //  74HC166并入串出芯片输入键盘扫描程序                                                //
 244          //-------------------------------------------------------------------------------------//
 245          
 246          unsigned char Get_EX_BIT(void)   
 247          { unsigned char i;   
 248   1        unsigned char EX_data = 0;   
 249   1         
 250   1        HC166_SL = 0;       // HC166_Disable; 将并行口的数据锁存
 251   1        Time_10ms();
 252   1        HC166_CLK = 0;      // CLK : 0->1
 253   1        Time_10ms();
 254   1        HC166_CLK = 1; 
 255   1        Time_10ms();
 256   1        HC166_SL = 1;       // HC166_Enable; 转为串行
 257   1        Time_10ms();
 258   1        for(i=0; i<8; i++) 
 259   1          { EX_data <<= 1;   
 260   2            if (HC166_DATA == 1)    // DATA : QH
 261   2              { EX_data |= 0x01; }  
 262   2            HC166_CLK = 0;          // CLK : 0->1 
 263   2            Time_10ms(); 
 264   2            HC166_CLK = 1;
 265   2          }   
 266   1        return(EX_data);   
 267   1      }   
 268          
 269          //-------------------------------------------------------------------------------------//
 270          //  74HC595串入并出芯片输出(16bit数据)LED显示扫描程序                                //
 271          //-------------------------------------------------------------------------------------//
 272          
 273          void Out_EY_BIT(void) 
 274          { static unsigned char con;
 275   1        unsigned char i;
 276   1        unsigned int  Ia;
 277   1        if (++con >=5)  { con = 0; }
 278   1        switch(con)
 279   1          { case 0: Ia =( Value       & 0x000f);
 280   2                    Ia = TYPE_BCD[Ia];
 281   2                        Ia |= 0x0800;
 282   2                        if (Vc0 == 1)  { Ia |= 0xff; }
 283   2                    else  { if (Vb0 == 1)  { Ia &= 0xff7f; }
 284   3                          }
 285   2                        break;
 286   2            case 1: Ia =((Value >> 4) & 0x000f);
 287   2                    Ia = TYPE_BCD[Ia];
 288   2                        Ia |= 0x0400;
 289   2                        if (Vc1 == 1)  { Ia |= 0xff; }
 290   2                    else  { if (Vb1 == 1)  { Ia &= 0xff7f; }
 291   3                          }
 292   2                        break;
 293   2            case 2: Ia =((Value >> 8) & 0x000f);
 294   2                    Ia = TYPE_BCD[Ia];
 295   2                        Ia |= 0x0200;
 296   2                        if (Vc2 == 1)  { Ia |= 0xff; }
 297   2                    else  { if (Vb2 == 1)  { Ia &= 0xff7f; }
 298   3                          }
 299   2                        break;
 300   2            case 3: Ia =((Value >>12) & 0x000f);
 301   2                    Ia = TYPE_BCD[Ia];
 302   2                        Ia |= 0x0100;
 303   2                        if (Vc3 == 1)  { Ia |= 0xff; }
C51 COMPILER V8.16   PLC51X                                                                10/10/2009 14:43:40 PAGE 6   

 304   2                    else  { if (Vb3 == 1)  { Ia &= 0xff7f; }
 305   3                          }
 306   2                        break;
 307   2            default:
 308   2                    Ia = (~((Va4 << 4) | (Va3 << 3) | (Va2 << 2) | (Va1 << 1) | Va0) & 0x00ff) | 0x1000; 
 309   2                        break;
 310   2              }
 311   1       for (i = 16; i > 0; i--)
 312   1          { HC595_SCLK = 0;            //拉低74HC595时钟   
 313   2            Time_10ms();

⌨️ 快捷键说明

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