与led的极性没关系,led会亮,就是全部为1的这行不会显示。
;以查表方式控制的6种不相同的流水灯
;******************************************************************
;* date : 2004.4.20 ----------------------------------------------*
;* support mb: 020-34007281 e-mail:c51cn@163.com--------- --*
;* create by :dengdewu
http://www.c51.cn 更多例程请登陆------*
;* 网站单片机学习资料同步更新,敬请新老朋友随时关注 --------------*
;******************************************************************
end_data equ 0ffh ;定义花样展示数据字节地址
org 0030h ;程序由30开始执行
jmp ddw
ddw: mov sp,#60h ;设置堆栈指针至ram地址60h
again: ;循环标号
mov dptr,#led_table ;加载led花样展示数据起始地址
loop: clr a ;累加器清0
movc a,@a+dptr ;加载led花样展示数据起始地址
cjne a,#end_data,show ;判断所加载数据是否为结束字节
jmp again ;重新执行led花样展示
show:
mov p2,a ;由p2输出led花样展示九据
mov r5,#30
call delay ;延迟0.3s
inc dptr ;指到下一个led花样展示地址
jmp loop ;再加载led花样展示数据
delay: ;延迟子程序
mov r6,#50
s1: mov r7,#100
djnz r7,$
djnz r6,s1
djnz r5,delay
ret
led_table: ;led花样展示数据定义
db 00000000b ;会亮
db 00000000b ;会亮
db 01111111b ;会亮一只,如果去掉这行,就没有闪光效果了
db 11111111b ;为什么这行不会显示?
db 00000000b ;会亮
end