提示:以下是本篇文章正文内容,下面案例可供参考
单片机内部的程序存储器用于存储单片机工作时候的程序,单片机内部专门设置一个16位的程序计数器(PC),用于知识下一时刻单片机要执行的程序在ROM空间中的地址位置,即可以存储64Kb空间大小。
程序存储器物理上可以分为片内程序存储器和片外存储器,不同单片机型号有不同的片内程序存储器空间大小。
例如8051单片机片内有4Kb的ROM,那当控制线取0时,PC访问的前4kb空间是片内的ROM;当控制线为0时候,PC访问的是片外的ROM。
51单片机复位后,PC的内容是0000H,即为系统程序的启动地址。
51单片机内部有6个中断源,6个中断源介绍及地址如下所示:
中断源之间只间隔8个存储单元,这是不足以存放中断程序的,所以这是中断入口地址,后续有中断服务函数。
数据存储器(RAM)存储单片机运行期间所需要的数据和临时生成的数据。
从物理上分为片内RAM和片外RAM(片外RAM是通过16位的地址总线访问,所以片外RAM也是64kb)。
厂家根据不同的任务要求和需求定义不同的任务块,如下所示:
工作寄存器组:一共有32个字节,也被称为通用寄存器,用于临时寄存8个信息,工作寄存器组分为4个组别,每组有R0-R7一共8个数据信息。
位寻址区:一共有16个字节,128位,该区域每一位可按照位于方式使用,这128位会重新分配工作地址。
一般RAM区域:用户编程可以使用的RAM,当然,前两个单元未使用的空间,用户也可以使用。
堆栈区和堆栈指针:先进后出、后入先出的原则进行管理的一段存储区域
函数的调用就是一个堆栈操作,如下图所示:
为实现堆栈“先入后出,后入先出”数据处理,51单片机内部设置了一个堆栈指针SP。
特殊功能寄存器:专用于控制、管理片内算术逻辑部件等功能模块工作,用户编程时可以直接给特殊功能寄存器设定值。51单片机内部有包括PC在内19个特殊功能寄存器,如下所示:
CPU专用寄存器:累加器A(E0H),寄存器B(F0H),程序状态寄存器PSW(D0H),堆栈寄存器SP(81H),数据指针DPTR(82H、83H)
51单片机内部RAM空间不够时候,就通过总线来扩展片外ram,最多可以扩展64KB.