;************************
;本程序实现四个连续的灯一起移动亮,另四个不亮。
;器件是51和CD4049移位寄存器
;
;----------------------------------------------
TM1 EQU 10
STA BIT P2.0 ;设置锁存端口接法
OE BIT P2.1 ;设置使能端口接法
LJMP START
ORG 0030H
START: MOV SP, #5FH ;设置堆栈
MOV SCON, #00H ;移位寄存器方式,并将标志位清零。是方式0?
SETB P2.1 ;使能4049
MOV A, #0F0H ;将要输入的数放入A
CLR P2.0 ;关闭并行输出,防止串红现象
CLR TI ;移入数据前,将标志位清零
OUT: MOV SBUF, A ;将数据移入51的subf缓冲器,数据RXD自动发送,同时由TXD发出移位脉冲。
LOOP: JBC TI, NEXT ;等待发送完毕后,由51置位TI标志位;此句作用是等待。
AJMP LOOP ;
NEXT: SETB P2.0 ;开启并行输出
CALL DELAY ;设定灯移动的时间间隔。
RR A ;移位要输出的数据,也可另外设定其他的数据
CLR P2.0 ;关闭并行输出
AJMP OUT ;实现循环
DELAY: MOV R0, #TM1
D0: MOV R1, #0A0H
D1: MOV R2, #0A0H
D2: DJNZ R2, D2
DJNZ R1, D1
DJNZ R0, D0
RET
END
文章评论(0条评论)
登录后参与讨论