存储器单元的检查精选PPT.ppt
第1页,讲稿共49张,创作于星期日单片机的存储器有哪些类型?单片机存储器的地址空间如何分配?如何对不同的存储器单元空间进行检查?F涉及问题第2页,讲稿共49张,创作于星期日 单片机的存储器采用哈佛体系结构。程序存储器和数据存储器互相独立,有各自的寻址机构和寻址方式。通用微机的存储器结构采用普林斯顿体系结构。只有一个存储器逻辑空间,可随意安排ROM或RAM,访问时用同一种指令。参见教材单片机的C51应用程序设计第 5、6 页 第3页,讲稿共49张,创作于星期日内部存储资源外部扩展存储资源 片内程序存储器 片外程序存储器 片内数据存储器 片外数据存储器从物理地址看分两大类、4个存储地址空间:参见教材单片机的C51应用程序设计第 6 页 第4页,讲稿共49张,创作于星期日程序存储器用于存放程序及表格常数。在单片机应用时,只能读,不能写。数据存储器用于存放程序运行所需要的给定参数和运行结果。在单片机应用时,既能读,又能写。第5页,讲稿共49张,创作于星期日Keil C51的Memory窗口能显示各种存储区的内容。参见教材单片机的C51应用程序设计第 316 页 不同的单片机,存储器的地址空间有所不同。第6页,讲稿共49张,创作于星期日l l 程序存储器程序存储器参见教材单片机的C51应用程序设计第 5 页、第 59 页 以8051为例 存储容量:64KB 地址范围:0000HFFFFH第7页,讲稿共49张,创作于星期日 片内与片外程序存储器的选择 EA引脚接高电平-片内以8051为例参见教材单片机的C51应用程序设计第 5 页、第 59、60 页 第8页,讲稿共49张,创作于星期日 EA引脚接低电平-片外以8051为例参见教材单片机的C51应用程序设计第 5 页、第 60 页 第9页,讲稿共49张,创作于星期日 程序存储器低端的几个特殊单元 以8051为例参见教材单片机的C51应用程序设计第 6 页 第10页,讲稿共49张,创作于星期日1、打开实验例程实验1C51 工程文件。2、编译。3、调试,查看反汇编窗口、程序存储器的情况。4、运行,查看反汇编窗口、P1口的情况。思考:1、反汇编窗口中出现了几种语言?2、程序存储器中存放的是什么?3、能修改程序程序存储器的内容吗?F演示第11页,讲稿共49张,创作于星期日反汇编窗口(Dissambly Window)点击ViewDissambly Window可以打开反汇编窗口。该窗口可以显示反汇编后的代码、源程序和相应反汇编代码的混合代码。可以在该窗口进行在线汇编、利用该窗口跟踪已找行的代码、在该窗口按汇编代码的方式单步执行。Keil C51中的参见教材单片机的C51应用程序设计第 314页 第12页,讲稿共49张,创作于星期日存储器观察窗口(Memory Window)在调试状态下,选择主菜单View下的Memory Window选项,可打开或关闭存储器观察窗口。存储器观察窗口分4页,分别是Memory#1 Memory#4。每一页都可以显示程序存储器、内部数据存储器和外部数据存储器的值。参见教材单片机的C51应用程序设计第 316 页 Keil C51中的第13页,讲稿共49张,创作于星期日通过在Address后的编缉框内输入“字母:数字”即可显示相应内存值,其中字母可以是C、D、I、X、S。例如:C:30 C:0X500 C:1000H 字符存储空间C片内及片外ROMD直接寻址的片内RAMI间接寻址的片内RAMX片外RAMS系统占用空间第14页,讲稿共49张,创作于星期日在存储器窗口的地址栏处输入C:0000H后回车,则可以观看所有单片机片内程序存储器从地址0开始的单元内容,即查看程序的二进制代码。下面用横线画出来的部分就是已经编辑的源程序转化成的机器语言的十六进制数(对应的机器码)。第15页,讲稿共49张,创作于星期日如果在存储器窗口的地址栏处输入D:30H后回车,则可以观看单片机片内数据存储器30H单元开始的内容。如果在存储器窗口的地址栏处输入I:10后回车,显示10号单元开始的内部数据存储器的内容。该部分是间接寻址方式。如果在存储器窗口的地址栏处输入X:0 x1000后回车,显示从1000H单元开始的外部数据存储器的内容。第16页,讲稿共49张,创作于星期日p第一部份又有多个选择项,其中Decimal项是一个开关,如果选中该项,则窗口中的值将以十进制的形式显示,否则按默认的十六进制方式显示。pUnsigned和Signed则分别代表无符号形式和有符号形式。pUnsigned和Signed后分别有三个选项。Char:以单字节方式显示。Int:将相邻双字节组成整型数方式显示。Long:将相邻四字节组成长整型方式显示。第17页,讲稿共49张,创作于星期日p究竟从哪一个单元开始的相邻单元则与你的设置有关。以整型为例,如果你输入的是I:0,那么00H 和01H单元的内容将会组成一个整型数;如果你输入的是I:1,01H和02H单元的内容全组成一个整型数,以此类推。p第三部份的Modify Memory at X:xx 用于更改鼠标处的内存单元值,选中该项即出现一个对话框,可以在这个对话框内输入要修改的内容。第18页,讲稿共49张,创作于星期日这些窗口的显示值可以以各种形式显示,如十进制、十六进制、字符型等,改变显示方式的方法是点鼠标右键,在弹出的快捷菜单中选择。该菜单用分隔条分成三部份,其中第一部份与第二部份的三个选项为同一级别。选中第一部份的任一选项,内容将以整数形式显示。选中第二部份的Ascii项则将以字符型式显示。选中Float项将相邻四字节组成的浮点数形式显示。选中Double项则将相邻8字节组成双精度形式显示。第19页,讲稿共49张,创作于星期日1、打开实验例程实验1 ASM 工程文件,编译调试,查看程序存储器的情况,说明程序代码存放的地址。2、打开实验例程实验2 ASM 工程文件。修改工程设置,选择软件仿真。编译调试,查看程序存储器的情况,说明程序代码存放的地址。3、在第2步的基础上,运行程序。如有问题,查找原因,修改程序,直至能够运行。思考:第一条指令要放在程序存储器的哪个地方?I我来演示第20页,讲稿共49张,创作于星期日l l 数据存储器数据存储器参见教材单片机的C51应用程序设计第 5 页、第 60 页 以8051为例 存储容量:256B 地址范围:00HFFH 存储容量:64KB 地址范围:0000HFFFFH片内、片外数据存储器独立编址。第21页,讲稿共49张,创作于星期日 工作寄存器区:共32个字节,分成4个工作寄存器组,每组8个单元。寄存器0组:地址00H07H;寄存器1组:地址08H0FH;寄存器2组:地址10H17H;寄存器3组:地址18H1FH。以8051为例参见教材单片机的C51应用程序设计第 5 页、第 60 页 第22页,讲稿共49张,创作于星期日当前工作寄存器组当前工作寄存器组选择选择 PSW寄存器中:以8051为例参见教材单片机的C51应用程序设计第 5 页、第 60、61页 第23页,讲稿共49张,创作于星期日 位寻址区:共位寻址区:共16个单元,个单元,128位位以8051为例第24页,讲稿共49张,创作于星期日 通用RAM区 30H7FH,共80字节 数据缓冲 堆栈一般设置在这个区域 先进后出,后进先出 堆栈指针SP指示栈顶 复位时SP=07H 系统初始化通常重新设置以8051为例参见教材单片机的C51应用程序设计第 8页、第 61页 第25页,讲稿共49张,创作于星期日与运算器相关3个 ACC B PSW与定时/计数器相关6个 TH0,TL0 TH1,TL1 TMOD TCON指针类3个 SP DPH,DPL与口相关7个 P0,P1,P2,P3 SBUF SCON PCON与中断相关2个 IE IP 特殊功能寄存器特殊功能寄存器 SFR(Special Function Register)51系列单片机共21个SFR 单片机中各功能部件所对应的寄存器参见教材单片机的C51应用程序设计第 7页、第 64、65页 第26页,讲稿共49张,创作于星期日序号序号标识标识符符名称名称字字节节地址地址位地址位地址1ACC累加器累加器E0HE0HE7H2BB B寄存器寄存器F0HF0HF7H3PSW程序状程序状态态字字D0HD0HD7H4SP堆堆栈栈指指针针81H5DPH数据指数据指针针(高(高8 8位)位)83H6DPL数据指数据指针针(低(低8 8位)位)82H7P0P0P0口口80H80H87H8P1P1P1口口90H90H97H9P2P2P2口口A0HA0HA7H10P3P3P3口口B0HB0HB7H11IP中断中断优优先先级级控制寄存器控制寄存器B8HB8HBFH12IE中断允中断允许许控制寄存器控制寄存器A8HA8HAFH13TMOD定定时时器器/计计数器方式控制寄存器数器方式控制寄存器89H第27页,讲稿共49张,创作于星期日14TCON定定时时器器/计计数器控制寄存器数器控制寄存器88H88H8FH15T2CON定定时时器器/计计数器数器2 2控制寄存器控制寄存器C8HC8HCFH16TH0定定时时器器/计计数器数器0 0(高字(高字节节)8CH17TL0定定时时器器/计计数器数器0 0(低字(低字节节)8AH18TH1定定时时器器/计计数器数器1 1(高字(高字节节)8DH19TL1定定时时器器/计计数器数器1 1(低字(低字节节)8BH20TH2定定时时器器/计计数器数器2 2(高字(高字节节)CDH21TL2定定时时器器/计计数器数器2 2(低字(低字节节)CCH22RLDH定定时时器器/计计数器数器2 2重自重自动动装装载载(高字(高字节节)CBH23RLDL定定时时器器/计计数器数器2 2重自重自动动装装载载(低字(低字节节)CAH24SCON串行口控制寄存器串行口控制寄存器98H98H9FH25SBUF串行数据串行数据缓缓冲器冲器99H26PCON电电源控制及波特率源控制及波特率选择选择寄存器寄存器97H第28页,讲稿共49张,创作于星期日 与运算器相关的寄存器(3个)1、累加器ACC,8位。提供操作数,存结果。2、寄存器B,8位。主要用于乘、除法运算。3、程序状态字寄存器PSW,8位。P:奇偶标志位。ACC中结果有奇数个1时P=1,否则P=0。OV:溢出标志位。有溢出时OV=1,否则OV=0;RS1、RS0:当前工作寄存器组选择位;F0:用户标志位,由用户自己定义;AC:辅助进位、借位标志;CY:进位、借位标志。有进位、借位时 CY=1,否则CY=0;D7D6D5D4D3D2D1D0CyACF0RS1RS0OV/P第29页,讲稿共49张,创作于星期日寄存器观察窗口(Project Window)在调试状态下,选择主菜单View下的Project Window选项,可打开或关闭工程项目窗口。工程项目窗口中的寄存器页(Regs)给出了当前的工作寄存器组(r0r7)和系统寄存器的值。系统寄存器组有一些是实际存在的寄存器如a、b、sp、dptr、pc、psw等特殊寄存器,有一些是实际中并不存在或虽然存在却不能对其操作的如PC、Status等。Keil C51中的第30页,讲稿共49张,创作于星期日寄存器及其存储器映射如下图:第31页,讲稿共49张,创作于星期日p每当程序中执行到对某寄存器的操作时,该寄存器会以反色(蓝底白字)显示。p用鼠标单击然后按下F2键,即可修改该值。p在执行程序的过程中可以看到,这些值会随着程序的执行发生相应的变化。第32页,讲稿共49张,创作于星期日思考:1、R2共变化了几次?R2的这几个数值分别对应哪几个存储单元?2、通过什么可以切换当前工作寄存器组?切换当前工作寄存器组有什么用处?I我来演示 ORG 0000H MOV R2,#30H MOV PSW,#08H MOV R2,#45H MOV PSW,#10H MOV R2,#91H MOV PSW,#18H MOV R2,#0C2H END 打开一个含汇编语言文件的工程项目,修改程序,编译通过。调试,单步运行,查看R2、PSW、片内数据存储器的变化。第33页,讲稿共49张,创作于星期日思考:1、单片机的位寻址区主要有两大块,它们分别为哪两大部分?2、位地址与字节地址是如何区分的?I我来演示 ORG 0000H CPL 00H CPL 7FH CPL 80H CPL P0.1 CPL C MOV 20H,#34H MOV 20H,C END 打开一个含汇编语言文件的工程项目,修改程序,编译,调试,单步运行,查看并讲述片内数据存储器、P0口的变化。第34页,讲稿共49张,创作于星期日思考:1、SP怎么变化?2、数据的传送有什么规律?I我来演示 ORG 0000HMOV SP,#60HPUSH ACCPUSH BPUSH 30HPUSH 31HPOP 40HPOP 41H POP 42H POP 43HEND 打开一个含汇编语言文件的工程项目,修改程序,编译,调试,单步运行,修改变量值,查看SP、ACC、B、片内数据存储器的变化。第35页,讲稿共49张,创作于星期日第5次 作业 教材单片机的C51应用程序设计P39 8、8051内部RAM低128字节可分成几个区域?其中通用寄存器区的字节地址范围为多少?如何实现寄存器组的切换?可位寻址区的字节地址和位地址范围分别为多少?第36页,讲稿共49张,创作于星期日实验二实验科目:单片机应用及C51编程实验名称:存储器单元的检查第37页,讲稿共49张,创作于星期日一、实验目的 学习利用Keil C51软件对51单片机内RAM、片外RAM、片内外ROM及特殊功能寄存器等不同存储器单元空间的检查方法,加深对单片机存储器地址空间分配的理解。第38页,讲稿共49张,创作于星期日二、实验内容 通过单步执行简单的汇编程序,利用Keil C51软件提供的寄存器窗口、内存窗口、片内ROM及片外ROM窗口观察各存储器空间的内容,掌握不同空间的不同检查方法。第39页,讲稿共49张,创作于星期日三、仪器设备计算机Keil uVision3 软件第40页,讲稿共49张,创作于星期日四、实验步骤一、基本任务1、建立一个文件夹(以自己的学号姓名命名),建立一个新工程(以姓名拼音命名),在工程中新建一个汇编程序文件(以姓名拼音命名),并把文件添加到当前工程中。第41页,讲稿共49张,创作于星期日2、输入下列程序。3、编译,修改错误,直至通过。ORG 0000H MOV A,#34H ADD A,#34H MOV R7,A ADD A,#34H MOV 34H,A MOV B,A MOV DPTR,#1000H MOVX DPTR,A MOV DPTR,#0000H MOV A,#01H MOVC A,A+DPTR MOV P1,A END 第42页,讲稿共49张,创作于星期日4、调试,查看程序存储器的内容。5、单步运行,查看工作寄存器、特殊寄存器、片内数据存储器、片外数据存储器的内容。6、更改工作寄存器、SFR、片内RAM、片外RAM的内容。7、单击“RST”按钮让CPU复位。8、全速运行。第43页,讲稿共49张,创作于星期日二、提高任务1、移除除工程中的原文件,添加新文件。2、输入下列程序。3、编译,调试,查看程序存储器的内容。4、单步运行,查看SP、R2、片内RAM的变化。ORG 0000HMOV SP,#64HMOV R2,#30HPUSH 02HMOV PSW,#08HMOV R2,#45HPUSH 0AHMOV PSW,#10HMOV R2,#91HPUSH 12HMOV PSW,#18HMOV R2,#0C2HPUSH 1AHPOP 30HPOP 31HPOP 32HPOP 33HEND第44页,讲稿共49张,创作于星期日五、运行结果记录一、基本任务1、程序存储器数据记录表分析:程序代码存放在哪里?在运行过程中,有没有变化?地址数据地址数据第45页,讲稿共49张,创作于星期日2、单步运行时数据变化记录表分析:数据存储器中包含哪些部分?在运行过程中,有没有变化?PC有什么变化规律?步数R7ABDPTRPCPSWP1片内34H片外1000H初始值第1步第2步第3步第4步第5步第6步第7步第8步第9步第10步第11步第12步第46页,讲稿共49张,创作于星期日3、复位再运行时数据变化记录表分析:复位后,PC=?SP=?P0、P1、P2、P3=?其他SFR的情况?片内RAM的情况?R7ABDPTRPCPSWP1片内34H片外1000H修改值复位后运行后SPR0R2R3P0P2P3片内07H片外1002H修改值复位后运行后第47页,讲稿共49张,创作于星期日二、提高任务步数PSWSPR2的内容R2的地址改变的RAM地址改变的RAM内容分析初始值第1步第2步第3步第4步第5步第6步第7步第8步第9步第10步第11步第12步第13步第14步第15步第16步第48页,讲稿共49张,创作于星期日感感谢谢大大家家观观看看第49页,讲稿共49张,创作于星期日