ORG 0000HLJMP STARTORG 0040HSTRAT:MOV SP,#60HMOV A,#01HROTATE:MOV P1,ARL ALCALL DELAYSJMP ROTARTDELAY:MOV R0,#0AHDELAY1:MOV R1,#00HDELAY2:MOV R2,#0B2HDJNZ R2,$DJNZ R1,DELAY2DJNZ R0,DELAY1RETEND要求:1.详细的注释2.改

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/09 10:30:55

ORG 0000HLJMP STARTORG 0040HSTRAT:MOV SP,#60HMOV A,#01HROTATE:MOV P1,ARL ALCALL DELAYSJMP ROTARTDELAY:MOV R0,#0AHDELAY1:MOV R1,#00HDELAY2:MOV R2,#0B2HDJNZ R2,$DJNZ R1,DELAY2DJNZ R0,DELAY1RETEND要求:1.详细的注释2.改
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种不同的点亮方式

ORG 0000HLJMP STARTORG 0040HSTRAT:MOV SP,#60HMOV A,#01HROTATE:MOV P1,ARL ALCALL DELAYSJMP ROTARTDELAY:MOV R0,#0AHDELAY1:MOV R1,#00HDELAY2:MOV R2,#0B2HDJNZ R2,$DJNZ R1,DELAY2DJNZ R0,DELAY1RETEND要求:1.详细的注释2.改
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
希望能对你有些帮助!