单片机实验----跑马灯

2019-04-15 19:30发布

单片机实验----跑马灯


实验效果:
  • 8只LED灯轮流点亮,从左到右,再从右到左,不断循环。
知识点:
  • RL指令
  • RR指令
  • 高128位单元
代码: ORG 0000H ;主程序 MAIN: MOV A,#0FEH ;acc初始化,11111110B LOOP: MOV P1,A ;将acc的数据传送到P1口 LCALL DELAY ;调用延迟子程序 RL A ;将acc中的数据左右一位 LJMP LOOP ;回到LOOP标记处,点亮下一盏灯 DELAY: MOV R1,#200 ;延时子程序 D1: MOV R2,#150 D2: DJNZ R2,D2 DJNZ R1,D1 RET ;返回主程序 END 我们知道控制P1口的数值可以使得LED灯亮或者灭。
那怎么改变P1口的数值呢?
我们可以通过RL指令。 原理:
我们将11111110B传给P1口,再用RL指令将11111110B左移,改变11111110B中0的位置,来达到改变P1口8位的数值,从而控制LED的亮灭。
  1. RL指令
    格式:RL A
    功能:将acc中的数据循环左移一位,以形成新的数据
  2. RL指令
    格式:RR A
    功能:同上,循环左右移
  3. 高128单元
    如图:即80H~FFH
    内部数据存储器
高128单元,称为特殊功能寄存器区,也称专用功能寄存器区。这个区包含22个专用寄存器。
这个区主要存放相应功能部件的控制命令、状态或数据。 特殊功能寄存器:
特殊功能寄存器 这些专用寄存器分为3类:
累加器A(或acc)
acc是一个8位寄存器,常用A表示。
acc是一个很重要的寄存器,运算的时候经常会用到。
一方面它可以做加法器,一方面也可以作为寄存器。 累加器的常用功能:
  1. 存放操作数和运算后的结果
  2. 内部与外部RAM数据传送的中转站
一般来说,A代表累加器,而ACC代表累加器的地址。
程序状态字(PSW)寄存器
PSW是一个8位寄存器,用于存放执行指令后的有关状态信息。 如图:
psw寄存器1 psw寄存器2
  1. 进位标志位CY或C(PSW.7)
    标志加法与减法运算中的进位与借位状态。
    加法中:若有进位则CY=1,否则为0。
    减法中:若有借位则CY=1,否则为0。
    它是最常用到的标志,通常在位传送、位与、位或等操作中使用。
  2. 辅助进位标志位AC(PSW.6)
    用在加或减运算中,表示低四位有没有向高四位进位或借位。
    若有则AC=1,否则为0。
  3. 寄存器选择位RS1和RS0(PSW.4和PSW.3)
    用户可以通过改变他们的值,来选择当前工作寄存器区的组别。
如图:
当前工作寄存器选择表
数据指针(DPTR)
是一个16位的寄存器,本质是两个8位寄存器组合而成。
DPTR比较灵活:
  1. 作为16位寄存器使用,此时可以对64k的外部数据存储器和I/O地址进行寻址。
  2. 作为两个8位寄存器使用,此时DPH为DPTR的高字节,DPL为DPTR的低字节。
时间:2018年9月28日16:08:36
-END-