微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 单片机学习之六:基本I/O口试验二:跑马灯

单片机学习之六:基本I/O口试验二:跑马灯

时间:09-18 来源:互联网 点击:

储器分开。程序存储器用来存放程序,数据存储器用来存放程序运行需要的常数和变量。

单片机的数据存储器分为内部存储器和外部存储器,用mov访问内部数据存储器,用movx访问外部数据存储器。

内部数据存储器是最灵活的地址空间,一共有256字节。这256个字节被分为两组:00h~7fh的低128字节是内部RAM区;80h~ffh的高128字节为特殊功能寄存器区。其中低128字节的地址分配如下图所示:

从图上可见,低128字节中,从00h~1fh共32个字节是四个通用的工作寄存器区,每一个区有8个工作寄存器,编号均为从R0~R7。

大家可能会问,既然四个工作寄存器组的名字都叫R0~R7,那么,上面的程序中间用的寄存器到底是哪个呢?

当前程序使用的工作寄存器区是有程序状态字PSW决定的。

那么PSW又在哪里呢?

刚才我们说到80h~ffh的高128字节是特殊功能寄存器区,PSW就在这个区里面。这个区域还有很多别的特殊功能寄存器,大家可以参考相关资料。

PSW是一个8位的寄存器,它各位的说明如下:

其中,决定选择哪个寄存器区的是RS1和RS0这两位,为00时,选择0区;01时选择1区;10时选择2区;11时选择3区。

大家可能会问,程序中间并没有给这个寄存器赋值,那么它到底选择哪个区域呢?

由于单片机被复位后,所有的寄存器请零,所以在本程序中,缺省的使用的是0区的寄存器组。

  5、课后练习

(1)、学习该试验中出现的理论知识,包括程序存储器,数据存储器的地址分配,和相关指令。

(2)、编写一个跑马灯程序,让二极管从左至右发光,延迟时间是1s,即1000ms。注意,可不是把上面程序中的mov r7,#100,改成mov r7,#1000,那么简单哦。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top