用74hc164驱动12个led,用典型电路,程序是网上找的,我略加修改,但led显示乱码.请高手指点程序哪里有问题!
程序如下:
org 0000h
ajmp start
org 30h
start: mov sp,#6fh
mov p1,#10000000b ;用p1.0作指示
mov 6bh,#0
mov 6ah,#1
mov 69h,#2
mov 68h,#3
mov 67h,#4
mov 66h,#5
mov 65h,#6
mov 64h,#7
mov 63h,#8
mov 62h,#9
mov 61h,#10
mov 60h,#11
lcall disp
sjmp $
disp: mov scon,#00h ;初始化串行口方式0
mov r1,#12 ;显示12位数
mov r0,#6bh ;60h-6bh为显示缓冲区
mov dptr,#segtab ;字形表的入口地址
loop: mov a,@r0 ;取最高位的待显示数据
movc a,@a+dptr ;查表获取字形码
mov sbuf,a ;送串口显示
delay: jnb ti,delay ;等待发送完毕
clr ti ;清发送标志 dec r0 ;指针下移一位,准备取下一个待显示数
djnz r1,loop ;直到12个数据全显示完。
ret
segtab: ;字形表
db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,77fh,00h ; 0 1 2 3 4 5 6 7 8 9 a 灭
end
谢谢!!!