51汇编程序

来源:百度知道 编辑:UC知道 时间:2024/06/21 01:52:40
刚学单片机,看到一段51汇编程序,不是很明白.帮忙详细注释一下第8条:(数据指针加1).我看程序一般是A递加,来找不同位置的地址.没有看到过DPTR来加的,帮忙解释一下.
http://blog.sina.com.cn/s/blog_4f8cdc9e0100cuo5.html~type=v5_one&label=rela_nextarticle 这个网页上的6.7题.

LOOP: CLR A ;A清零
因为跳转回去之后,对A清零,故不可用A递加。

其实是一样的。
MOVC A, @A+DPTR 这一句是查表语句,将对应地址的值取出来给A。
这里经常用在键盘程序的用查找键值求键号、液晶显示的字表上。

两种方式都可以:A加一、DPTR加一。
两种方式的优缺点在于:A加一,那么取出来的值再给A,就需要将之前的A保存下来,下次再调出来,这样会很麻烦,这种方式是在DPTR在多处用到了的情况下使用。
当DPTR只是在这个查表程序用到的时候,只要将DPTR加一就很方便了,不需要去保存A了。

6.7功能说明

单片机端口接八只LED,编程时利用取表的方法,使端口P1做单一灯的变化:先向左移2次,然后向右移2次,再闪烁4次,不断循环。

程序:JS07.ASM

01: START: MOV DPTR, #TABLE ;存表

02: LOOP: CLR A ;A清零

03: MOVC A, @A+DPTR ;取表代码

04: CJNE A, #01H, LOOP1;不是01H,循环

05: JMP START ;重新设定

06: LOOP1: MOV P1, A ;送P1输出

07: ACALL DELAY ;调延时程序

08: INC DPTR ;数据指针加1

09: JMP LOOP ;转移到LOOP处

10: DELAY: MOV R5,#25