失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 三菱plc指令dediv_三菱 PLC梯型图(指令编码)反汇编程序--开源 PLC 编程重点参考资料...

三菱plc指令dediv_三菱 PLC梯型图(指令编码)反汇编程序--开源 PLC 编程重点参考资料...

时间:2020-08-31 01:14:56

相关推荐

三菱plc指令dediv_三菱 PLC梯型图(指令编码)反汇编程序--开源 PLC 编程重点参考资料...

本三菱 PLC梯型图(指令编码)反汇编程序是 三菱 PLC梯型图 转 HEX 文件的重要组成部分,由于考虑到今后程序移植的方便,未使用控件,仅用最基本的 C 语言语句编写。

本程序的 三菱 PLC梯型图 测试程序 PLC2N.PMW 由 ourDEV 网友 easygoing 编写,再次表示感谢其对开源 PLC 的支持, 在本例中转换成同名的 PLC2N.C 程序。再经 Keil C 编译成 HEX 文件执行。

本“三菱 PLC梯型图(指令编码)反汇编程序”将和“PLC梯型图(指令编码)转 51 C语言”组合,由网友 xingliu 编写操作界面软件,使之更适合广大片机爱好者使用。

由于作者水平有限,未正规学过 C 语言,失误和错误难免,请广大网友指正,拍砖。

/*----------------------------------------------------------------------------------------------------*/

/* */

/*三菱 PLC梯型图(指令编码)反汇编程序 转 C 程序示范程序*/

/* */

/* 为防止 PLC 指令编码和 C 语言关键字混淆,特规定,所有 PLC 指令前面加下划线"_",所有点(BIT型)*/

/*前后各加下划线"_",所有点(WORD型)前加下划线"_",指令后面的数据用( )包含,数据中间用","分隔,*/

/*以示和 C 语言关键字区分及适应于 C 语言书写方法。*/

/* 所有十进制常数去掉前导"K",所有十进制常数去掉前导"H"再加前导数字"0x",以便适应于 C 语言常数 */

/*书写方法。这些下划线和加减前导数字将由 PLC 梯型图反编译程序自动加入。 */

/* */

/* 本程序支持混合编程,即在 PLC 指令编码中可任意插入 C 语言语句,符合 C 语言规范的汇编语言语句。*/

/*可使用现有的调试软件仿真器设置断点,单步,多步,跟踪,连续,全速等手段调试 PLC 程序,修改和监控 */

/*PLC 点元件状态和内容,使之更适合广大片机爱好者使用。 */

/* */

/* 目前支持下列点(继续完善中): */

/*_X0_---_X57_,_Y0_---_S57_,_M0_---_M255_,_S0_---_S255_,_T0---_T31,_C0---_C31,_D0---_D31; */

/* */

/* 目前支持常数(继续完善中): */

/*K 范围:-32768---32767;H 范围:0---FFFFH; */

/* */

/* 目前支持特殊点数(继续完善中):*/

/*_M8000_,_M8001_,_M8002_,_M8003_,_M8004_,_M8011_,_M8012_,_M8013_,_M8014_,*/

/*_M8020_,_M8021_,_M8022_,_M8121_,_M8122_,_M8123_,_M8124_; */

/* */

/* 目前支持下列基本指令和扩展指令(继续完善中):*/

/*_LD,_LDI,_AND,_ANI,_OR,_ORI,_INV,_OUT(_OUT_T,_OUT_C),_SET,_RST(_RST_T,_RST_C),*/

/*_ANB,_ORB,_LDP,_LDF,_ANDP,_ANDF,_ORP,_ORF,_PLS,_PLF,_MPS,_MRD,_MPP,_NOP,END, */

/*_ADD,_SUB,_MUL,_DIV,_INC,_DEC,_WAND,_WOR,_WXOR,_NEG,_ALT,_MOV,_CML,_XCH,_BCD,_BIN,*/

/*_LD>=,_LD<=,_LD>,_LD,_LD=,_AND>=,_AND<=,_AND>,_AND,_AND=, */

/*_OR>=,_OR<=,_OR>,_OR,_OR=; */

/* */

/* 由于 C语言无法识别下列符号,特用下列英文缩写表示: */

/*大于等于(>=)_GE,小于等于(<=)_LE,大于(>)_GT,小于()_NE,相等(=)_EQ;*/

/*即指令集:_LD>=,_LD<=,_LD>,_LD,_LD=,_AND>=,_AND<=,_AND>,_AND,_AND=,*/

/* _OR>=,_OR<=,_OR>,_OR,_OR=; */

/* 用下列指令书写方式替代(由 PLC 梯型图反编译程序自动生成)。 */

/*_LD_GE,_LD_LE,_LD_GT,_LD_LT,_LD_NE,_LD_EQ,_AND_GE,_AND_LE,_AND_GT,_AND_LT,_AND_NE,_AND_EQ, */

/*_OR_GE,_OR_LE,_OR_GT,_OR_LT,_OR_NE,_OR_EQ; */

/* */

/* */

/* CPU: 51系列单片机*/

/* 晶振 : 11.0592MHz*/

/* 作者 : 许意义 */

/* 版本 : V1.0 */

/* 日期 : .5.17 */

/* 版权 : */

/* */

/*----------------------------------------------------------------------------------------------------*/

#include "plc_start.h"

//-------------------------------------------------------------------------------------//

//PLC 执行程序 //

//-------------------------------------------------------------------------------------//

void main_PLC(void)

{

_LDI (_X2_)

_OUT_ (_T100,124)

_EI

_LD (_M1_)

_MC (N1,_M0_)

_LDP (_M8000_)

_ORF (_M1000_)

_LDP (_M3000_)

_ORF (_M2000_)

_ANB

_LDP (_S100_)

_ORF (_M2999_)

_ANB

_OUT_ (_T100,30)

_RST (_D1)

_RST (_M2999_)

_SET (_S100_)

_OUT (_M8005_)

_LDP (_M1_)

_ADDP (_C20,_T35,_D11)

_LD (_X1_)

_OUT_ (_C210,123456789)

_LD (_X2_)

_TCMP (_C10,_K2M0,_K1M0,_D0,_M0_)

_P5:

_LD (_X10_)

_CJ (_P5)

_LD (_X13_)

_OUT (_Y13_)

_MCR (N1)

_LD (_X0_)

_CALL (_P2)

_DI

_FOR (4)

_LD (_M8000_)

_DADDP (_K8M1000,10,_D11)

_NEXT

_LD (_M8000_)

_ADD (-200,_D12,_D14)

_MPS

_AND (_M0_)

_SUB (_D1000,_D999,_D7000)

_MRD

_AND (_M1_)

_MUL (2,_D13,_D14)

_MRD

_AND (_M2_)

_DIV (_D14,_D12,_D15)

_MPP

_INC (_D0)

_DEC (_D0)

_MPS

_AND (_M3_)

_WAND (_D10,_D12,_D14)

_MRD

_AND (_M4_)

_WOR (_D10,_D12,_D14)

_MRD

_AND (_M5_)

_WXOR (_D10,_D12,_D14)

_MPP

_NEG (_D10)

_LD (_X16_)

_CMP (100,_D0,_M0_)

_ZCP (100,120,_C10,_M3_)

_MOV (100,_D18)

_SMOV (_D1,4,2,_D2,3)

_CMP (_D0,_K1Y17)

_BMOV (_D5,_D10,2)

_RMOV (0,_D0,2)

_XCH (_D18,_D19)

_BCD (_D12,_K2Y20)

_BIN (_K2X0,_D13)

_LD (_X17_)

_ROR (_D0,4)

_ROL (_D0,4)

_RCR (_D0,4)

_RCL (_D0,4)

_SFTR (_X0_,_M0_,16,1)

_SFTL (_X0_,_M0_,16,4)

_WSFR (_D0,_D10,16,4)

_WSFL (_D0,_D10,16,4)

_SFWR (_D0,_D1,10)

_SFRD (_D0,_D20,10)

_LD (_X20_)

_ZRST (_M500_,_M599_)

_DECO (_X0_,_M10_,2)

_DNCO (_M10_,_D10,3)

_SUM (_D0,_D2)

_BON (_D10,_M0_,15)

_MEAN (_D0,_D10,3)

_ANS (_T0,10,_S900_)

_ANR

_SOR (_D10,_D12)

_FLT (_D10,_D12)

_LD (_X21_)

_REF (_X100_,8)

_REFF (1)

_MTR (_X20_,_Y40_,_M0_,8)

_DHSCS (100,_C255,_Y10_)

_DHSCR (200,_C255,_Y10_)

_DHSZ (1000,2000,_C251,_Y0_)

_SPD (_X0_,100,_D0)

_DPLSY (1000,_D0,_Y0_)

_PWM (_D10,50,_Y0_)

_PLSR (500,_D0,3600,_Y0_)

_LD (_X23_)

_SER (_D100,_D0,_D10,10)

_ABSD (_D300,_C0,_M0_,4)

_INCD (_D300,_C0,_M0_,4)

_TTMR (_D300,0)

_STMR (_T10,100,_M0_)

_ALT (_M0_)

_RAMP (_D1,_D2,_D3,1000)

_ROTC (_D200,10,2,_M0_)

_SORT (_D100,5,4,_D200,_D0)

_LD (_X24_)

_TKY (_X0_,_D0,_M0_)

_HKY (_X0_,_Y0_,_D0,_M0_)

_DSW (_X0_,_Y10_,_D0,1)

_SEGD (_D0,_K2Y10)

_SEGL (_D0,_Y0_,0)

_ARWS (_X10_,_D0,_Y0_,0)

_ASC ("ABCD ",_D300)

_PR (_D300,_Y0_)

_FROM (1,29,_K4M0,1)

_TO (1,29,_K4M0,1)

_LD (_X25_)

_RS (_D200,_D0,_D500,_D1)

_PRUN (_K4X0,_K4M0)

_ASCI (_D100,_D200,4)

_HEX (_D20,_D10,4)

_CCD (_D100,_D0,10)

_VRRD (0,_D0)

_VRSC (1,_D1)

_PID (_D0,_D1,_D100,_D150)

_LD (_M8000_)

_DECMP (_D10,_D20,_M0_)

_DEZCP (_D20,_D30,_D0,_M3_)

_DEBCD (_D50,_D20)

_DEBIN (_D20,_D50)

_DEADD (_D10,_D20,_D50)

_DESUB (_D10,_D20,_D50)

_DEMUL (_D10,_D20,_D50)

_DEDIV (_D10,_D20,_D50)

_DESOR (_D10,_D20)

_INT (_D10,_D20)

_DSIN (_D50,_D60)

_DCOS (_D50,_D60)

_DTAN (_D50,_D60)

_SWAP (_D10)

_LD (_X26_)

_TCMP (10,30,50,_D0,_M0_)

_TZCP (_D20,_D30,_D0,_M3_)

_TADD (_D10,_D20,_D30)

_TSUB (_D10,_D20,_D30)

_TRD (_D0)

_TWR (_D10)

_LD (_X27_)

_GRY (1234,_K3Y10)

_GBIN (_K3X0,_D10)

_LD_EQ (200,_C10)

_OUT (_M50_)

_LD_GT (_D200,-30)

_OUT (_M51_)

_LD_GE (_D200,100)

_OUT (_M52_)

_LD_LT (_D200,10)

_OUT (_M53_)

_LD_LE (_D200,10)

_OUT (_M54_)

_LD_NE (_D330,_D440)

_OUT (_M55_)

_LD (_M8000_)

_MPS

_AND_EQ (200,_C10)

_OUT (_M10_)

_MRD

_AND_GT (100,_D10)

_OUT (_M11_)

_MRD

_AND_GE (100,_D10)

_OUT (_M12_)

_MRD

_AND_LT (200,_D10)

_OUT (_M13_)

_MRD

_AND_LE (_D10,_D20)

_OUT (_M14_)

_MPP

_AND_NE (_D20,_D30)

_OUT (_M15_)

_NOP

_LD (_M8000_)

_OR_EQ (200,_C10)

_OR_GT (200,_D10)

_OR_GE (200,_D20)

_OR_LT (300,_D30)

_OR_LE (400,_D40)

_OR_NE (500,_D50)

_OUT (_Y10_)

_FEND

_P2:

_LD (_M8_)

_OUT (_M9_)

_SRET

_I101:

_LD (_M8000_)

_INC (_D0)

_DEC (_D1)

_IRET

_END

}

如果觉得《三菱plc指令dediv_三菱 PLC梯型图(指令编码)反汇编程序--开源 PLC 编程重点参考资料...》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。