找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1294|回复: 3
打印 上一主题 下一主题
收起左侧

请大佬帮新手的我分析一下这个单片机程序是如何运行的?

[复制链接]
跳转到指定楼层
楼主
ID:351862 发表于 2019-1-20 16:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这个程序是怎么个运行过程啊,请会的大佬帮忙给分析一下,谢谢了;主要是延时的部分真的没看懂
ORG 0000H
LJMP START
ORG 001BH
LJMP YSZD
SETB IT1           
SETB ET1           
SETB EA
SETB TR1           
LCALL TIME500MS

TIME500MS: PUSH 03H
           MOV R3,#61D
K005:      SETB P1.5
           CLR P1.5
           CJNE R3,#00H,K005
           POP 03H
           RET

YSZD:   CJNE R3,#00H,ASD1  ;延时
        AJMP ASD2
ASD1:   DEC R3
ASD2:   RETI
END

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:439075 发表于 2019-1-22 02:30 | 只看该作者
首条指令LJMP START,可是标号START都不存在,无法分析过程。至于延时部分,有两个小延时程序,入口分别是TIME500MS:和YSZD:。TIME500MS是个比较清晰的子程序,过程中还反复向P1.5输出脉冲,延时靠的是运行指令消耗时间,但是看起来CJNE R3,#00H,K005之前缺乏 DEC R3操作,R3不变,是个死循环,即使有 DEC R3,延时时间也不到500mS。YSZD:看起来像中断服务程序,也存在问题,无论R3等于几,程序只运行一次就RETI了,不知是否能达到所需的目的。

评分

参与人数 1黑币 +70 收起 理由
admin + 70 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

板凳
ID:7485 发表于 2019-1-22 06:19 | 只看该作者
这个程序错误太多,根本不能运行。第五行到第十行永远运行不到。第二行无处跳转,定时器设置不对,中断没有重装初值……等等。
回复

使用道具 举报

地板
ID:168777 发表于 2019-1-22 10:16 | 只看该作者
这个程序从上面一条一条执行,先跳转到START,这是对中断相关的配置,再执行K005,就是对配置相应IO引脚,并输出低电平,延时函数就是:先比较R3寄存器和00H的大小,如果大,执行ASD1,使R3寄存器值减一。
当R3减到和00H相等时,执行ASD2.中断返回
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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