各位高人帮我解释一下这个程序

ORG0000HLJMPSTARTORG0040HSTRAT:MOVSP,#60HMOVA,#01HROTATE:MOVP1,ARLALCALLDELAYSJMPROTA... ORG 0000H
LJMP START
ORG 0040H
STRAT:
MOV SP,#60H
MOV A,#01H
ROTATE:
MOV P1,A
RL A
LCALL DELAY
SJMP ROTART
DELAY:
MOV R0,#0AH
DELAY1:
MOV R1,#00H
DELAY2:
MOV R2,#0B2H
DJNZ R2,$
DJNZ R1,DELAY2
DJNZ R0,DELAY1
RET
END
要求:1.详细的注释
2. 改写(1).将延时改为5S
(2).增加3种不同的点亮方式
展开
 我来答
百度网友6436d7620
2007-05-09 · TA获得超过593个赞
知道答主
回答量:80
采纳率:0%
帮助的人:111万
展开全部
1 ORG 0000H //程序段存放位置为0000H
LJMP START //长跳转到START处执行
ORG 0040H //指明内存位置为0040H
STRAT: //标号:START
MOV SP,#60H //将堆栈SP置为01100000,这个应该是用于控制硬件连接的语句。根实际的硬件相关。
MOV A,#01H //将A值为00000001
ROTATE: //标号:ROTATE
MOV P1,A //将A的值00000001赋给P1,如果我没猜错,这里的P1应该是跟硬件直接相连的输出接口的控制口。
//也就是直接控制灯亮的。
RL A //A循环左移即得00000010
LCALL DELAY //调用DELAY
SJMP ROTART //短转移到ROTATE
DELAY: //标号DELAY,下面是用于实现延时的一段代码(三重循环)
MOV R0,#0AH //R0赋值为10(10进制)
DELAY1: //DELAY1
MOV R1,#00H //R1赋值为0
DELAY2: //DELAY2
MOV R2,#0B2H //R2赋值为178
DJNZ R2,$ //R2减1是否为0,不为0则继续跳转到本指令执行;否则往下执行
DJNZ R1,DELAY2//R1减1是否为0,不为0则跳转到DELAY2执行,否则往下
DJNZ R0,DELAY1 //R0减1是否为0,不为0则跳转到DELAY1执行,否则往下
RET //返回到调用处
END //结束
2 (1)延时长短:T_delay=R0*R1*R2*执行DJNZ执行的CPU时间。你可以通过改变R0的初值来较大幅度的调整延时;通过改变R1和R2来小范围调整延时。延时5秒的代码如下:
ORG 0000H
LJMP START
ORG 0040H
STRAT:
MOV SP,#60H
MOV A,#01H
ROTATE:
MOV P1,A
RL A
LCALL DELAY
SJMP ROTART
DELAY:
MOV R0,#100
DELAY1:
MOV R1,#250
DELAY2:
MOV R2,#100
DJNZ R2,$
DJNZ R1,DELAY2
DJNZ R0,DELAY1
RET
END
不知道上面的值算得对不对
(2)通过控制P1的值就可实现不同的点亮方式:
ORG 0000H
LJMP START
ORG 0040H
STRAT:
MOV SP,#60H
MOV A,#03H //可同时点亮两个灯
ROTATE:
MOV P1,A
RL A
LCALL DELAY
SJMP ROTART
DELAY:
MOV R0,#0AH
DELAY1:
MOV R1,#00H
DELAY2:
MOV R2,#0B2H
DJNZ R2,$
DJNZ R1,DELAY2
DJNZ R0,DELAY1
RET
END

希望能对你有些帮助!
辉腾无限
2007-05-09 · TA获得超过188个赞
知道答主
回答量:144
采纳率:0%
帮助的人:90万
展开全部
呵呵,汇编,我不害你
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式