哪位大神给这段汇编程序来个注释 跪谢!!!
哪位大神给这段汇编程序来个注释跪谢!!!单片机c51控制流水灯的亮灭应该是八个灯的顺序亮灭ORG0000HLJMPMAINORG0030HMAIN:MOVP2,#0FDH...
哪位大神给这段汇编程序来个注释 跪谢!!!单片机c51控制流水灯的亮灭 应该是八个灯的顺序亮灭
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
MOV P2,#0FDH
ACALL DELAY
MOV P2,#0FBH
ACALL DELAY
MOV P2,#07FH
ACALL DELAY
MOV P2,#0EFH
ACALL DELAY
MOV P2,#0DFH
ACALL DELAY
MOV P2,#0BFH
ACALL DELAY
MOV P2,#7FH
ACALL DELAY
MOV P2,#0FEH
ACALL DELAY
AJMP MAIN
AJMP MAIN
DELAY:MOV R5,#255;延时
C1:MOV R6,#255
DJNZ R6,$
DJNZ R5,C1
RET
END 展开
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
MOV P2,#0FDH
ACALL DELAY
MOV P2,#0FBH
ACALL DELAY
MOV P2,#07FH
ACALL DELAY
MOV P2,#0EFH
ACALL DELAY
MOV P2,#0DFH
ACALL DELAY
MOV P2,#0BFH
ACALL DELAY
MOV P2,#7FH
ACALL DELAY
MOV P2,#0FEH
ACALL DELAY
AJMP MAIN
AJMP MAIN
DELAY:MOV R5,#255;延时
C1:MOV R6,#255
DJNZ R6,$
DJNZ R5,C1
RET
END 展开
1个回答
展开全部
;假设P2口8个管脚均接指示灯阴极,管脚输出0时点亮指示灯,输出1时熄灭指示灯
ORG 0000H ;从地址0000H开始存放程序:程序默认开始执行点
LJMP MAIN ;跳转到标号MAIN处执行
ORG 0030H ;从30H存放程序,以下程序从30H开始存放
MAIN: ;跳转点,也可以算是函数入口点
MOV P2,#0FDH ;P2寄存器存放数据FDH,P2端口的次低位b1为0其他高,管脚P2.1接的指示灯亮
ACALL DELAY ;调用延时函数DELAY,并等待返回
MOV P2,#0FBH ;P2器存放数据FBH,管脚P2.2灯亮,其他熄灭
ACALL DELAY
MOV P2,#07FH ;P2.7亮,怀疑写错了应该是#0F7H点亮P2.3
ACALL DELAY
MOV P2,#0EFH ; P2.4亮
ACALL DELAY
MOV P2,#0DFH ; P2.5亮
ACALL DELAY
MOV P2,#0BFH ; P2.6亮
ACALL DELAY
MOV P2,#7FH ;P2.7亮
ACALL DELAY
MOV P2,#0FEH ; P2.0亮
ACALL DELAY
AJMP MAIN ; 返回标号MAIN处继续执行
AJMP MAIN ; 没用
DELAY:MOV R5,#255;延时子程序DELAY入口,R5寄存器放255,即十六进制0FFH
C1:MOV R6,#255;R6放255
DJNZ R6,$ ;R6自减1,如果结果不等于0继续执行此句,$表示DJNZ R6,$的代码地址,内循环
DJNZ R5,C1 ;R5自减1,如果结果不等于0转C1处继续执行
RET ;DELAY函数返回
END ;程序结束
更多追问追答
追问
第二个AJMP MAIN是多余的可以省略的吗
追答
我觉得可以,除非有什么字节对齐之类的要求
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询