|
org 00h
mov scon,#00000000b ;设定UART方式MODE0
start:mov dptr,#table ;数据指针指到TABLE loop:clr a
;清除ACC
movc a,@a+dptr
;到TABLE取数据
cjne a,#03,a1
;到结束码03了么?不是到A1
jmp start
;是则重新开始
a1: cpl a
;取到的数据反向
mov 30h,a
;A存入30H
mov sbuf,30h
;30H的值存入SBUF
loop1:jbc ti,loop2 ;监测TI=1?是则跳到LOOP2
jmp loop1
;否则继续监测
loop2: call delay
;延时
inc dptr
;数据指针加1
jmp loop
DELAY: ; 延时程序
|
MOV R5,#255
D3:MOV R2,#255
D4: DJNZ R2,D4
DJNZ R5,D3
RET
table : db 01h,02h,04h,08h ;左移
db 10h, 20h,40h,80h
db 01h,02h,04h,08h
db 10h, 20h,40h,80h
db 80h,40h,20h,10h
;右移
db 08h, 04h,02h,01h
db 80h,40h,20h,10h
db 08h, 04h,02h,01h
db 00h,0ffh,00h,0ffh ;闪烁
db 03h
END
|