单片机汇编语言程序

ly:DB00H,00H,00H,00H,3FH,0FCH,20HDB04H,21H,84H,22H,44H,24H,24H,28H,14HDB20H,04H,27H,0... ly: DB 00H,00H,00H,00H,3FH,0FCH,20H
DB 04H,21H,84H,22H,44H,24H,24H,28H,14H
DB 20H,04H,27H,0E4H,24H,24H,24H,24H
DB 24H,24H,3FH,0FCH,00H,00H,00H,00H

ORG 0000H
LJMP MAIN

ORG 0100H

MOV DPTR,#ly
MOV R0,#LHJ
LCALL COPY
MOV R5,#2
LCALL DISPLAYS

COPY: MOV R7,#32
C1: CLR A
MOVC A,@A+DPTR
MOV @R0,A
INC DPTR
INC R0
DJNZ R7,C1
RET

DISPLAY:MOV DATAOUT,#0XFF;
MOV R0,#LHJ
CLR LAB
MOV R7,#16
D1: CLR LSCK ;
CLR LSCLT
MOV B,@R0 ;
INC R0 ;

MOV A,@R0 ;
CPL A
MOV R6,#8 ;
D2: CLR LSCLH ;
RRC A
MOV LDATA,C ;
SETB LSCLH
DJNZ R6,D2
MOV A,B ;
CPL A
MOV R6,#8 ;
D3: CLR LSCLH ;
RRC A ;
MOV LDATA,C ;
SETB LSCLH ;
DJNZ R6,D3 ;

INC R0 ;进入第二行数据
ORL DATAOUT,#0X24;此句可以用以下两句来理解,如果不将两句合为一句,将出现拖影现像
;SETB LSCK ;行数据移位,相应行拉低,三极管导通输出电量到相应行点阵管阳极(共阳)
;SETB LSCLT ;将数据锁存输出到相应列的点阵发光管显示,显示一行后将保持到下一行显示开始
SETB LAB ;列数据位只在第一行时为0,其它时候都为1,当将这个0移入寄存器后,从第一位开始一直移位最后一位,移位的过程,AB就必需是1,这是因为不能同时有两个及两个以上0的出现,否则显示出乱
DJNZ R7,D1 ;

MOV R7,#64
DJNZ R7,$
CLR LSCK
SETB LSCK ;将最后一行数据移出
RET

我现在很不理解"MOV DPTR,#LY",我自己想了想,我说说,看我说的对不!
假设DPTR的地址为0100H,(我也不确定是不是这个地址),把#LY中的数分别送到01001H=00H
01002H=00H
01003H=00H
01004H=3FH
01005H=0FCH
01006H=20H中,
DPTR增1是什么意思,是0100增1吗?

MOVC A,@A+DPTR,假设DPTR不增1,A增1,那照上面的存放,A每增1都会去取DPTR中的数,对吗?

16*16LED点阵显示怎样设定文字不同的动作,显示的程序好复杂,看不懂。

延时程序:
DELAY:
DS1:MOV R4,#0X7F
DS2:MOV R5,#250
DJNZ R5,DS2
DKNZ R4,DS1
RET
END
请问在第一行程序中被送的“#0X7F”是个什么数啊!X是什么作用。
对了,本程序是16*16LED点阵的一个程序,不全,都复制过来太长了,麻烦各位好友帮个忙。
我的邮箱:lsliushuo@126.com
展开
 我来答
lxhgmx
推荐于2016-03-29 · TA获得超过2321个赞
知道小有建树答主
回答量:561
采纳率:0%
帮助的人:0
展开全部
MOV DPTR,#LY;是将一个数据表的首地址送入DPTR,作为基本地址,配合“MOVC A,@A+DPTR”读取表中的数据。

MOVC A,@A+DPTR;以DPTR中的内容为基本地址,加上A中的内容(该值就决定了要读取的数据在数据表中的位置)形成实际地址,将实际地址所指向的单元中存放的数据读出到A中。

INT DPTR;进行DPTR内容增1。当要连续读取下一个数据时,此实际地址是需要修正的,修正的方法,可以用A加1,也可以用DPTR加1,但因为在执行“MOVC A,@A+DPTR”后,A中原内容已经被读出的数据所取代,恢复原内容会比较麻烦,所以一般都用DPTR加1来实现地址修正。

“#0X7F”:0X表示7F是一个十六进制数,#表示7F是一个立即数。相当于“#7FH”
做而论道
高能答主

2009-08-25 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.2亿
展开全部
问题较多。
1. 延时程序:
DELAY:
DS1:MOV R4,#0X7F
DS2:MOV R5,#250
......

其中的#0X7F,#代表数字,0x7F代表16进制形式数字,即十进制127;
#250就简单了,就是数字,250。

2。DPTR增1是什么意思,是0100增1吗?
是的,DPTR的内容将变为0101。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lauey
2009-08-25 · TA获得超过2366个赞
知道小有建树答主
回答量:1138
采纳率:0%
帮助的人:923万
展开全部
#0x7f是该单片机的立即数mov方法,不像80x86汇编不需要这个#号。
0x代表随后的是十六进制数,
相当于80x86汇编的
mov ax,07FH
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
音乐飘渺迷人
2009-08-25 · TA获得超过3262个赞
知道大有可为答主
回答量:1719
采纳率:0%
帮助的人:1632万
展开全部
好吧,你把分给我,我介绍个群给你,在群上找一个人问他,他刚做完16*32的屏.

帮你少走弯路.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式