实例解读51单片机学习与应用-解剖单片机_第1页
实例解读51单片机学习与应用-解剖单片机_第2页
实例解读51单片机学习与应用-解剖单片机_第3页
实例解读51单片机学习与应用-解剖单片机_第4页
实例解读51单片机学习与应用-解剖单片机_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实例解读51单片机学习与应用-解剖单片机全文共38页,当前为第1页。实例解读51单片机学习与应用-解剖单片机全文共38页,当前为第2页。实例解读51单片机学习与应用-解剖单片机全文共38页,当前为第3页。实例解读51单片机学习与应用-解剖单片机全文共38页,当前为第4页。实例解读51单片机学习与应用-解剖单片机全文共38页,当前为第5页。实例解读51单片机学习与应用-解剖单片机全文共38页,当前为第6页。实例解读51单片机学习与应用-解剖单片机全文共38页,当前为第7页。第7章解剖单片机7.2.1从I/O口到内部结构8可把整个P1口都抽象出一个结构框图,如图示,其中把8位I/O口的独立结构抽象到了P1口锁存器和P1口驱动两个方框中,这与图7-1所示的P0、P1、P2、P3口结构是一致的。由于I/O口都是双向的,所有的数据线都使用双向箭头。实例解读51单片机学习与应用-解剖单片机全文共38页,当前为第8页。第7章解剖单片机7.2.2数据在内部交换9举例:RAM是单片机的随机访问存储器,用于存储运行过程中的数据。假设RAM中地址30H上存储了数据“3CH”,现在单片机执行指令“MOVA,30H”,之后,RAM中地址30H上的数据3CH“跑”到总线上,而累加器A根据指令要求,从总线上接收这个数据,执行完毕后,A=3CH。实例解读51单片机学习与应用-解剖单片机全文共38页,当前为第9页。第7章解剖单片机7.2.3算术逻辑单元(ALU)10ALU为“进行算术运算和逻辑运算的处理单元”。它能进行加、减法等算术运算,也能做与、或、异或等逻辑运算。ALU就是单片机的“CPU”,ALU的输入端A和B,它们的数据都来自总线,经过ALU运算后,结果通过R又输出到总线上。在运算过程中,ALU通过输出D向程序状态字PSW输出状态,PSW会随着ALU的运算发生相应的变化。如执行加法指令ADD时,当最高位有进位时,PSW的进位标志C就被置1,这都归功于ALU通过D向PSW的C位输出高电平。实例解读51单片机学习与应用-解剖单片机全文共38页,当前为第10页。第7章解剖单片机7.3■

单片机的程序存储器7.3.1整体结构11实例解读51单片机学习与应用-解剖单片机全文共38页,当前为第11页。第7章解剖单片机7.3.2程序下载到哪里?12以.HEX为后缀的执行代码文件可通过下载线下载到单片机中(4.4节)。如果用记事本打开执行代码文件会得到一串十六进制数,其中包含了每条指令的执行代码。比如指令“MOVA,#88H”执行代码为“74”、“88”,其他指令都可从附录C中找到相应的执行代码。执行代码通过下载线下载到了单片机的片内ROM中。因为片内ROM中下载的是程序,所以也称这个片内ROM为片内程序存储器。实例解读51单片机学习与应用-解剖单片机全文共38页,当前为第12页。第7章解剖单片机7.3.3片内程序存储器13AT89S51单片机的片内程序存储器容量为4Kbytes,即4×1024=4096bytes。

这4096bytes片内程序存储器可用地址0000H~0FFFH来指向。在我们通过下载线往单片机下载程序时,执行代码将从0000H开始,被依次存储到单片机中。如图示的执行代码,存储到0000H里的是74H,即“01110100”;0001H里的是88H,即“10001000”。按照这种方法直到程序全部下载完毕,根据程序的长短不同,程序存储器被占用的空间多少也就不同。实例解读51单片机学习与应用-解剖单片机全文共38页,当前为第13页。第7章解剖单片机7.3.4程序计数器PC14程序计数器PC,它用于指示单片机下一条将要执行的代码的地址。当单片机上电复位时,PC=0000H,即指向程序存储器中的0000H,单片机就把0000H上的代码取出执行。之后PC自动增加1,变成0001H,如图示,接着单片机就执行0001H地址上的代码。实例解读51单片机学习与应用-解剖单片机全文共38页,当前为第14页。第7章解剖单片机7.3.4程序计数器PC15由于程序计数器PC是个两个字节(16位)的寄存器,于是受PC的制约,AT89S51单片机最大的寻址范围是0000H~FFFFH,共64Kbytes。也就是说,除了AT89S51单片机片内的4Kbytes程序存储器(地址0000H~0FFFH)外,单片机能寻址的外部扩展的程序存储器空间最大为64Kbytes-4Kbytes=60Kbytes,即地址1000H~FFFFH。实例解读51单片机学习与应用-解剖单片机全文共38页,当前为第15页。第7章解剖单片机7.3.5是片内还是片外程序存储器?16当

接高电平时,单片机复位时读取片内程序存储器中的程序,即从PC=0000H开始,依次读取0000H~0FFFH上的程序。当PC增加到0FFFH时,PC再增加1等于1000H,单片机将自动转到片外程序存储器上执行其中的程序。而当

接低电平时,单片机则完全读取片外程序存储器中的程序,即从片外程序存储器中的0000H开始,依次读取程序来执行。由于受到程序计数器PC的位数限制,读取片内或片外程序存储器的最大地址范围为0000H~FFFFH。实例解读51单片机学习与应用-解剖单片机全文共38页,当前为第16页。第7章解剖单片机7.4■

单片机的数据存储器7.4.1片内数据存储器17单片机的数据存储器也有片内和片外之分。片内数据存储器就是单片机中原有的数据存储器,即片内RAM。片内数据存储器可分成三个部分:工作寄存器区、位寻址区、开放区。这三个区都可用来保存单片机运行过程所产生的数据。但片内数据存储器是一个RAM,即随机访问存储器,在掉电后其中的数据将会丢失。实例解读51单片机学习与应用-解剖单片机全文共38页,当前为第17页。第7章解剖单片机7.4.1片内数据存储器18单片机的128×8-bit的片内数据存储器只有其中的20H~7FH共96个字节(开放区+位寻址区)给我们使用的,而00H~1FH则是工作寄存器区,一般通过工作寄存器R0~R7来使用。AT89S51单片机最大的数据存储器(片内+片外)寻址范围也为0000H~FFFFH,共64Kbytes的空间。实例解读51单片机学习与应用-解剖单片机全文共38页,当前为第18页。第7章解剖单片机7.4.2工作寄存器区(00H~1FH)19工作寄存器共有8个,分别为R0、R1、R2、R3、R4、R5、R6、R7,前面有许多程序已经涉及工作寄存器。这8个工作寄存器可以用来装载1个字节长度的数据,在程序中可视为一个变量来使用,常常用来作为计数值、显示值等。指令“MOVR0,#24H”,把立即数24H装载到工作寄存器R0中。实例解读51单片机学习与应用-解剖单片机全文共38页,当前为第19页。第7章解剖单片机7.4.2工作寄存器区(00H~1FH)20工作寄存器R0~R7指向片内数据存储器中的地址,当单片机上电复位时,R0~R7映射片内数据存储器的00H~07H,即第0组。执行指令“MOVR0,#24H”,立即数24H装载到R0,实际上被装载到00H地址空间上。执行“MOVR5,#3FH”,那R5映射的片内数据存储器05H地址上即被装载3FH。实例解读51单片机学习与应用-解剖单片机全文共38页,当前为第20页。第7章解剖单片机7.4.2工作寄存器区(00H~1FH)21工作寄存器R0~R7除了映射片内数据存储器的地址00H~07H外,还可以映射向其余的地址08H~1FH。工作寄存器可用不同组别来称呼。实例解读51单片机学习与应用-解剖单片机全文共38页,当前为第21页。第7章解剖单片机7.4.2工作寄存器区(00H~1FH)22AT89551单片机上电复位时工作寄存器默认的组别是第0组,即R0~R7映射00H~07H。如果想改变当前程序使用的工作寄存器组别,可以通过更改程序状态字PSW中的第3位(RS0)和第4位(RS1)。实例解读51单片机学习与应用-解剖单片机全文共38页,当前为第22页。第7章解剖单片机7.4.3位寻址区(20H~2FH)23片内数据存储器的20H~2FH(共16个字节)为位寻址区,这16个字节共有16×8=128位的空间可进行位寻址。位寻址的意思是可对某一位单独进行操作,比如指令SETB可让位寻址区的任何一位置1,指令CLR可清0位寻址区的任何一位。实例解读51单片机学习与应用-解剖单片机全文共38页,当前为第23页。第7章解剖单片机7.4.3位寻址区(20H~2FH)24在使用位寻址区时,并不是直接操作20H~2FH这16个地址,而是用图示的映射地址来完成。假如程序中需要把20H上的B0位清0,就需要操作20H上的B0位所映射的地址——00H,于是指令可设计为:“CLR 00H”。再如想把2AH上的B4位置1,指令则为“SETB 54H”。实例解读51单片机学习与应用-解剖单片机全文共38页,当前为第24页。第7章解剖单片机7.4.4开放区(30H~7FH)25片内数据存储器的地址30H~7FH是开放给用户使用的空间,用户可以在这段空间里存储单片机运行时产生的数据,也可以读取存储的数据到工作寄存器、累加器等中。例如以下指令实现将累加器A的数据载入33H上,执行过后(33H)=8FH。实例解读51单片机学习与应用-解剖单片机全文共38页,当前为第25页。第7章解剖单片机7.5■

单片机的特殊功能寄存器7.5.1特殊功能寄存器分布图26AT89S51单片机共有26个特殊功能寄存器,位于地址80H~0FFH上。其中有前面使用过的累加器A、程序状态字PSW、P0~P3口等。实例解读51单片机学习与应用-解剖单片机全文共38页,当前为第26页。第7章解剖单片机7.5.2特殊功能寄存器的功能27AT89S51单片机多个内部功能模块如中断控制、Timer0/1、串行口等都由特殊功能寄存器控制。每个特殊功能寄存器的长度都是1个字节,它们的详细介绍将在随后的章节中详细展开。实例解读51单片机学习与应用-解剖单片机全文共38页,当前为第27页。第7章解剖单片机7.5.3特殊功能寄存器的字节操作28操作特殊功能寄存器寄存器的过程,实际就是控制单片机充分发挥自身功能的过程。例如指令“MOVP1,#00H”,这条指令把立即数00H从P1口送出去。P1也是特殊功能寄存器的一份子,它的地址为90H。所以指令“MOVP1,#00H”就是对特殊功能寄存器的操作,会让特殊功能寄存器区的(90H)=00H。以上这种操作我们称为字节操作,因为在执行“MOVP1,#00H”时,P1就像一个符号,实际上立即数是送到P1对应的特殊功能寄存器地址空间上,也就是90H。所以,这和我们往片内数据存储器的开放区某一个地址装载1个字节的数据的过程是一样的。实例解读51单片机学习与应用-解剖单片机全文共38页,当前为第28页。第7章解剖单片机7.5.4特殊功能寄存器的位操作29某些特殊功能寄存器还支持位操作,比较常用的是置1指令“SETB”和清0指令“CLR”。例如指令“CLRP2.0”将P2.0清0。执行这条指令后,只有P2.0=0,之相连的发光二极管点亮。而P2.1~P2.7仍然保持原来的状态。支持位操作的特殊功能寄存器:P0(P0口锁存器) P1(P1口锁存器)P2(P2口锁存器) P3(P3口锁存器)ACC(累加器) B(B寄存器)PSW(程序状态字寄存器) TCON(定时/计数器控制寄存器)SCON(串行口控制寄存器) IE(中断使能寄存器)IP(中断优先控制寄存器)实例解读51单片机学习与应用-解剖单片机全文共38页,当前为第29页。第7章解剖单片机7.6■

应用体验——用取表方式实现流水灯7.6.1取表法30要实现流水灯需要在P2口按图示依次输出每一行数据,如果用十六进制表示每一行数据为:FEH、FDH、FBH、F7H、EFH、DFH、BFH、7FH。取表法的思路就是把这些数据预先放在一个数据表中,作为程序的一部分。单片机执行时每次取一个数据从P2口送出,延时后再取下一个数据送出,这样就可以从发光二极管上看到流水灯的效果了。实例解读51单片机学习与应用-解剖单片机全文共38页,当前为第30页。第7章解剖单片机7.6.1取表法31实例解读51单片机学习与应用-解剖单片机全文共

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论