搜索
bottom↓
回复: 7

OpenLogic中几条常见指令的实现方法,供大家参考

[复制链接]

出0入0汤圆

发表于 2009-3-26 20:19:40 | 显示全部楼层 |阅读模式
梯形图程序:

(原文件名:test.jpg)
语句表代码:
LD   X1
OR   X2
AND   X3
OUT   Y1
对应的汇编代码:
LD X1
__asm (
"movw r5, 0x4\n"     
"movt r5, 0x2204\n"  //将X1地址放进寄存器R6中,注意:0x2204004是X1的位绑定地址
"ldrb r6, [r5,#0]\n" //将X1地址的值放进寄存器R5中
"lsl r4, r4,#1\n" //R4是运行堆栈 左移一位
"orr r4, r6\n"    //R4与R6相或,这样R4的最后一位就是X1中的值
: : :"r4", "r5", "r6" //告诉编译器  这几个地址代码修改
);
OR X2
__asm (
"movw r5, 0x8\n"
"movt r5, 0x2204\n"
"ldrb r6, [r5,#0]\n"//将X2的值读到R6中去
"orr r4, r6\n"//R4与R6相或 ,此时R4的最后一位是X1|X2
: : :"r4", "r5", "r6"
);

AND X3
__asm (
"movw r5, 0xc\n"
"movt r5, 0x2204\n"
"ldrb r6, [r5,#0]\n"//将X3的值读到R6中去
"tst r6, 0x1\n"//检测R6的最后一位,也就是X3的值
"it eq\n"
"biceq r4, r4,0x1\n"//如果X2==0 R4最后一位需要复位,否则不用动
: : :"r4", "r5", "r6"
);

OUT Y1
__asm (
"movw r5, 0x1004\n"
"movt r5, 0x2204\n"
"tst r4, 0x1\n"//检测位堆栈R4最后一位
"ite eq\n"
"moveq r6, 0x0\n"//如果R4最后一位 为0
"movne r6, 0x1\n"//如果R4最后一位 为1
"strb r6, [r5],#0\n"//将R6输出到 地址Y1中
: : :"r4", "r5", "r6"
);
运行监控画面:

(原文件名:monitor.jpg)

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2009-3-27 08:03:20 | 显示全部楼层
我写的51汇编一部分指令解释!
LD X
LD:        LCALL   LOAD         ;取数据类型地址存R7中
           LCALL   I_Q_X ;新采集的数据在C中
                   mov     a,SP_RAM
                   rlc     a
                   mov     SP_RAM,a         ;新采集的数据在20h.0中
           LJMP    MM
;===========================================
OR X
OR:       LCALL   LOAD         ;取数据类型地址存R7中
           mov     r7,a
           LCALL   I_Q_X
        anl     C,SP_RAM.0
        mov     SP_RAM.0,c
           LJMP    MM
;===========================================
ON:       LCALL   LOAD         ;取数据类型地址存R7中
           mov     r7,a
           LCALL   I_Q_X
        CPL     C
        anl     C,SP_RAM.0
        mov     SP_RAM.0,c
           LJMP    MM
;===========================================
AA:       LCALL   LOAD         ;取数据类型地址存R7中
           mov     r7,a
           LCALL   I_Q_X
        orl     C,SP_RAM.0
        mov     SP_RAM.0,c
           LJMP    MM
;===========================================
AN:        LCALL   LOAD         ;取数据类型地址存R7中
           mov     r7,a
           LCALL   I_Q_X
         CPL     C
        orl     C,SP_RAM.0
        mov     SP_RAM.0,c
           LJMP    MM

出0入0汤圆

发表于 2009-4-13 21:47:33 | 显示全部楼层
有没有用C写的解释程序啊?

出0入0汤圆

发表于 2010-5-28 07:08:06 | 显示全部楼层
这个软件怎样定义使用的IO对应单片机的引脚呢?找半天没有找到,谢

出0入0汤圆

 楼主| 发表于 2010-5-31 00:08:56 | 显示全部楼层
在下位机里面改的

出0入0汤圆

发表于 2010-6-9 09:36:10 | 显示全部楼层
概率100%的中奖机会
http://www.21ic.com/invad/invad.htm

出0入0汤圆

发表于 2010-9-13 19:34:46 | 显示全部楼层
给个例子行吗,多谢了

出0入0汤圆

发表于 2012-12-14 20:21:01 | 显示全部楼层
来学习的。。。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-27 20:07

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表