找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1563|回复: 7
收起左侧

请大佬帮新手的我分析一下单片机程序,主要是延时部分看不懂

[复制链接]
ID:351862 发表于 2019-1-20 17:10 | 显示全部楼层 |阅读模式
2黑币
本帖最后由 金子。 于 2019-1-21 13:58 编辑

这个程序是怎么个运行过程啊,请会的大佬帮忙给分析一下,谢谢了;主要是延时的部分真的没看懂
ORG 0000H
LJMP START
ORG 001BH
LJMP YSZD
ORG 0030H
START:
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


回复

使用道具 举报

ID:158375 发表于 2019-1-21 08:27 | 显示全部楼层
程序不全吧。
没有 START,怎么跳转?
汇编程序不好玩啊。
回复

使用道具 举报

ID:449525 发表于 2019-1-21 08:37 | 显示全部楼层
大哥,你玩的汇编啊。厉害
回复

使用道具 举报

ID:351862 发表于 2019-1-21 13:59 | 显示全部楼层
自己想明白了~~
回复

使用道具 举报

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

使用道具 举报

ID:388717 发表于 2019-1-21 17:49 | 显示全部楼层
汇编语言太高级了,只会用C来写
回复

使用道具 举报

ID:471453 发表于 2019-1-21 22:55 | 显示全部楼层
延时不是TIME500MS子程序部分吗,延时500ms啊
回复

使用道具 举报

ID:123289 发表于 2019-1-22 15:14 | 显示全部楼层
1、硬延时是利用CPU的运行时间耗时间,所有它当中写什么语句就不重要了,你可以不去理会它,就要理解它在耗时兜圈子就可以了。
2、这里要注意,03H和R3是同一个地方(上电初期),R3是不可以直接 PUSH或POP的。
因为R3是四个地方之一:03H,0BH,13H,1BH。上电时R3=03H。(参见PSW寄存器.43)
PUSH R3 时它不知道 将哪个PUSH入堆栈,所以此条指令不存在!
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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