📄 plc51x_fnc.lst
字号:
129 // //
130 // FNC 指令编程格式描述 //
131 // //
132 // 函数名称: FNC_xxx //
133 // 函数类型: void FNC_xxx(void) //
134 // //
135 // 功能描述: 执行 FNC 扩展命令 //
136 // //
137 // 入口参数: 无 //
138 // //
139 // 出口参数: 无 //
140 // //
141 // 全局变量: addr0 (addr0x.WORD ) // 数据位第一字地址/数据缓冲区 //
142 // addr0L (addr0x.BYTES.BYTEL ) // 数据位第一字地址/数据低位 //
143 // addr0H (addr0x.BYTES.BYTEH ) // 数据位第一字地址/数据高位 //
144 // addr1 (addr1x.WORD ) // 数据位第二字地址缓冲区 //
145 // addr1L (addr1x.BYTES.BYTEL ) // 数据位第二字地址低位 //
146 // addr1H (addr1x.BYTES.BYTEH ) // 数据位第二字地址高位 //
147 // addr2 (addr2x.WORD ) // 数据位第三字地址缓冲区 //
148 // addr2L (addr2x.BYTES.BYTEL ) // 数据位第三字地址低位 //
149 // addr2H (addr2x.BYTES.BYTEH ) // 数据位第三字地址高位 //
150 // addr3 (addr3x.WORD ) // 数据位第四字地址缓冲区 //
151 // addr3L (addr3x.BYTES.BYTEL ) // 数据位第四字地址低位 //
152 // addr3H (addr3x.BYTES.BYTEH ) // 数据位第四字地址高位 //
153 // addr4 (addr4x.WORD ) // 数据位第五字地址缓冲区 //
154 // addr4L (addr4x.BYTES.BYTEL ) // 数据位第五字地址低位 //
155 // addr4H (addr4x.BYTES.BYTEH ) // 数据位第五字地址高位 //
156 // //
157 // //
158 //-----------------------------------------------------------------------------------------//
159 // 调用模块: void RD_ADDR(int a, unsigned char c) //
160 // //
161 // 注 释: 从 PLC 指定的点地址读入数据 //
162 // //
163 // 入口参数: int a 点地址 //
164 // unsigned char c 地址格式 m=(c&0xe0)>>4, n=(c&0x1f); //
165 // //
166 // 出口参数: int 读入的数据 //
167 //-----------------------------------------------------------------------------------------//
168 // 调用模块: void WR_ADDR(int a, int b, unsigned char c) //
169 // //
170 // 注 释: 将数据写入 PLC 指定的点地址 //
171 // //
172 // 入口参数: int a 点地址 //
173 // int b 写入的数据 //
174 // unsigned char c 地址格式 m=(c&0xe0)>>4, n=(c&0x1f); //
175 // //
176 // 出口参数: 无 //
177 //-----------------------------------------------------------------------------------------//
178 // //
179 // 模块描述: //
C51 COMPILER V8.16 PLC51X_FNC 10/10/2009 14:43:38 PAGE 4
180 // //
181 // //
182 // 作 者: 许意义 //
183 // 日 期: 2009年9月26日 //
184 // 备 注: //
185 //-----------------------------------------------------------------------------------------//
186 // 修 改 人: //
187 // 日 期: //
188 // 备 注: //
189 //-----------------------------------------------------------------------------------------//
190
191 #include "SYSTEM.h"
192 #include "REG_MPC82G516.H"
193 #include "PLC51x_TYPE.H"
194 #include "PLC51x_SYS.H"
195 #include "PLC51x.H"
196 #include "PLC51x_FNC.H"
197
198 /******************************************************************************************************/
199
200 code (*key_list[16])();
201 code (*key_list_1[12][2])();
202 code (*key_list_2[14][2])();
203 code (*key_list_3[256])();
204 int RD_ADDR(unsigned int a, unsigned char c);
205
206 #define CSP_Pn_MAX 8
207 #define CALL_SP_MAX 2
208 volatile unsigned char CALL_SP_i;
209 volatile unsigned char code *CALL_SP[CALL_SP_MAX];
210 volatile unsigned char code *CSP_Pn[CSP_Pn_MAX+1];
211
212 volatile bit CODE_ERROR;
213 volatile unsigned int data PS_BIT; // P 指令16级暂存
214 volatile unsigned int data PS1_BIT; // P 指令16级暂存备份
215 volatile unsigned int data Pi; // P 指令16级暂存位置指针
216
217 /******************************************** 程序开始 **********************************************/
218
219 //-----------------------------------------------------------------------------------------//
220 // 数组名称: BYTE_BIT //
221 // 数组类型: unsigned char code BYTE_BIT[8] //
222 // //
223 // 功能描述: BYTE 字节型 BIT 位表 //
224 // //
225 // 入口参数: BIT 位编号 //
226 // //
227 // 出口参数: 返回 BYTE 字节中 BIT 屏蔽位 //
228 // //
229 // //
230 // 作 者: 许意义 //
231 // 日 期: 2009年10月2日 //
232 // 备 注: //
233 //-----------------------------------------------------------------------------------------//
234 // 修 改 人: //
235 // 日 期: //
236 // 备 注: //
237 //-----------------------------------------------------------------------------------------//
238
239 unsigned char code BYTE_BIT_s[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
240 unsigned char code BYTE_BIT_w[8]={0xff,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80};
241 unsigned char code BYTE_BIT_e[8]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};
C51 COMPILER V8.16 PLC51X_FNC 10/10/2009 14:43:38 PAGE 5
242
243 //-----------------------------------------------------------------------------------------//
244 // 数组名称: FNC_CMD_LNE //
245 // 数组类型: unsigned char code FNC_CMD_LNE[256] //
246 // //
247 // 功能描述: 返回单条 FNC指令后面跟随的命令/数据字长度 //
248 // //
249 // 入口参数: FNC指令代码编号 //
250 // //
251 // 出口参数: 返回本条 FNC指令后面跟随的命令/数据字长度 //
252 // //
253 // //
254 // 作 者: 许意义 //
255 // 日 期: 2009年9月26日 //
256 // 备 注: //
257 //-----------------------------------------------------------------------------------------//
258 // 修 改 人: //
259 // 日 期: //
260 // 备 注: //
261 //-----------------------------------------------------------------------------------------//
262
263 unsigned char code FNC_CMD_LNE[256]={
264 1,1,0,0,0,0,0,0,1,0,
265 3,4,2,5,2,3,3,2,2,2,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -