MC-51系列做单片机和流水灯.8个灯

来源:百度知道 编辑:UC知道 时间:2024/05/31 22:02:17
首先,让1灯和8灯同时亮.过几秒灭后,接着让2灯和7灯同时亮,过几秒灭后,接着让3灯和6灯同时亮,过几秒灭后,接着让4灯和5灯同时亮,过几秒灭后,然后全亮全灭!最后重复上面过程5次!
编程.

假设条件:
1. 八个灯接P0口,1号灯对应P1.0,8号灯对应P1.7必须是CPU口负输出有效。
2. 假设晶振是12M。
3. 假设每次亮1秒。

ORG 0000H
LJMP 0080H

ORG 0080H
MOV SP, #60H ;设堆栈起始地址
MOV R2, #05H ;重复5次
MOV R3, #01H ;间隔时间为1秒

;=====循环五次======
LOOP2:
MOV R0, #00H;查表常用
MOV R1, #06H;每一循环要送的数据次数
;=====一次循环======
LOOP:
MOV A, R0
MOV DPTR, #TABLE
MOVC A, @A+DPTR
MOV P1, A
INC R0
DJNZ R1, LOOP
;===================
DJNZ R2, LOOP1
;===================
LJMP 00H

TABLE:
DB 7EH,0BDH,0DBH,0E7H,00H,0FFH
;7EH即01111110B,1、8号灯亮
;0BDH即10111101B,2、7号灯亮
;0DBH即11011011B,3、6号灯亮
;0E7H即11100111B,4、5号灯亮
;00H即00000000B,全亮
;0FFH即11111111B,全灭

DELAY:
;=====1S延时======
MOV R5, #20
DEL2:
;=====50MS延时======
DJNZ R6, #200
DEL1:
MOV R7, #250
DJNZ R7, $
DJNZ R6, DEL1
;==================