NS-6试验板程序范例--实验板流水灯范例

;流水灯
loop: clr p1.0
acall d01s
setb p1.0
clr p1.1
acall d01s
setb p1.1
clr p1.2
acall d01s
setb p1.2
clr p1.3
acall d01s
setb p1.3
clr p1.4
acall d01s
setb p1.4
clr p1.5
acall d01s
setb p1.5
clr p1.6
acall d01s
setb p1.6
clr p1.7
acall d01s
setb p1.7
acall d01s
ljmp loop
;延时子程序
d01s: mov r0,#255
d01l1: mov r1,#195
djnz r1,$
djnz r0,d01l1
ret
end
******************************************8
;左移
star: mov r3,#8 ;设置流水位数
mov p1,#11111110b ;从p1.0开始
loop: acall d01s
mov a,p1 ;读取p1当前数据到acc
rl a ;左移一位
mov p1,a ;将左移的数据再送到p1
djnz r3,loop ;没有完成8位继续
acall d01s
;******************
mov p1,#0ffh ;熄灭所有灯
;******************
;右移
mov r3,#8 ;设置流水位数
mov p1,#01111111b ;从p1.7开始
loop1: acall d01s
mov a,p1 ;读取p1当前数据到acc
rr a ;右移一位
mov p1,a ;将左移的数据再送到p1
djnz r3,loop1 ;没有完成8位继续
acall d01s
ljmp star ;完成后返回到开始再来
;延时子程序
d01s: mov r0,#255
d01l1: mov r1,#198
djnz r1,$
djnz r0,d01l1
ret
end
