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 /* 由于考虑到今后程序的移植,使之能适应于 AVR,STM8,NEC,PIC,H8,STM32......等任何单片机, */ 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)