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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/mylovewanzi/article/details/82885787

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


实验效果:

  • 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-

猜你喜欢

转载自blog.csdn.net/mylovewanzi/article/details/82885787