org 0000h ;起始地址
jmp main
org 0030h
main:
MOV tmod,#00h ;设定TIMER0工作在MODE0
start:
clr c
MOV a,#0ffh ;ACC=FFH,左移初值
MOV r2,#08 ;R2=08,设左移八次
loop:
rlc a ;左移一位
MOV p2,a ;输出至P2
MOV r3,#100 ;0.2秒
call delay ;2000微秒
djnz r2,loop ;左移八次
MOV r2,#07 ;R2=07,设右移七次
loop1:
rrc a ;右移一位
MOV p2,a ;输出至P2
MOV r3,#100 ;0.2秒
call delay ;2000微秒
djnz r2,loop1 ;右移七次
jmp start
delay:
setb tr0 ;启动TIMER0开始计时
again:
MOV tl0,#(8192-2000) mod 32 ;设定TL0的值
MOV th0,#(8192-2000)/32 ;设定TH0的值
loop2:
jbc tf0,loop3 ;TF0是否为1,是则跳至LOOP3,并清除TF0
jmp loop2 ;不是则跳到LOOP2
loop3:
djnz r3,again ;R3是否为0?不是则跳到AGAIN
clr tr0 ;是则停止TIMER0计数
ret
end
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』