2片4094串联电路如图6-1所示 试编制程序按下列顺序要求每隔0.5s循环操作。 ①从左
问题详情
2片4094串联电路如图6-1所示,试编制程序按下列顺序要求每隔0.5s循环操作。
①从左向右依次点亮,每次2个;
②从左向右依次点亮,每次增加2个,直至全部点亮;
③从左向右依次暗灭,每次减少2个,直至全灭;
④返回从①不断循环。
参考答案
编程如下:
UGHT:MOV SCON,#00H ;串行口方式0
CLR ES ;禁止串行中断
MOV DPTR,#TAB ;置发光二极管亮暗控制字表首址
LOOP:MOV R7,#0 ;置顺序编号0
LP1:MOV A,R7 ;读顺序编号
MOVC A,@A+DPTR ;读控制字
CLR P1.0 ;关闭并行输出
MOV SBUF,A ;启动串行发送(发送给4094B)
JNB TI,$ ;等待发送完毕
CLR TI ;清发送中断标志
INC R7 ;指向下一控制字
MOV A,R7 ;读顺序编号
MOVC A,@A+DPTR ;读下一顺序编号控制字
MOV SBUF,A ;启动串行发送(发送给4094A)
JNB TI,$ ;等待发送完毕
CLR TI ;清发送中断标志
SETB P1.0 ;开启并行输出
LCALL DLY500ms ;调用延时0.5秒子程序
INC R7 ;指向下一控制字
CJNE R7,#48,LP1 ;判循环操作完否?未完继续
SJMP LOOP ;顺序编号0~47依次操作完毕,从0开始重新循环
TAB:DB 0C0H,00H,30H,00H ;从左向右依次点亮,每次2个
DB 0CH,00H,03H,00H,00H,0C0H,00H,30H,00H,0CH,00H,03H;
DB 0C0H,00H,0F0H,00H ;从左向右依次点亮,每次增加2个,直至全部点亮
DB 0FCH,00H,0FFH,00H,0FFH,0C0H,0FFH,0F0H,0FFH,0FCH,0FFH,0FFH;
DB 3FH,0FFH,0FH,0FFH ;从左向右依次暗灭,每次减少2个,直至全灭
DB 03H,0FFH,00H,0FFH,00H,3FH,00H,0FH,00H,03H,00H,00H;