从物理地址空间看,MCS-51单片机有4个存储器地址空间,即片内程序存储器、片外程序存储器、片内数据存储器和片外数据存储器,其结构如图2-3所示。内部程序存储器的大小根据单片机型号的不同分别有1、2、4、8、32、64KB。在MCS-51单片机系列中,内、外部程序存储器是统一编址的,故内、外程序存储器存储空间之和最大为64KB。......
2023-11-17
(1)Keil C软件的使用方法
1)Keil C软件的安装及开发环境的设置;
2)编译、连接的方法;
3)调试命令、在线汇编及断点设置;
4)利用输出窗口(Output Windows)、观察窗口(Watch&Call Stack Windows)、存储器窗口(Memory Window)、反汇编窗口(Dissambly Window)、串行窗口(Serial Window)等调试工具进行调试;
(2)指令的基本概念
1)机器指令:用二进制数0、1表示的命令代码,常以十六进制表示。
2)机器语言:由机器指令描述的程序语言。
3)助记符指令:用字母和十六进制数代替机器指令形成的符号指令。
4)助记符语言:由助记符指令形成的程序语言,又称汇编语言。
(3)MCS-51单片机汇编语言指令格式
指令格式如下:
[标号:]操作码[操作数(目的操作数,源操作数)][;注释]
其中:
1)标号:称符号地址,代表该指令第1字节所在的地址,可有可无。
2)操作码:规定了指令将要干什么,必不可少。
3)操作数:表示参与运算的数或数的地址,可有可无。
4)注释:必须以“;”开始,可有可无。
(4)指令组成4要素和功能3要素
1)组成4要素:标号、操作码、操作数、注释。
2)功能3要素:机器码、字节数、机器周期。
(5)操作数
操作数按硬件物理单元地址可分为立即数、寄存器、存储单元RAM(寄存器除外)/ROM、位、I/O接口。
(6)数据传送指令
1)传送指令数量繁多。这是由于其复杂的存储器结构造成的。存储器主要分为内RAM、ROM和外RAM、ROM,如图4-1所示。要想学好这部分内容,就要将软件和硬件结合起来理解。
图4-1 存储单元的传送指令
①程序运行时内/外ROM同一地址单元只有一个起作用,因此内部程序存储器和外部程序存储器传送指令不像内部数据存储器和外部数据存储器分开用MOV和MOVX传送,而统一用MOVC指令传送。
②由于数据存储器的同一地址能同时指向内部或外部两个RAM单元,因此内部RAM和外部RAM的传送指令不同,分别为MOV和MOVX。(www.chuimin.cn)
③片外RAM或I/O芯片、程序存储器要和片内RAM之间传递数据必须通过A。
④片外RAM单元与片外RAM单元之间、地址不同的两个程序存储器单元之间、片外RAM单元与程序存储器单元之间,不能直接交换数据。
⑤数据传送指令不影响标志位C、AC和OV。POP PSW或MOV PSW,#data可能使某些标志位发生变化。
⑥源操作数寻址方式可分为寄存器寻址、寄存器间址、直接寻址、立即寻址和寄存器变址。目的操作数寻址方式可分为寄存器寻址、寄存器间址和直接寻址。
2)传送指令中的内部存储器单元如图4-2所示。由图4-2可见,以A、direct、@Ri、Rn、#data为顶点组成了五边形边边俱在,而由它们组成的内五角星形缺少Rn和@Ri之间的连接,因此:
①除Rn和@Ri外,内部单元之间可以传送数据。
②仅#data为单向传送数据。
③仅direct能自身传递数据。
④#data指向的数据和direct指向的地址在程序运行中不能改变。而Rn和@Ri在程序运行中通过指令能够改变,因此它们的使用非常灵活,在某些程序(如数据串操作)中应用较多。
⑤仅DPTR是16位的,其余都是8位的。DPTR是对外部存储器访问时的指针(注意体会软件依赖硬件,DPTR是由硬件存储器寻址需要而产生的)。PC也是16位的,但不能用MOV指令访问。
3)由图4-2可以看出单片机内部RAM非常复杂。结构复杂必使使用简单。#data、direct、Rn、@Ri身兼不同属性,见表4-1。程序设计中数据块在存储器中的移动非常频繁,因此数据和地址在程序运行中具有可变的属性显得非常重要,否则循环程序实现的数据块传递将不得不用固定地址和数据的指令重复数十遍才能完成。
图4-2 传送指令中的内部存储器单元
表4-1 寻址方式总结
(7)算术运算类指令
注意算术运算类指令对PSW的影响。
(8)逻辑操作与移位指令
对于逻辑操作与移位指令,如果direct是51系列单片机的某个并行口P0~P3(这里的端口是指并行口中具有端口地址的锁存器或寄存器,下同),则指令将以“读→修改→写”模式完成逻辑运算。
(9)控制转移指令
SJMP、AJMP、LJMP指令的功能基本相同,但其长度却不相同,见表4-2。同样,ACALL和LCALL指令的功能基本相同,但其长度也不相同,见表4-3。也许读者会想:有LJMP、LCALL这两条指令不就足够了吗?这很可能是计算机发展初期速度不够快,内存很贵,因此程序员编程时尽量选用字节数较少、实时性高的指令。如今,计算机的速度越来越快,尽管上述指令功能有些“重叠”,但它们像“化石”一样,仍保留在计算机语言中,也算是计算机硬件发展的历史痕迹吧!
表4-2 SJMP、AJMP、LJMP长度和周期的比较
表4-3 ACALL、LCALL长度和周期的比较
(10)位操作指令
51系列单片机中特有布尔处理器,通过51系列单片机的位操作指令进行逻辑设计,可把逻辑表达式直接变换成软件执行,方法简便,免去了过多的数据往返传送、指令屏蔽,大大简化了编程,节省存储器空间,加快了处理速度,还可实现复杂的组合逻辑处理功能。所有这些,特别适合于某些数据采集、实时测控等应用系统。
有关51单片机案例笔记的文章
从物理地址空间看,MCS-51单片机有4个存储器地址空间,即片内程序存储器、片外程序存储器、片内数据存储器和片外数据存储器,其结构如图2-3所示。内部程序存储器的大小根据单片机型号的不同分别有1、2、4、8、32、64KB。在MCS-51单片机系列中,内、外部程序存储器是统一编址的,故内、外程序存储器存储空间之和最大为64KB。......
2023-11-17
图1-2 8051单片机框图图1-2中4 KB的ROM存储器部分用EPROM替换就成为8751的结构图;图1-2中去掉ROM部分就成为8031的结构图。图1-4给出了8051单片机的取指和执行指令的定时关系。......
2023-11-17
8279的管脚和内部结构如图8-28所示。由图可知,8279主要由以下几个部分构成。图8-28键盘和显示接口芯片8279结构框图1.I/O控制器和数据缓冲器数据缓冲器是双向数据缓冲器,连接内、外总线,用于传送CPU与8279之间的命令和数据。显示RAM用来存储显示数据,容量为16×8位,在显示过程中,显示数据轮流从显示寄存器输出。2.8279的命令字格式8279的命令字格式如表8-6所示。......
2023-11-17
程序存储器以程序计数器PC作为地址指针,通过16位地址总线,可寻址的地址空间为64KB,片内/外统一编址。根据单片机的类型及引脚的电平,CPU可从内部也可从外部程序存储器开始执行。而当EA=0时,内部程序存储器被忽略,程序直接从外部程序存储器的0000H开始执行。64KB程序存储器中有一些特殊的单元,在使用时应加以注意。0023H——串行口的中断服务子程序入口地址。......
2023-11-17
一种良好的程序设计规则和方法是结构化程序设计。结构化程序设计的基本思想是基于这样的考虑,即任何程序都可以用三种基本结构的组合来实现。这三种基本结构为顺序结构、分支结构和循环结构。在本章的程序讲解和编程练习中较多地使用了“延时程序”子程序,其程序结构常用的有单循环和双循环。由于前文所介绍的程序并没有对“延时程序”子程序延时时间的计算进行讲解,因此,在此结合程序的循环结构讲解延时程序的延时时间计算。......
2023-11-07
故对于8031,其内部没有用户可用的程序存储器需接地;对于8051、8751、8951单片机,其内部存在用户程序存储器,为了充分利用单片机资源,一般接高电平,如图8-12所示为8051扩展一片2716EPROM的连接方法。控制信号,程序存储器的扩展只涉及,把该信号连接到2716的引脚,用于存储器读出选通。......
2023-11-17
5)标号后边遗漏“:”。例如:建议修改为9)字母I和数字1混淆。10)创造发明不存在的汇编语言指令。例如,主程序中设定了R4=5,表示主程序循环执行5次,而其中的一个延时子程序又用到R4,使R4的值发生紊乱,造成程序无法正常执行。编写汇编语言的忠告:要养成良好的程序书写习惯,如标号对齐、参数对齐、注释对齐,这样看起来赏心悦目,也不容易出错。......
2023-10-28
表6-12 SPC3内存分配注:HW禁止超出地址范围,也就是如果用户写入或读取超出存储器末端,用户将得到一新的地址,即原地址减去400H。禁止覆盖处理器参数,在这种情况下,SPC3产生一访问中断。表6-13 内部参数锁存器分配(读)表6-14 内部参数锁存器分配(写)(续)3.组织参数用户把组织参数存储在特定的内部RAM中,用户可读也可写。......
2023-11-22
相关推荐