高手请进,单片机的一个小程序

来源:百度知道 编辑:UC知道 时间:2024/05/24 00:43:23
有8个灯,首先让
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
;===================