单片机驱动8×8点阵LED
CLKEQUP3.2
DINAEQUP3.3
DINBEQUP3.4
CLEAREQUP3.5
ORG0000H
AJMPMAIN
ORG0100H
MAIN:
MOVSP,#70H;设堆栈指针
MOV50H,#07EH;设置发送的列数据(Y0~Y7)
MOV51H,#0BDH
MOV52H,#0DBH
MOV53H,#0E7H
MOV54H,#0E7H
MOV55H,#0DBH
MOV56H,#0BDH
MOV57H,#07EH
CLRCLEAR;初始化I/O口
SETBCLK
SETBDINA
SETBDINB
SETBCLEAR
mainloop:
movr6,#8h;设置扫描次数
movdptr,#09000h;读取扫描端口数据
MOVR1,#50H;指定列数据指针
flashcy:
MOVA,@R1;读取列数据
MOVR0,A
INCR1;列数据指针加1
CLRA
MOVCA,@A+DPTR
MOVP1,#0FFH
LCALLSENDTO
MOVP1,A
INCDPTR
LCALLDELAY
DJNZR6,flashcy
SJMPMAINLOOP
sendto:;发送数据子程序
PUSHACC
CLRCLK
SENDTIME:
MOVR7,#08H
MOVA,R0
CLRC
SENDCY:
RRCA
MOVDINA,C
SETBCLK
CLRCLK
DJNZR7,SENDCY
POPACC
RET
DELAY:MOVR7,#01;延时子程序
DELAY0: MOVR4,#17
DELAY1: MOVR3,#28
DJNZR3,$
DJNZR4,DELAY1
DJNZR7,DELAY0
RET
ORG09000H
DB0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH;X0~X7(列扫描)
end
评论