;-------------------------------------------------------
;程序名称:74LS164串行输入并行输出的移位LED流水灯之02
;说 明:测试:XY-900_USB型综合学习开发板
;汇编例子
;-------------------------------------------------------
;******************************************************************
;* 74LS164是一个串行输入并行输出的移位寄存器,可用于扩展并行输出口。*
;* 编程采用模拟串行口方式。 *
;******************************************************************
DATA_164 BIT P0.0
CLK_164 BIT P0.1
MR_164 BIT P0.2
;**********************************************************
ORG 0000H
AJMP MAIN
ORG 0030H
;**********************************************************
; 主程序
;**********************************************************
MAIN:
MOV SP,#60H
MOV P2,#0FFH
CLR CLK_164
CLR MR_164 ;164输出口清零
CALL DELAY
SETB MR_164
MAIN1:
MOV R0,#0FEH ;赋显示初值
MOV R2,#08H ;8个发光二极管
MAIN2:
CALL WR_BITS ;写数据,送显示
CALL DELAY
MOV A,R0 ;准备下一个显示数据
RL A
MOV R0,A
DJNZ R2,MAIN2
MOV R0,#0FFH ;关闭LED显示
CALL WR_BITS
CALL DELAY
JMP MAIN1
;**********************************************************
; 写数据子程序
;**********************************************************
WR_BITS:
MOV R1,#08H ;8个脉冲
MOV A,R0
WR_BIT1:
RLC A ;数据向左移动一位,先送高位
MOV DATA_164,C
SETB CLK_164
NOP
CLR CLK_164 ;下降沿将数据写入164
DJNZ R1,WR_BIT1
RET
;**********************************************************
;延时子程序
;**********************************************************
DELAY:
MOV R5,#03
DEL1:
MOV R6,#250
DEL2:
MOV R7,#250
DJNZ R7,$
DJNZ R6,DEL2
DJNZ R5,DEL1
RET
;**********************************************************
END