问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

能不能解释一下这些程序是什么意思

发布网友 发布时间:2022-04-23 16:48

我来回答

2个回答

热心网友 时间:2023-07-31 01:21

首先看前几行:

ORG 0000H
LJMP START
ORG 000BH
LJMP T_0
ORG 0030H
START:

从它们的地址可以看出,这可能是 51 单片机的汇编,前几行的意思分别为:

程序空间从 0000 位置起

跳转到 START 位置

程序空间从 000B 位置起

跳转到 T_0 处

程序空间从 0030 位置起

START (标记)

具体来说,0000(指的是程序地址,十六进制) 即单片机复位之后首先要执行的代码位置,此处复位(或刚上电)之后立即跳转到 START 位置执行。000B 是定时器中断0触发之后要执行的代码位置,此处在定时器中断0触发之后跳转到 T_0 处执行,它们具体执行什么后面再看。

接下来:

MOV DPTR,#TABLE
MOV SP,#60H
MOV TH0,#0FFH
MOV TL0,#0F0H
SETB EA
SETB ET0
MOV TMOD,#05H
SETB TR0

这里执行了一些初始化操作,具体来说:

将 TABLE(常量数组,定义在最后)的地址放进 DPTR 里,以后寄存器间接寻址 DPTR 就意味着从 TABLE 中读取数据

将 60H(16进制的60,转换为十进制是 96,)放进 SP 里,SP 是堆栈指针,这句话的意思就是开辟一个堆栈空间

将 FFH 和 F0H 分别放进定时器寄存器 T0 的高位和低位,因此 T0 中现在就是 FFF0H,后面它会逐渐减少,减少到 0 触发定时器中断,进入 T_0 执行中断处理程序

开总中断

开定时器中断 0

将 T0 的定时器模式设置为 16 位计数器,具体来说,TMOD 此时值为 0000 0101,左边 0000 设置 T1,这里没有用到。右变 0101 设置的是 T0,从左到右: 0 是门控位,意思是暂时不开启定时器;1 是设置定时还是计数,此处设置为计数;01 是模式,这里设置为 16 位计数器模式

T0 开始计数

LOOP:
MOV A,TL0
SUBB A,#0F0H
MOV B,#100
DIV AB
MOVC A,@A+DPTR
MOV P2,#00001101B
MOV P1,A
LCALL DELAY4MS
MOV A,B
MOV B,#10
DIV AB
MOVC A,@A+DPTR
MOV P2,#00001011B
MOV P1,A
LCALL DELAY4MS
MOV A,B
MOVC A,@A+DPTR
MOV P2,#00000111B
MOV P1,A
LCALL DELAY4MS
LJMP LOOP

这是程序的主循环,理解之前先看 TABLE:

TABLE: DB 3FH,06H,5BH,4FH,66H
       DB 6DH,7DH,07H,7FH,6FH

这明显是数码管显示的数据,DB 代表存储单元,不用管,后面的十个数据代表着数码管显示 0~9 的代码。

因此主循环控制的是显示两个数码管,周期为 4ms显示一个字符,字符左边位是定时器的百位,右边为定时器值的十位,所以它可能是一个百位的计数器。

定时器在溢出之后会将 P3.0 取反,它可能连接着某个硬件(可能是 LED),代表着倒数结束。

详细看一下定时器中断处理部分:

T_0:
PUSH ACC
PUSH DPH
PUSH DPL
CPL P3.0
MOV TH0,#0FFH
MOV TL0,#0F0H
POP DPL
POP DPH
POP ACC
RETI

前面和后面进行一些压栈和出栈动作,保存触发中断时的状态,这是惯例。主要的就是一句 CPL P3.0,即将 P3.0 取反,常用于 LED 闪烁

之后给 T0 的寄存器重新装载初值

最后的 RETI 用于退出中断

DELAY4MS:
MOV R5,#10
DELAY_LOOP1:
MOV R4,#200
DELAY_LOOP2:DJNZ R4,DELAY_LOOP2
DJNZ R5,DELAY_LOOP1

这是一个延时函数,顾名思义,延时 4ms,里面就是一些简单的循环,不细说了。

热心网友 时间:2023-07-31 01:22

在单片机启动时,跳转到start处开始运行程序。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
怎么描写小猫呢? 什么梦预示正缘要出现 壳外电场分布为什么与壳内电荷的位置无关啊 为什么带电球壳的内部场强处处为零? 电荷内或外感应球壳,球壳内部场强是否处处为零 win11回收站图标隐藏方法-win11回收站怎么隐藏 Windows 11回收站不见了怎么办_如何在Windows 11中恢复回收站图标 Win11回收站图标显示方法 win11显示回收站的方法_win11怎么显示回收站 华为荣耀5X评价,缺点,参数 能不能解释一下 能不能解释一下这什么意思? 能不能解释一下。 能不能解释一下什么是复数 能不能解释一下这句话的意思 能不能解释一下什么叫做内能,势能 柚子皮泡澡有祛寒功效 怎么用柚子叶洗澡? 心理咨询这方面怎么样 C++ int型和long int型有什么区别 请问昆明心理咨询师考试报名在哪里? 心理咨询师在云南省昆明市可以兼职吗?还有文案也可以兼职吗? 什么是“经心理咨询师*正规培训达规定标准学时数”?昆明哪些机构的结业证书可获得全国考试的认证? 昆明苏格飞鱼心理咨询有限责任公司怎么样? 北京青少年心理咨询有谁知道?想找一个专门的机构。 心理咨询师需要看哪些书?昆明在哪里报名?大约多少钱?我医学本科毕业可以报名吗? 想找一个正规的,能学到真正知识的心理学或者心理咨询师培训班 昆明尚德心理咨询师培训办得怎么样?和师大的有什么区别? 昆明学慧网培训机构有几个 昆明云师大心理咨询师培训机构的地址 能不能解释一下这句话什么含义?谢谢 能不能解释一下呢 能不能给解释一下什么意思 老式缝纫机值多少钱? 能不能解释一下? 能不能解释一下这个? 双色球是不是改了规则?我要详细点的 谢谢 能不能解释一下数学与科学是什么意思?谢谢 脚踏老式缝纫机,踩起来十分吃力,是怎么回事? 能不能解释一下这个现象 双色球复试中奖规则是怎么算的? 能不能解释一下这个语法结构? c语言 能不能解释一下这几个选项错在哪里?谢谢 老式缝纫机怎么用? 双色球中奖规则及奖金是怎样的? 能不能给解释一下 七八十年代的老式缝纫机,现在能值多少钱? 能不能给解释一下这四组词? 双色球玩法中奖规则是什么? 谁知道老式缝纫机怎么穿线?