📄 plc51x.lst
字号:
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 + -