【单片机汇编】流水灯作业笔记

1.ORG,在汇编语言中也是一条指令,其作用是告诉汇编程序,在开始执行的时候,将某段机器语言装载到内存中的哪个地址。
2.长转移指令的功能是:把指令码中的目标地址addr16装入程序计数器PC,使机器执行下一条指令时无条件转移到addr16处执行程序,不影响任何标志。
3.LCALL是调用子程序,当子程序执行完后就返回到LCALL指令下一条指令继续执行程序,而子程序是可以多次调用,也可以在任何位置调用。这是从哪里走的,还要返回哪里的。
而JMP是无条件转移指令,转移到某执行程序后就不再返到回原处,是一去不回返的。
4.CPL是取反指令,也称逻辑非指令。可以取反P1.0
5.AT89C51简介(晶振为11.0592M 和12M)
6.clr p1.5。p1.5清零 等价于 p1.5=0。
7.好像是单片机上的。
DJNZ是用来控制循环次数的,比如:DJNZ 10H,del
意思就是执行这一句,后面的那个十六进制数10H自动减一,看是不是0,不是0就跳到del的标识符语句后,是0就顺序执行。
8.sjmp $ 是原地跳转的指令。 作用:1,可以防止程序乱跳。 2,等待中断发生。 51单片机指令。(注意!是原地跳转,并不是所在程序段跳转)
9.即使不设置循环,在ISIS里面程序还是循环执行的。

10.复位是必须的。

MOV A,#0FEH ;ACC中先装入LED1亮的数据
MOV P1,A ;将ACC的数据送P1口

 

 

汇编代码如下:

;本代码设计分成3个模块:①开关跳转循环(使用JB进行跳转);②MAIN正向闪烁模块、LOOPR反向闪烁模块;③延时模块(DELAY)。
ORG 0000H ;单片机上电后从0000H地址执行
AJMP MAIN ;跳转到主程序存放地址处
ORG 0030H ;设置主程序开始地址
MAIN:
MOV A,#0FEH ;ACC中先装入LED1亮的数据,默认是#0FFH,这里少一个用来装灯亮。FE(十六进制) = 11111110(二进制)
MOV P1,A ;将ACC的数据送P1口,P1有8个口,A有8位,一个一个给。
JB P0.0,LOOPL ;若为1就跳转到L

LOOPL:
RL A ;将ACC中的数据左移一位
MOV P1,A ;把ACC移动过的数据送p1口显示
ACALL DELAY ;调用延时子程序
JNB P0.0,LOOPR ;若不为1就跳转到LOOPR,这样写可以随时保证跳转,即使在运行中也可以跳转
SJMP LOOPL

LOOPR:
RR A
MOV P1,A
ACALL DELAY
JB P0.0,LOOPL ;若为1就跳转到LOOPL
SJMP LOOPR

DELAY:
MOV R0,#255 ;延时一段时间
D1:MOV R1,#255
DJNZ R1,$
DJNZ R0,D1
RET ;子程序返回
END

 

 

 

1.初始化复位是0FFH,变成0是灭。

2.P1.01SETB P1.0

3.A是字节,P1.0是位,不能用MOV A,P1.0

4.间接寄存器r0r1

5.使用双重循环控制时间间隔

DELAY:

MOV R3,#9FFH

LOOP2MOV R2,#0F0H

LOOP1:DJNZ R2,LOOP1  ;内循环,减R2,减完R2,减R3

      DJNZ R3LOOP2

      RET   ;子程序调用使用RET

  1. P1.7是高位,P1.0是低位
  2. JNB:等于0转移,等于1顺序执行。

  

转载于:https://www.cnblogs.com/osmondwang/p/7787795.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值