用89C51串行口外接CD4094移位寄存器扩展8位并行口,8位并行口的每位都接一个发光二极管,要求发光二极管从左到右以一定延迟轮流显示,并不断循环。
ORG 0000H
AJMP MAIN
ORG 0100H
MOV SCON,#00H;串行口初始化为方式0
MOV A,#80H ;最左位先亮的起始显示码送A
CLR P1.0 ;关闭并行输出
CLR ES
OUT0:MOV SBUF,A ;开始串行输出
OUT1:JNB TI,OUT1 ;输出完否
CLR TI ;完了,清TI标志,以备下次发送
SETB P1.0 ;打开并行口输出
ACALL DELAY ;延时一段时间
RR A ;循环右移
CLR P1.0 ;关闭并行输出
SJMP OUT0 ;循环
DELAY: …
END
程序:
ORG 0000H
AJMP MAIN
ORG 0023H
AJMP SBV
ORG 0100H
MAIN: ……
MOV SCON,#00H
STEB EA
STEB ES
CLR P1.0
MOV A,#80H
MOV SBUF,A
……
中断服务程序:
ORG 0200H
SBV:SETB P1.0 ;点亮发光管
ACALL DELAY;点亮一段时间
CLR TI ;清发送中断标志
RR A ;准备点亮下一位
CLR P1.0 ;灭显示
MOV SBUF,A ;串行口输出
RETI
DELAY: …… ;延时程序
END