a.开机后从LED1到LED8依次点亮后全熄灭,状态变化时间间隔为1秒b.开机后让LED1 LED3 与LED2 LED4交替点亮,交替变化时间间隔为一秒;
c.开机后四按键分别控制发光管LED1 LED2 LED3 LED4 是否点亮,按一次键,状态变化一次。如果可以加上注解可追加分数,拜托了。
a 答案:
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN: MOV A,#0FEH ;是开始键按下 则跑马灯开始运行
LL: MOV P1,A
LCALL YS ;显示延时
RL A ;循环右移一位
CJNE A,#0FEH,LL ;不是最后一个,则转到LL继续显示下一个LED发光二极管亮
MOV A,#0FFH ; 全灭
MOV P1, A
SJMP $ ;暂停
YS: MOV R7,#4 ; 单周期1uS ( 晶振为12MHz) 延时1秒子程序
DEL1: MOV R6,#123 ; 单周期1uS
DEL2: DJNZ R6,DEL2 ; 双周期2uS*123=246uS
DJNZ R7,DEL1 ; 双周期(2us+246+1)*4=996uS
NOP ; 单周期1uS
RET; 双周期2uS
END
b 答案:
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN: MOV A,#0FFH ;是开始全灭
MOV P1,A
LL: SETB P1.1
SETB P1.3
CLR P1.0
CLR P1.2
LCALL YS ;显示延时1秒
SETB P1.0
SETB P1.2
CLR P1.1
CLR P1.3
LCALL YS ;显示延时1秒
SJMP LL ;继续循环显示
YS: MOV R7,#4 ; 单周期1uS ( 晶振为12MHz) 延时1秒子程序
DEL1: MOV R6,#123 ; 单周期1uS
DEL2: DJNZ R6,DEL2 ; 双周期2uS*123=246uS
DJNZ R7,DEL1 ; 双周期(2us+246+1)*4=996uS
NOP ; 单周期1uS
RET; 双周期2uS