使用查表方式實(shí)現(xiàn)流水燈功能
org 0000h
ajmp main
org 0030h
main:
mov dptr,#tab ;將表頭地址送入DPTR
mov 30h,#00h ;將30H清零
mov a,30h ;把30H中的數(shù)送入ACC中
loop:
movc a,@a+dptr ;查ROM中的表格并將所得結(jié)果送入ACC中
mov p0,a ;將查表所得結(jié)果送入P0口
inc 30h ;將30H單元加一
mov a,30h ;將30H單元的的值送入ACC中
movc a,@a+dptr ;查表并將所得的結(jié)果送入ACC中
mov p2,a ;將ACC中的值送入P2口
mov r4,#10 ;給軟件計(jì)時(shí)器賦值
tt3: ;以下是延時(shí)程序延時(shí)時(shí)間為:10ms*100=1S
lcall delay10ms ;調(diào)用10MS延時(shí)程序
djnz r4,tt3 ;R4不等于零返回到TT3處循環(huán)
inc 30h ;將30H向上加一
mov a,30h ;將30H中的值送入ACC
cjne a,#32,loop ;ACC中的數(shù)若與32不相等則返回LOOP處循環(huán)
ajmp main ;相等則返回到主程序處繼續(xù)循環(huán)
delay10ms: ; 10ms 延時(shí)程序
mov r6,#100
tt2:
mov r5,#50
djnz r5,$
djnz r6,tt2
ret
tab: dw 0ffffh,0000h,0ffffh,0000h
dw 5555h,0aaaah,05555h,0aaaah
dw 00ffh,0ff00h,00ffh,0ff00h
dw 0cccch,3333h,0cccch,3333h
end