单片机应用技术 项目一 循环彩灯装置 第3讲 8051单片机的存储器 《单片机应用技术》精品课程组 湖北职业技术学院机电工程系
单片机应用技术 本讲主要内容 3-1. 51架构与51单片机的程序存储器 3-2. 51单片机的数据存储器 3-3. 51单片机的特殊寄存器
单片机应用技术 3.1.1 51单片机的架构
单片机应用技术 3.1.2 51单片机的存储器 ) ( 外部 K 64 RAM 数据存储器 程序存储器
单片机应用技术 关于51系列单片机的程序存储器ROM 程序存储器用于存放程序和表格等固定数据,掉电数据不丢失 3.1. 3 51单片机的程序存储器管理 关于51系列单片机的程序存储器ROM 程序存储器用于存放程序和表格等固定数据,掉电数据不丢失 每种单片机在其内部都会有0~64K容量不等的ROM 如果单片机片内ROM空间不够,可以在单片机外部扩展ROM,但建议用户尽量避免外扩ROM,51系列单片机1000多种型号,一定可以找到内部ROM容量符合要求的单片机。即便是单片机略微贵点 也值得 目前市面上的单片机ROM主要有 Flash Memory和OTP (One Time Programmable)两种,PROM、EPROM等形式的单片机已经很少见了。就开发而言Flash Memory的单片机更加合适,如ATMEL公司的AT89CXX单片机和PHILIPS公司的P89CXX单片机
单片机应用技术 3.1.3 51单片机的程序存储器管理 51系列单片机的程序存储器管理 3.1.3 51单片机的程序存储器管理 51系列单片机的程序存储器管理 每个ROM单元(byte)对应一个唯一的16bit地址编码(Address) CPU要到某个ROM单元去取指令,是通过把地址写入一个16bit的特殊功能寄存器——程序计数器PC(Program Counter)来实现,因此,51系列单片机的地址的编码范围(通常称为寻址范围): 0000 0000 0000 0000B ~ 1111 1111 1111 1111B(二进制) 0 0 0 0 H ~ F F F F H(十六进制) 0 ~ 65535 (十进制) 通常习惯说51系列单片机的ROM寻址范围是64K PC的值是CPU根据用户程序的运行流程自动装载的,它的值代表单片机下一条要执行的指令在ROM中的存放位置,用户不能直接对PC进行操作
单片机应用技术 3.1.3 51单片机的程序存储器管理 51单片机程序存储器分配 0000H :系统的启动单元 系统复位后,单片机从此处开 3.1.3 51单片机的程序存储器管理 51单片机程序存储器分配 0000H :系统的启动单元 系统复位后,单片机从此处开 始取指令开始执行 0003H :外部中断0入口地址 000BH :定时器/计数器0中断入口地址 0013H :外部中断1入口地址 001BH :定时器/计数器1中断入口地址 0023H :串行中断入口地址
单片机应用技术 3.2.1 51系列单片机的RAM结构 大多数单片机应用系统都需要片外扩展RAM,但不绝对。 51系列单片机RAM结构图
单片机应用技术 3.2.2 51单片机的数据存储器管理 51系列单片机的数据存储器管理 3.2.2 51单片机的数据存储器管理 51系列单片机的数据存储器管理 51系列单片机对数据存储器RAM的管理是通过16bit的特殊功能寄存器DPTR(Data Pointer)来实现,每个RAM单元(byte)也对应一个特定的地址编码(Address),因此,51系列单片机的地址的编码范围(通常称为寻址范围): 0000 0000 0000 0000B ~ 1111 1111 1111 1111B(二进制) 0 0 0 0 H ~ F F F F H(十六进制) 0 ~ 65535 (十进制) 因此51系列单片机的RAM寻址范围也是64K 51系列单片机ROM和RAM 的地址编码范围都是0000H~FFFFH,但由于在寻址时硬件电路上有区别,所以不会混淆。 51系列单片机中,单片机外接的接口芯片如A/D、D/A等都有互不相同的地址,这些地址都是占用单片机外部RAM 的地址编号。
单片机应用技术 3.2.2 51单片机的数据存储器管理 51系列单片机的数据存储器管理 目前的51系列单片机视型号不同内部有128-1024byte不等的RAM空间。用户最好选择合适的单片机型号,避免外扩RAM存储器。
单片机应用技术 3.2.2 51单片机的数据存储器管理 所有51单片机内部都含有低128B字节RAM和特殊功能寄存器区 低128字节 RAM 特殊功能 寄存器区 00H 7FH 80H FFH 32字节 工作寄存器区 16字节 位寻址区 00H 2FH 7FH 80字节 用户区 1FH 20H 30H
单片机应用技术 3.2.2 51单片机的数据存储器管理 标准51系列单片机的内部RAM——低128B 低端32个字节分成4个工作寄存器组,每组8个单元(R0~R7)。当前工作寄存器组的机制便于快速现场保护。 特殊功能寄存器PSW的RS1、RS0两位决定当前工作寄存器组号。 32字节 工作寄存器区 0组 00H 10H 08H 18H 1组 2组 3组 1FH 组号 RS1 RS0 R7 R6 R5 R4 R3 R2 R1 R0 07H 06H 05H 04H 03H 02H 01H 00H 1 0FH 0EH 0DH 0CH 0BH 0AH 09H 08H 2 17H 16H 15H 14H 13H 12H 11H 10H 3 1FH 1EH 1DH 1CH 1BH 1AH 19H 18H
单片机应用技术 3.2.2 51单片机的数据存储器管理 标准51系列单片机的内部RAM ——低128B 7FH 80字节 用户区 30H 32字节 工作寄存器区 16字节 位寻址区 00H 2FH 7FH 80字节 用户区 1FH 20H 30H 16字节 位寻址区
单片机应用技术 3.2.2 51单片机的数据存储器管理 1 1 标准51系列单片机的内部RAM ——低128B 3.2.2 51单片机的数据存储器管理 32字节 工作寄存器区 16字节 位寻址区 00H 2FH 7FH 80字节 用户区 1FH 20H 30H 标准51系列单片机的内部RAM ——低128B 该区域每个单元可以作为一般RAM单元整体使用。 例如:MOV 20H,#23H;将20H单元赋值为23H指令执行后: 单元中每一位也可以作为独立的可寻址位单独使用。 例如:20H单元的最低位可表示为 00H——位地址 20H.0——存储单元地址加位例如:SETB 20H;将24H单元的最低位置为1 指令执行后: 位地址 单元地址 20H 1 20H 1 24H
单片机应用技术 3.2.2 51单片机的数据存储器管理 在实际应用中,常需在此区设置堆栈。 标准51系列单片机的内部RAM ——低128B 3.2.2 51单片机的数据存储器管理 标准51系列单片机的内部RAM ——低128B 位寻址区之后的30H-7FH共80个字节为通用RAM区,也称用户区,这些单元可以作为数据缓冲器使用。这一区域的操作指令非常丰富,数据处理方便灵活。 在实际应用中,常需在此区设置堆栈。
单片机应用技术 3.2.2 51单片机的数据存储器管理 标准51系列单片机的内部RAM——堆栈 3.2.2 51单片机的数据存储器管理 标准51系列单片机的内部RAM——堆栈 堆栈——是在RAM区中划定的一个区域,对该区域RAM单元的读写操作必须遵守特定的顺序。比如先入先出,或先入后出原则。 堆栈的作用——主要用在子程序的调用过程中或作为特殊的数据交换区。 堆栈的开辟 栈顶的位置由SP(堆栈指针)寄存器指示。 复位时SP的初值为07H,在系统初始化时可以根据用户的需要重新设置。 标准8051的堆栈一般设在30H~7FH的范围内。
单片机应用技术 3.2.2 51单片机的数据存储器管理 Z Y X 入栈过程 出栈过程 PUSH x PUSH Y PUSH Z 65H 标准51系列单片机的内部RAM——堆栈 堆栈的操作 入栈过程 出栈过程 PUSH x PUSH Y PUSH Z 65H 64H 63H 62H 61H 栈底 60H 59H 内部RAM 65H 64H Z 63H Y 62H X 61H 栈底 60H 59H 内部RAM POP L POP M POP N
但不同的单片机内部特殊功能寄存器的个数是不等的。 这些特殊功能寄存器用于存放单片机中相应功能部件的控制命令、状态或数据。 单片机应用技术 3.3.1 51单片机的特殊寄存器 标准51系列单片机的内部RAM ——SFR 51单片机内部都含有128B的特殊功能寄存器区,其地址为80H—FFH。 但不同的单片机内部特殊功能寄存器的个数是不等的。 这些特殊功能寄存器用于存放单片机中相应功能部件的控制命令、状态或数据。
单片机应用技术 3.3.1 51单片机的特殊寄存器 标准51系列单片机的内部RAM —SFR 列举其中的几个: 寄存器 位地址/位名称 符号 ACC 0E0H 0E7H 0E6H 0E5H 0E4H 0E3H 0E2H 0E1H B 0F0H 0F7H 0F6H 0F5H 0F4H 0F3H 0F2H 0F1H PSW 0D0H 0D7H 0D6H 0D5H 0D4H 0D3H 0D2H 0D1H CY AC F0 RS1 RS0 OV - P DPL 82H DPH 83H
单片机应用技术 3.3.1 51单片机的特殊寄存器 标准51系列单片机的内部RAM —SFR 使用方法: 在这个存储区中,除了特殊功能寄存器之外剩余的空闲单元,用户不得使用; 必须使用直接寻址方式进行访问,可使用寄存器的名称或地址: 例如: 0E0H——累加器的地址 A——累加器的名称 只有具有位地址和位名称的寄存器才可以位寻址; 例如:0D7H——程序状态字最高位的位地址 CY——程序状态字最高位的位名称 0D0H.7——程序状态字字节地址加位 PSW.7——程序状态字字节名称加位