|
;尼士单片机
;任风逍遥
;2005/3/12
;NS-1新试验板 8*16LED点阵显示“国”
;R4行驱动
;r0列驱动
;R6每个字8个码
ORG 00H
ajmp loop
org 50h
mov r1,#00h
LOOP: MOV R4,#0feh;11111110b扫描指针为1
MOV A,#0FFH;开机初始化,清除画面
MOV P0,A;p0口置高
mov p1,a;P1口置高
MOV 20H,#00H; ;取码指针的初值
L16: MOV R6,#08h; ;每个字8个码
MOV R4,#00h;feh;11111110b扫描指针为1
MOV R0,20H; ;取码指针存入R0
L3: MOV A,R0;行扫描取码指针存入A
MOV DPTR,#TABLE;取数据表代码
MOVC A,@A+DPTR
cpl a
lcall display;调用行扫描程序
INC R0; 行扫描取码指针加1,取下一个码
inc a
mov r4,a; 列扫描指针+1左移,扫描下一个
MOV R3,#02; ;扫描1毫秒
DELAY2:MOV R5,#248; ;
DJNZ R5,$
DJNZ R3,DELAY2
DJNZ R6,L3;一个字8个码是否完成?
JMP LOOP;返回
ret
display:clr p1.0;DA清0
clr p1.2;CLR清0
clr p1.1;时钟清0
nop
mov r7,#08h;
main595b2:rrc a
mov p1.0,c;串行发送数据
nop
setb p1.2;时钟置高,595接收串行数据,关毕并口
nop
clr p1.2;时钟清0,595输出并行数据
nop
djnz r7,main595b2;串行发送8位数据
nop
mov a,0ffh
mov p0,a
setb p1.1;;CLR置高
nop
clr p1.1;;CLR清0
MOV A,R4; ;列扫描指针存入A
MOV P0,A; ;列扫描输出
clr p1.0;;DA清0
clr p1.2;clk;时钟清0
nop
nop
ret
;*******************************
table:
db 0ffh,0bdh,91h,0bdh,9dh,0fdh,81h,0ffh
;国
end

|