打印
[51单片机]

高手们,麻烦帮小弟看下keil翻译的一小段汇编是什么意思

[复制链接]
1165|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
coolhongjie|  楼主 | 2015-5-17 10:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
     7: void delay(uint del)
     8: {
     9:         while(--del);
C:0x0105    EF       MOV      A,R7
C:0x0106    1F       DEC      R7
C:0x0107    7001     JNZ      C:010A
C:0x0109    1E       DEC      R6
C:0x010A    14       DEC      A
C:0x010B    4E       ORL      A,R6
C:0x010C    70F7     JNZ      delay(C:0105)
    10: }
    11:  
C:0x010E    22       RET      
    12: void main(void)
    13: {
    14:         delay(258);
C:0x010F    7F02     MOV      R7,#0x02
C:0x0111    7E01     MOV      R6,#0x01
C:0x0113    120105   LCALL    delay(C:0105)

麻烦帮我看下delay中的汇编怎么工作的,还有为什么要ORL A,R6,感激不尽!!!

相关帖子

沙发
coolhongjie|  楼主 | 2015-5-17 10:20 | 只看该作者
哎,看来高手都很忙,没有时间理会我这些菜鸟呀

使用特权

评论回复
板凳
pang7| | 2015-5-17 10:39 | 只看该作者
如果r6与a 同时为零 延时结束

使用特权

评论回复
地板
coolhongjie|  楼主 | 2015-5-17 11:28 | 只看该作者
pang7 发表于 2015-5-17 10:39
如果r6与a 同时为零 延时结束

请问,这个延时时间应该怎么算?我知道各个指令的机器周期,但是不太理解原理,比如R7存放低八位,R6存放高八位,然后他是怎么进行减运算呢?麻烦你了:handshake

使用特权

评论回复
5
pang7| | 2015-5-17 11:49 | 只看该作者
你知道指令的机器周期 再×指令的个数 就是延时时间

使用特权

评论回复
6
coolhongjie|  楼主 | 2015-5-17 13:02 | 只看该作者
pang7 发表于 2015-5-17 11:49
你知道指令的机器周期 再×指令的个数 就是延时时间

我知道,但是还是有些迷糊,我把汇编整理一下,可以帮我讲讲如何算吗?
DELAY:        MOV R7,#0x02            ;1.09us
                MOV R6,#0x00            ;1.09us
LOOP1:        MOV A,R7                    ;1.09us
                DEC R7                  ;1.09us
                JNZ LOOP2                    ;2.18us
                DEC R6                    ;1.09us
LOOP2:        DEC A                    ;1.09us
                ORL A,R6                    ;2.18us
                JNZ LOOP1                    ;2.18us

使用特权

评论回复
7
xuyaqi| | 2015-5-17 16:45 | 只看该作者
编个程序用示波器测一下更接近真实。

使用特权

评论回复
8
ayb_ice| | 2015-5-18 07:56 | 只看该作者
while(--del);

就是这意思啊,del被分配给了R6R7,R6是高8位

使用特权

评论回复
9
mcu5i51| | 2015-5-18 08:56 | 只看该作者
KEIL 软件仿真,看用了多少周期不就好了;
再着也可以看一个运行路线,数一下就知道了呀

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

8

帖子

0

粉丝