2018-11-13 21:59:08 +08:00

335 lines
15 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

C51 COMPILER V6.14 COMPUT2 07/08/2009 05:20:57 PAGE 1
C51 COMPILER V6.14, COMPILATION OF MODULE COMPUT2
OBJECT MODULE PLACED IN comput2.OBJ
COMPILER INVOKED BY: D:\keil\c51\bin\C51.EXE comput2.C
stmt level source
1 /*----------------------------------------------------------------------------------------------------*/
2 /* */
3 /* PLC 梯型图(指令编码)转 51 C 程序示范程序 */
4 /* */
5 /* 为防止 PLC 指令编码和 C 语言关键字混淆,特规定,所有 PLC 指令前面加下划线"_"所有点BIT型 */
6 /* 前后各加下划线"_"所有点WORD型前加下划线"_",指令后面的数据用( )包含,数据中间用","分隔, */
7 /* 以示和 C 语言关键字区分及适应于 C 语言书写方法。 */
8 /* 所有十进制常数去掉前导"K",所有十六进制常数去掉前导"H"再加前导数字"0x",以便适应于 C 语言常 */
9 /* 数书写方法。这些下划线和加减前导数字将由 PLC 梯型图反编译程序自动加入。 */
10 /* */
11 /* 由于考虑到今后程序的移植,使之能适应于 AVRSTM8NECPICH8STM32......等任何单片机, */
12 /* 未使用 51单片机特有的 bit 操作指令,等程序修改稳定后再修改相关指令,优化程序代码,提升执行速度, */
13 /* 使之更适合 51单片机的使用。 */
14 /* */
15 /* 本程序支持混合编程,即在 PLC 指令编码中可任意插入 C 语言语句,符合 C 语言规范的汇编语言语句。 */
16 /* 可使用现有的调试软件仿真器设置断点,单步,多步,跟踪,连续,全速等手段调试 PLC 程序,修改和监控 */
17 /* PLC 点元件状态和内容,使之更适合广大单片机爱好者使用。 */
18 /* */
19 /* 目前支持下列点(继续完善中): */
20 /* _X0_---_X57__Y0_---_S57__M0_---_M255__S0_---_S255__T0---_T31_C0---_C31_D0---_D31; */
21 /* */
-
22 /* 目前支持常数(继续完善中): */
23 /* K 范围:-32768---32767; H 范围0---FFFFH; */
24 /* */
25 /* 目前支持特殊点数(继续完善中): */
26 /* _M8000__M8001__M8002__M8003__M8004__M8011__M8012__M8013__M8014_ */
27 /* _M8020__M8021__M8022_ */
28 /* */
29 /* 目前支持下列基本指令和扩展指令(继续完善中): */
30 /* _LD,_LDI,_AND,_ANI,_OR,_ORI,_INV,_OUT(_OUT_T,_OUT_C),_SET,_RST,_ANB,_ORB,_LDP,_LDF,_ANDP,_ANDF, */
31 /* _ORP,_ORF,_PLS,_PLF,_MPS,_MRD,_MPP,_NOP,END,_ADD,_SUB,_MUL,_DIV,_INC,_DEC,_WAND,_WOR,_WXOR, */
32 /* _NEG,_ALT,_MOV,_CML,_XCH,_BCD,_BIN,_LD>=,_LD<=,_LD>,_LD<,_LD<>,_LD=,_AND>=,_AND<=,_AND>,_AND<, */
33 /* _AND<>,_AND=,_OR>=,_OR<=,_OR>,_OR<,_OR<>,_OR=; */
34 /* */
35 /* 由于 C语言无法识别下列符号特用下列英文缩写表示 */
36 /* 大于等于(>=) _GE小于等于(<=) _LE大于(>) _GT小于(<) _LT不相等(<>) _NE相等(=) _EQ; */
37 /* 即指令集_LD>=,_LD<=,_LD>,_LD<,_LD<>,_LD=,_AND>=,_AND<=,_AND>,_AND<,_AND<>,_AND=, */
38 /* _OR>=,_OR<=,_OR>,_OR<,_OR<>,_OR=; */
39 /* 用下列指令书写方式替代(由 PLC 梯型图反编译程序自动生成)。 */
40 /* _LD_GE,_LD_LE,_LD_GT,_LD_LT,_LD_NE,_LD_EQ,_AND_GE,_AND_LE,_AND_GT,_AND_LT,_AND_NE,_AND_EQ, */
41 /* _OR_GE,_OR_LE,_OR_GT,_OR_LT,_OR_NE,_OR_EQ; */
42 /* */
43 /* */
44 /* CPU : 51系列单片机 */
45 /* 晶振 : 11.0592MHz */
46 /* 作者 : 许意义 */
47 /* 版本 : V1.01 */
48 /* 日期 : 2009.6.18 */
49 /* 版权 : ourDEV.cn */
50 /* */
51 /*----------------------------------------------------------------------------------------------------*/
52
53 #include "plc_start.h"
54
C51 COMPILER V6.14 COMPUT2 07/08/2009 05:20:57 PAGE 2
55 //-------------------------------------------------------------------------------------//
56 // PLC 执行程序 //
57 //-------------------------------------------------------------------------------------//
58
59 void main_PLC(void)
60 {
61 1 _LD (_M8002_)
62 1 _ORP (_X20_)
63 1 _RST (_D0)
64 1 _RST (_D1)
65 1 _RST (_D2)
66 1 _RST (_M0_)
67 1 _LD (_M8000_)
68 1 _AND_LE (_D0,9999)
69 1 _MPS
70 1 _ANDP (_X0_)
71 1 _MPS
72 1 _AND (_M0_)
73 1 _RST (_D0)
74 1 _RST (_M0_)
75 1 _MPP
76 1 _BCD (_D0,_D0)
77 1 _WAND (_D0,0x0fff,_D0)
78 1 _BIN (_D0,_D0)
79 1 _MUL (_D0,10,_D0)
80 1 _MRD
81 1 _ANDP (_X1_)
82 1 _MPS
83 1 _AND (_M0_)
84 1 _RST (_D0)
85 1 _RST (_M0_)
86 1 _MPP
87 1 _BCD (_D0,_D0)
88 1 _WAND (_D0,0x0fff,_D0)
89 1 _BIN (_D0,_D0)
90 1 _MUL (_D0,10,_D0)
91 1 _ADD (_D0,1,_D0)
92 1 _MRD
93 1 _ANDP (_X2_)
94 1 _MPS
95 1 _AND (_M0_)
96 1 _RST (_D0)
97 1 _RST (_M0_)
98 1 _MPP
99 1 _BCD (_D0,_D0)
100 1 _WAND (_D0,0x0fff,_D0)
101 1 _BIN (_D0,_D0)
102 1 _MUL (_D0,10,_D0)
103 1 _ADD (_D0,2,_D0)
104 1 _MRD
105 1 _ANDP (_X3_)
106 1 _MPS
107 1 _AND (_M0_)
108 1 _RST (_D0)
109 1 _RST (_M0_)
110 1 _MPP
111 1 _BCD (_D0,_D0)
112 1 _WAND (_D0,0x0fff,_D0)
113 1 _BIN (_D0,_D0)
114 1 _MUL (_D0,10,_D0)
115 1 _ADD (_D0,3,_D0)
116 1 _MRD
C51 COMPILER V6.14 COMPUT2 07/08/2009 05:20:57 PAGE 3
117 1 _ANDP (_X4_)
118 1 _MPS
119 1 _AND (_M0_)
120 1 _RST (_D0)
121 1 _RST (_M0_)
122 1 _MPP
123 1 _BCD (_D0,_D0)
124 1 _WAND (_D0,0x0fff,_D0)
125 1 _BIN (_D0,_D0)
126 1 _MUL (_D0,10,_D0)
127 1 _ADD (_D0,4,_D0)
128 1 _MPP
129 1 _ANDP (_X5_)
130 1 _MPS
131 1 _AND (_M0_)
132 1 _RST (_D0)
133 1 _RST (_M0_)
134 1 _MPP
135 1 _BCD (_D0,_D0)
136 1 _WAND (_D0,0x0fff,_D0)
137 1 _BIN (_D0,_D0)
138 1 _MUL (_D0,10,_D0)
139 1 _ADD (_D0,5,_D0)
140 1 _LD (_M8000_)
141 1 _AND_LE (_D0,9999)
142 1 _MPS
143 1 _ANDP (_X6_)
144 1 _MPS
145 1 _AND (_M0_)
146 1 _RST (_D0)
147 1 _RST (_M0_)
148 1 _MPP
149 1 _BCD (_D0,_D0)
150 1 _WAND (_D0,0x0fff,_D0)
151 1 _BIN (_D0,_D0)
152 1 _MUL (_D0,10,_D0)
153 1 _ADD (_D0,6,_D0)
154 1 _MRD
155 1 _ANDP (_X7_)
156 1 _MPS
157 1 _AND (_M0_)
158 1 _RST (_D0)
159 1 _RST (_M0_)
160 1 _MPP
161 1 _BCD (_D0,_D0)
162 1 _WAND (_D0,0x0fff,_D0)
163 1 _BIN (_D0,_D0)
164 1 _MUL (_D0,10,_D0)
165 1 _ADD (_D0,7,_D0)
166 1 _MRD
167 1 _ANDP (_X10_)
168 1 _MPS
169 1 _AND (_M0_)
170 1 _RST (_D0)
171 1 _RST (_M0_)
172 1 _MPP
173 1 _BCD (_D0,_D0)
174 1 _WAND (_D0,0x0fff,_D0)
175 1 _BIN (_D0,_D0)
176 1 _MUL (_D0,10,_D0)
177 1 _ADD (_D0,8,_D0)
178 1 _MPP
C51 COMPILER V6.14 COMPUT2 07/08/2009 05:20:57 PAGE 4
179 1 _ANDP (_X11_)
180 1 _MPS
181 1 _AND (_M0_)
182 1 _RST (_D0)
183 1 _RST (_M0_)
184 1 _MPP
185 1 _BCD (_D0,_D0)
186 1 _WAND (_D0,0x0fff,_D0)
187 1 _BIN (_D0,_D0)
188 1 _MUL (_D0,10,_D0)
189 1 _ADD (_D0,9,_D0)
190 1 _LDP (_X13_)
191 1 _MPS
192 1 _AND (_M0_)
193 1 _RST (_D0)
194 1 _RST (_M0_)
195 1 _MPP
196 1 _ANI (_M0_)
197 1 _BCD (_D0,_D0)
198 1 _WAND (_D0,0xfff0,_D0)
199 1 _BIN (_D0,_D0)
200 1 _DIV (_D0,10,_D0)
201 1 _LDP (_X25_)
202 1 _MOV (1,_D2)
203 1 _MOV (_D0,_D1)
204 1 _SET (_M0_)
205 1 _LDP (_X22_)
206 1 _MOV (2,_D2)
207 1 _MOV (_D0,_D1)
208 1 _SET (_M0_)
209 1 _LDP (_X24_)
210 1 _MOV (3,_D2)
211 1 _MOV (_D0,_D1)
212 1 _SET (_M0_)
213 1 _LDP (_X23_)
214 1 _MOV (4,_D2)
215 1 _MOV (_D0,_D1)
216 1 _SET (_M0_)
217 1 _LD (_M8000_)
218 1 _MPS
219 1 _AND_EQ (_D2,1)
220 1 _OUT (_S251_)
221 1 _MRD
222 1 _AND_EQ (_D2,2)
223 1 _OUT (_S252_)
224 1 _MRD
225 1 _AND_EQ (_D2,3)
226 1 _OUT (_S253_)
227 1 _MPP
228 1 _AND_EQ (_D2,4)
229 1 _OUT (_S254_)
230 1 _LDP (_X21_)
231 1 _MPS
232 1 _AND_EQ (_D2,1)
233 1 _ADD (_D1,_D0,_D0)
234 1 _MRD
235 1 _AND_EQ (_D2,2)
236 1 _MPS
237 1 _AND_GE (_D1,_D0)
238 1 _SUB (_D1,_D0,_D10)
239 1 _MRD
240 1 _AND_LT (_D1,_D0)
C51 COMPILER V6.14 COMPUT2 07/08/2009 05:20:57 PAGE 5
241 1 _MOV (10000,_D10)
242 1 _MPP
243 1 _MOV (_D10,_D0)
244 1 _MRD
245 1 _AND_EQ (_D2,3)
246 1 _DIV (10000,_D1,_D10)
247 1 _MPS
248 1 _AND_GE (_D10,_D0)
249 1 _MUL (_D1,_D0,_D9)
250 1 _MRD
251 1 _AND_LT (_D10,_D0)
252 1 _MOV (10000,_D9)
253 1 _MPP
254 1 _MOV (_D9,_D0)
255 1 _MRD
256 1 _AND_EQ (_D2,4)
257 1 _MPS
258 1 _AND_NE (_D0,0)
259 1 _DIV (_D1,_D0,_D9)
260 1 _MRD
261 1 _AND_EQ (_D0,0)
262 1 _MOV (10000,_D9)
263 1 _MPP
264 1 _MOV (_D9,_D0)
265 1 _MPP
266 1 _RST (_D2)
267 1 _SET (_M0_)
268 1 _LD (_M8000_)
269 1 _MPS
270 1 _LD_GT (_D0,9999)
271 1 _OR_LT (_D0,0)
272 1 _ANB
273 1 _OUT (_S255_)
274 1 _OUT (_M1_)
275 1 _MOV (0xe000,_D31)
276 1 _MRD
277 1 _AND_LE (_D0,9999)
278 1 _AND_GE (_D0,0)
279 1 _BCD (_D0,_D31)
280 1 _MRD
281 1 _ANI (_M1_)
282 1 _AND_LE (_D0,999)
283 1 _OUT (_S250_)
284 1 _MRD
285 1 _LDI (_M1_)
286 1 _AND_LE (_D0,99)
287 1 _OR (_M1_)
288 1 _ANB
289 1 _OUT (_S249_)
290 1 _MRD
291 1 _LDI (_M1_)
292 1 _AND_LE (_D0,9)
293 1 _OR (_M1_)
294 1 _ANB
295 1 _OUT (_S248_)
296 1 _MPP
297 1 _AND (_M1_)
298 1 _OUT (_S247_)
299 1 _END
300 1 }
C51 COMPILER V6.14 COMPUT2 07/08/2009 05:20:57 PAGE 6
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 5148 ----
CONSTANT SIZE = 32 ----
XDATA SIZE = 352 ----
PDATA SIZE = ---- ----
DATA SIZE = 59 30
IDATA SIZE = 32 ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)