课件:单片机原理及接口技术.ppt_第1页
课件:单片机原理及接口技术.ppt_第2页
课件:单片机原理及接口技术.ppt_第3页
课件:单片机原理及接口技术.ppt_第4页
课件:单片机原理及接口技术.ppt_第5页
已阅读5页,还剩364页未读 继续免费阅读

下载本文档

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

文档简介

单片机原理与接口技术,教材说明,“十五”规划教材 单片机原理及接口技术 -胡建 主编 刘玉宾 朱焕立 等编著 2005年 机械工业出版社,参考资料,1, 单片机实用教程 -胡健 兵器工业出版社 2001 2,单片机应用程序设计基础 -周行慈 北京航空航天大学出版社 1991 3,单片机基础 -李广弟 北京航空航天大学出版社 2001 4,单片机原理及接口技术 -李朝青 北京航空航天大学出版社 1999,本课主要内容及课时安排,总讲课课时 学时 第一章:计算机基础知识 ( 0课时) 主要讲述计算机的基础知识,包括各种数制相互转换、带符号二进制的编码机器运算;单片机的概念、发展状况、应用领域及嵌入式系统的概念 第二章:MCS-51单片机结构和原理 (8课时) 介绍51单片机内部结构,重点介绍单片机的存储组织、并行IO接口、时钟电路及典型CPU时序,最后介绍单片机的工作方式 第三章:MCS-51单片机的指令系统和C51语言(8课时) 51单片机的111条指令的分类、寻址方式、伪指令及使用中的注意事项 第四章:汇编语言程序设计基础 (0课时) 介绍汇编语言程序结构,汇编语言的编辑与汇编,第五章: MCS-51中断系统 (3 课时) 主要介绍单片机中的中断控制、中断处理过程以及外部中断的应用 第六章:MCS-51单片机的定时/计数器 ( 3课时) 介绍单片机内部的定时与计数功能、相关寄存器以及定时器的4种工作方式;最后介绍定时器的综合应用 第七章:MCS-51单片机系统扩展 ( 0 课时) 先对51单片机系统扩展进行概述,然后分别介绍程序存储器的扩展、数据存储器的扩展、IO接口的扩展并举例说明 第八章:人-机通道配置与接口技术 (0课时) 介绍单片机的显示接口技术(LED)和键盘扫描/动态显示接口电路。,第九章:系统前向、后向通道配置及接口技术(0课时) 主要对51单片机中的A/D、D/A转换器的原理、技术指标及应用进行设计举例 第十章:串行接口技术(4课时) 介绍单片机与外界进行通信的串口技术,主要说明其串行口工作方式,单片机与PC通信的方法。最后举实例进行说明 第十一章:单片机应用系统设计 (0课时) 主要是从应用系统的设计过程、硬件抗干扰技术、故障及自恢复程序设计等三方面来介绍单片机应用系统设计,第1章 计算机基础知识,1.1 数制与编码 1.2 单片机与嵌入式系统,1.2 单片机与嵌入式系统,1.2.1 单片机的概念 单片机(Single Chip-Microcomputer)又称为微控制器(Microcomputer),其最基本的结构是将CPU和计算机外围功能单元,如存储器、IO口、定时器/计数器、中断系统等集成在一个芯片上构成的。虽然单片机只是一个芯片,但无论从组成还是功能上看,它都具有了微机系统的特征。,1.2.2 单片机的发展 1971年微处理器研制成功。1974年,美国FairChild公司研制出世界上第一台单片机微型计算机F8。该机由两块集成电路芯片组成,具有与众不同的指令系统,深受民用电器及仪器仪表领域的欢迎和重视。 从此,单片机开始了迅速发展,应用领域也在不断扩大。 1976年INTEL公司推出了MCS-48系列的8位单片微型计算机,它以体积小、功能全、价格低等优点,赢得了广泛的应用,为单片机的发展奠定了基础。成为单片机发展过程中的一个重要阶段。 代表产品有INTLEL 公司的MCS-51系列单片机,MOTOROLA公司的MC6801,MC6802系列机,zilog公司的Z-8系列机,TI公司的TMS7000系列等。,此后,又在8位单片机的基础上,发展了16位单片机。,目前,单片机正朝着高性能和多品种方向发展那,但以MCS-51为主的8位单片机仍然占单片机的主导地位。单片机的应用从根本上改变了传统的控制系统的设计思想和设计方法。从前必须由模拟电路或数字电路实现的大部分控制功能,现在已经使用单片机通过软件的方式实现了。这种由软件取代硬件的并能提高系统性能的控制技术,称之为微控制技术。随着单片机应用的推广和普及,微控制技术必将不断发展,日益完善,更加充实。,1.2.3单片机的应用领域 单片机具有体积小、可靠性高、功能强、灵活方便等优点,故可以广泛用于国民经济的各个领域,对各行各业的技术改造和产品更新换代起到了推动作用。从应用规模来分,单片机应用系统常分为简单应用系统、常规应用系统和高级应用系统三类。 其中,简单应用系统是指它在家用电器或仪器仪表中的应用,其特点是没有人机对话功能,程序和运行参数均可以固化在ROM中。常规应用系统作用于过程控制,通常配有一个键盘和若干个IO端口,用以实现对被控对象进行监视和控制;高级应用系统是指单片机在分布式计算机系统或计算机网络中的应用;在这类应用系统中,单片机通常用作前置(下位)机,而后台(上位)机一般是一台系统机或网络 工作站。,(1)单片机在直接数字控制系统中的应用,人工监督 给定值 测量值,反多路开关,生产过程,多路开关,A/D,检测元件,单片机,D/A,(2)单片机在分布式控制系统中的应用,厂级管理计算机,商品信息,市场信息,生产信息,车间监督计算机(scc),车间监督计算机(scc),设备控制级DDC,设备控制级DDC,设备控制级DDC,设备控制级DDC,过程A,过程N,过程A,过程N,MIS级,SCC级,DDC级,1.2.4 嵌入式系统 所谓嵌入式系统,就是以嵌入式应用为目的的计算机系统。由于被嵌入对象的体系结构、应用环境要求不同,因此嵌入式系统也有很多类型。 主要分为两类:一类是独立使用的计算机系统;另一类是嵌入式计算机系统。,第2章 MCS-51单片机结构和原理,2.1 单片机内部组成及引脚功能 2.2 布尔处理机 2.3 存储器组织 2.4 并口IO口电路结构及应用特性 2.5 时钟电路与CPU时序 2.6 MCS-51单片机工作方式,2.1 单片机内部组成及引脚功能 MCS-51系列单片机有三种基本产品:8051、8751和8031,它们具有相同结构和性能,唯一差别就是内部程序存储器有所不同。其中8051是ROM型单片机,内涵4KB掩膜ROM;8751片内含有4KB的EPROM;而8031片内无程序程序存储器。MCS-51的典型产品是8051,所以本章将以8051为例对单片机的结构和原理进行介绍。,2.1 MCS-51单片机内部结构,时钟电路,4KROM 程序存储器,256BRAM 数据存储器,2X16位 定时/计数器,CPU 处理器,并行接口,串行接口,中断系统,T0,T1,内总线,/INT0,/INT1,P0 P1P2 P3,TXD RXD,图 2-1 MCS-51单片机结构框图,MCS-51单片机的主要性能和特点,微处理器: 一个8位的微处理器。包括以下两部分: (1)运算器ALU: 进行算术或逻辑运算的部件; (2)控制器: 用来控制计算机工作的部件; 内部数据存储器RAM:256B(128B的RAM+21B的SFR) ; 内部程序存储器ROM ( 以8051为例 ):4K的存储容量; 定时/计数器:2个16位的定时/计数器; 8位并行输入输出端口:P0、P1、P2和P3均可作输入输出口; 串行口: 全双工的端口(RXD:接收端,TXD发送端); 中断控制系统:设有5个中断源(/INT0,/INT1,T0,T1,串行口中断); 时钟电路:内部有时钟电路,但需要外接石英晶体和微调电容,时钟电路为单片机时钟脉冲序列;,2.1.2 MCS-51的引脚功能,MCS-51采用40引脚DIP封装形式,VCC RST XTAL1 XTAL2 /EA /PSEN ALE P3口 RXD TXD /INT0 /INT1 T0 T1 /WR /RD GND,8051,P1.0 1,P1.1 2,P1.2 3,P1.3 4,P1.4 5,P1.5 6,P1.6 7,P1.7 8,RST/VPD 9,RXD/P3.0 10,TXD/P3.1 11,/INT0/P3.2 12,/INT1/P3.3 13,T0/P3.4 14,T1/P3.5 15,/WR/P3.6 16,/RD/P3.7 17,XTAL2 18,XTAL1 19,VSS 20,40 VCC,39 P0.0/A0/D0,38 P0.1/A1,37 P0.2/A2,36 P0.3/A3,35 P0.4/A4,34 P0.5/A5,33 P0.6/A6,32 P0.7/A7/D7,31 /EA,30 ALE,29 /PSEN,28 P2.7/A15,27 P2.6/A14,26 P2.5/A13,25 P2.4/A12,24 P2.3/A11,23 P2.2/A10,22 P2.1/A9,21 P2.0/A8,30pF,30pF,XTAL1,XTAL2,P0,P1,P2,10uF,8.2K,RST/VPD,VCC,VSS,图2-2 MCS-51单片机引脚图及逻辑图,MCS-51单片机的引脚定义 1,主电源引脚 :Vcc(+5V- 40脚)和Vss(GND 20脚); 2,外接晶体引脚:XTAL1(19脚)、XTAL2(18脚),只要在这两脚之间接入一个晶体震荡器,单片机就可以以此晶体的频率开始工作。常用的晶体频率有0-24M,频率越高,单片机的工作速度就越快,但单片机的功耗就要增加。 3,控制或与电源复用引脚: RST/Vpd(9脚):在系统上电震荡器开始工作时, 在内部加在此引脚上有一个两个时钟周期的高电平使单片机复位。但为了使系统复位可靠,建议外加 一个上电复位电路,延长复位的时间。当单片机掉点时,此引脚可以接入备用电源向单片机内部的RAM供电,以防止RAM中的数据丢失。,ALE/PROG(30脚):低8位地址锁存器使能输出端。当CPU访问外部存储器时,ALE可向低8位地址锁存器输出所存控制信号;当不访问外部存储器时,ALE端仍以时钟振荡频率的1/6固定的输出正脉冲。对于EPROM型的单片机,此脚还是用于写程序时,输入编程脉冲。 /PSEN(29脚):外部程序程序存储器的选通信号。当单片机使用外部程序存储器时,此脚在一个机器周期内产生两次负脉冲。注意,访问外部数据存储器时,此信号无效。 /EA / Vdd (31脚):外部程序存储器的选择端控制端:当此脚加入“1”电平是,单片机使用内部的程序存储器;当EA加入低电平时,系统只使用外部的程序存储器。 但要特别注意:如果EA=1既使用单片机内部的程序存储器时,如果程序计数器PC的值超过0FFFH时,单片机将自动转向外部程序存储器1000H开始的单元。,4,并行输入输出端口引脚(P0-P3) P0.0 - P0.7 P0端口线(39-32脚):输出能力最强的端口,可以带动8个TTL负载。驱动一个MOS负载时,应接一个10K左右的上拉电阻。如果系统使用外接存储器时,该口还作为地址(低八位)总线和数据总线,注意在这种情况下,P0口就不能通用的I/O端口。 P1.0 - P1.7 P1端口线(1 8脚):是一个带内部上拉电阻的8位准双向IO端口。 P2.0 P2.7 P2端口线(21 28脚):是一个带内部上拉电阻的8位准双向IO端口。 除了做通用I/O端口外,当系统使用外接存储器时,该口还作为地址(高八位)总线,在这种情况下,P0口就不能通用的I/O端口。负载能力为4个TTL。,P3.0 P3.7 P3端口线 (10 17脚): P3口除了做通用的I/O端口外,同时它还有第二功能,负载能力为4个TTL。 P3口第二功能表,表2-1 P3口功能表,2.2 布尔处理机,前面已经讲到,单片机主要用于各种控制,而开关量控制又是单片机控制的主要对象,作为不同计算机 CPU只能按字或字节进行操作,对于简单的个别开关量进行控制却显得不那么方便,而让MCS-51骄傲的正是它能够有效的解决了位的控制。 MCS-51片内还有一个性能优异的位处理器,也就是说MCS-51实际上又是一个完整而独立的1位单片机,即布尔处理机。它有自己的CPU、位寄存器、位累加器、IO口和指令系统。MCS-51单片机对于位操作(布尔处理),有置位、复位、取反、测试转移、传送、逻辑与和逻辑或运算等。 把8位微型机和布尔处理机结合在一起是微机技术上的一个突破。布尔处理机在开关量决策、逻辑电路仿真和实时控制方面非常有效、而8位微型机在数据采集及处理、数值运算方面有明显的优势。在MCS-51单片机中,8位微型机和布尔处理机的硬件资源是复合在一起的,二者相辅相成。,2.3 存储器组织,MCS-51存储器组织结构与一般的微机不同。一般微机通常是程序和数据共用一个存储空间,属于“冯诺依曼”结构。而MCS-51单片机则把程序存储空间和数据存储空间严格区分开来,属于“哈佛”结构。 2.3.1 MCS-51存储器特点 存储器中物理结构上分成四个存储空间:片内程序存储器、片外程序存储器、片内数据存储器和片外数据存储器。从用户使用的骄傲读,即从逻辑上考虑,则有三个存储空间:片内外统一编址的64K程序存储地址空间、256B的片外数据存储器地址空间及片外数据存储器地址空间。,外部 ROM (4KB) /EA=0,内部 ROM (4KB) /EA=1,特殊功能 寄存器 SFR,内部 128 RAM,外部 RAM 64KB,FFFFH,0000H,FFH,80H,7FH,00H,FFFFH,1000H,外部 ROM(60KB) /EA=0/1,0FFFH,0000H,0FFFH,0000H,/PSEN,/WR,/RD,(a) 内、外程序存储器,(b) 内部数据存储器,(c)外部数据存储器,图2-3 8051单片机存储组织,CPU在访问三个不同的逻辑空间时,通过采用不同的形式的指令(访问程序存储器使用MOVC指令、访问片内数据存储器使用MOV指令、访问片外数据存储器使用MOVX指令),来产生相应的存储器选通信号。,2.3.2 片内数据存储器 数据存储器用于存放各种运算的中间结果,用作缓冲和数据暂存,以及设置特征标志等。8051的片内数据存储器空间较小,仅用8位地址寻址,最大寻址范围为256个单元,按使用情况不同可以分为低128B单元和高128B单元。其中低128B单元为真正的RAM存储器,高128B单元是特殊功能寄存器区。,位寻址区,3区,2区,1区,0区,堆栈区,08H 07H 00H,7FH,30H 2FH,20H 1FH,18H 17H,10H 0FH,四个工作寄存器区 每个区中有R0-R7 八个工作寄存器,通用的RAM区 地址:30H-7FH,位寻址区 16个单元20H-2FH, 共有128 可寻址位个位。 位地址:00H-7FH 注意:位地址与字节地址的区别,整个片内RAM分布如下图: 低128B单元,图2-4 片内RAM低128位存储器的配置,高128B单元,SFR 高128B,低128B,0FFH,80H 7FH,00H,特殊功能寄存器 SFR在片内RAM 中的位置,FFH,F0H,E0H,D0H,B8H,B0H,A8H,A0H,99H,98H,90H,8DH,8CH,8BH,89H,8AH,88H,87H,83H,82H,81H,80H,图2-5片内RAM高128位存储器的配置,1. 在低128B的RAM存储单元中又可划分为:通用寄存器区、可位寻址区、用户存储数据堆栈区。 (1)通用寄存器区 00H-1FH共32个单元为通用寄存器区,分四组,每组有8个8位的寄存器R0-R7。 CPU当前使用的工作寄存器是由程序状态字(PSW)的RS1和RS0设置决定的。,表2-2 通用寄存器R0-R7的地址表,(2)位寻址区 内部的RAM的20H-2FH为位寻址区。这16个单元的每一位都有一个地址,称为位地址。它们占据位地址空间的00H-7FH,这每一位都可以作为一个软件触发器,用于存放各种程序标志、位控制变量。,2FH,20H,字节地址,表2-3 RAM区位地址分配表,(3)用户RAM区 30H-7FH为真正的数据缓冲区,可以用来暂存用户数据或当作堆栈使用。 在微型机中,堆栈是在内存RAM中开辟一个特定的存储区,专门用来暂时存放数据或断点地址,并按照“先进后出,后进先出”的原则进行操作。 MCS-51单片机的堆栈,是在片内RAM低128B中开辟的一个专用区(一般选择30H-7FH作为栈区)。堆栈的一端是固定的,称为栈底;另一端是浮动的,称为栈顶。当堆栈中没有数据时,栈顶与栈底相重合。当数据进栈时,栈顶会自动地向地址递增的方向变化。一般把堆栈中的数据称为元素,最后进栈的那个元素所在地就是栈顶。由于堆栈元素的存入和取出必须遵循FILO和LIFO的原则,因此堆栈的操作总是对栈顶进行的。,RAM,08H 07H,栈顶,7FH,栈底,图2-6 堆栈示意图,2.片内高128B数据存储器,单片机内部的I/O口锁存器、串行口数据缓冲器、定时器/计数器以及各种控制寄存器和状态寄存器等统称为特殊功能寄存器SFR (Special Function Register) 它共有21个SFR,它们离散地分布在片内RAM地址为80H-FFH的高地址区域,且每一个SFR都有一个字节地址,并定义了符号名,其地址分布见表:,表2-4 特殊功能寄存器SFR地址表,下面简单介绍部分SFR的功能,其余的SFR将在后续章节中陆续介绍: (1)累加器ACC 累加器ACC是8位寄存器,是最重要的特殊功能寄存器,许多指令的操作数取自ACC,大部分运算结果也存放在ACC中。在指令系统中,ACC是助记符是A。 (2)寄存器B 寄存器B是8位的寄存器。主要用于乘法和除法操作指令。对于其他指令,寄存器B可以作为一般的数据寄存器使用。 (3)堆栈指针SP 堆栈指针SP是一个8位的寄存器,用它存放栈顶的地址。进栈时,SP自动加1,将数据压入SP所指向的单元;出栈时,则将SP所指向单元的内容弹出,然后SP自动减1.因此,SP总是指向栈顶。 (4)程序状态字PSW PSW是8位寄存器,用于寄存程序运行的状态信息。其中有些位(如CY, AC, OV等)的状态是根据程序执行结果由硬件自动设置的,而有些位(如RS1, RS0等)的状态则是由软件设置的。,CY (PSW.7)进位标志: 在加减法运算中,累加器A的最高位A7有进位,则CY=1,否则CY=0.同理,在减法运算中,如果A7有借位,则CY=1.因此CY往往作为无符号数运算是否有溢出的标志。 AC(PSW.6):辅助进位位: 用来判断加减法运算时,低四位是否向高四位进位或借位(既A3的进位或借位).往往用来判断压缩的BCD码的运算处理. F0(PSW.5), F1(PSW.1)用户标志位: 完全由用户来定义和使用。 RS1,RS0工作寄存器区选择位:确定工作寄存器R0-R7在哪个区中. 单片机在上电或复位后RS1、RS0=00。当需要人为的修改RS1,RS0的值来改变工作寄存器区的位置(后表将详细介绍)。,程序状态字PSW: 8位寄存器. 表征程序执行的状态信息。具体格式如下:,OV(PSW.2) 溢出标志位: 判断符号数加减法运算时是否有溢出. OV的结果可以用一个算法来表示: OV=CP异或CS 其中:CP为A7的进位,CS为A6的进位OV=1表明有溢出。 P(PSW.0)奇偶标志位: 用来标志累加器A中运算后1的个数。 当P=1时,表明A中1的个数为奇数个,反之为偶数个。 【举例】:有两个数0FH和F8H,试将两数相加 MOV A,#0FH ;将立即数0f h 送累加器A ADD A,#0F 8H ;A的内容与立即数0f8h相加,结果送A 0000 1111 运算结果:A=07H,CY=1(既CP=1), + 1111 1000 CS=1,OV=0(因为CP=1,CS=1) Cy1 0000 0111 AC=1,P=1 如何根据PSW来分析运算结果是否正确?是否有溢出? 1,若数据为无符号数。既15+248=263=107H 既CY=1,A=07H。 2,若数据为有符号数。既+15加-8=+7=07H,OV=0表明无溢出。,表 2-5 RS1,RS0与寄存器组的关系,(5)DPTR 数据指针DPTR是一个16位的特殊功能寄存器,编程时,DPTR既可以作为一个16位的寄存器使用,也可以作为两个独立的8位寄存器分开使用,此时用DPH表示DPTR的高字节,用DPL表示DPTR的低字节。 一般编程时,常用DPTR来存放外RAM单元(或外部I/O接口)的16位地址,作间接寄存器使用,它可以指向外RAM 64KB范围内的任一存储单元。 (6)程序计数器PC 程序计数器PC是16位专用寄存器,其内容就是下一条要执行的指令的首地址。CPU总是把PC的内容送往地址总线,作为选择存储单元的地址,以便从指定的存储单元中取出指令,译码和执行。,程序存储器用于存放程序代码和表格常数。其所支持的最大程序存储器空间为64KB,地址指针就是16位的程序计数器PC。在程序存储器中,有六个特殊的单元需要注意,编程者是不能随便使用的 :,0000H-0002H单元:上电时,程序计数器PC所指向的单元 0003H-000AH单元:外部中断/INT0的入口地址; 000BH-0012H单元:定时器T0的溢出中断入口地址; 0013H-001AH单元:外部中断/INT1的入口地址; 001BH-0022H单元:定时器T1的溢出中断入口地址; 0023H-002AH单元:串行口接收、传送的中断入口地址。 中断响应后,按中断种类由硬件控制PC自动转到各中断区的首地址去执行程序。但每个中断入口地址区只有8个单元,无法放置完整的中断处理子程序,因此,程序员在编程时必须在中断入口区放置一条无条件转移指令,将程序引导到真正的中断处理程序的实际入口位置。,2.3.3 片内程序存储器,2.4 并行IO端口电路结构及应用特性,在MCS-51单片机的四个端口P0,P1,P2,P3都是具有输出锁存功能的双向端口, 他们都由锁存器、输出驱动器和输入缓冲器组成。这些锁存器的位置都在SFR中,其地址分别为:80H、90H、A0H 、B0H.出于系统的考虑,在硬件设计上对每一个端口都有不同的要求,所以每一个端口又具有不同的特点.其中,在需要扩展外部存储器的系统中,P2口作为访问外部存储器的高8位地址线,P0口分时作为低8位地址线和双向数据总线。此外,P3口具有双功能。,2.4.1 P0口,特点:“通用数据I/O端口”和“地址、数据复用总线”端口. 1,在作为通用数据I/O端口时,具有较强的驱动能力(8个TTL负载),与MOS负载连接时,需要外接一个上拉电阻。 2,作为“地址、数据复用总线”使用时,P0口首先输出外部存储器的低八位地址,然后再变为数据总线进行数据的输入或输出.此时,P0口不能再作为通用I/O口。,D Q 锁存器 CL /Q,P0.x 引脚,Vcc,地址/数据 1/0,控制(=0时),读锁存器,读引脚,内部总线,写锁存器,MUX (控制=0时),硬件组成: 1,一个输出锁存器(D型触发器); 2,二个三态门(控制读引脚或读锁存器); 3,与门和MUX等元件组成的输出控制电路; 4,一对场效应晶体管FET构成的输出电路.,Vcc,图2-7 P0端口的结构图,1,P0口的I/O操作(通用I/O端口),在P0口作为通用I/O端口时,控制电路中的“控制”为“0”电平,多路开关MUX接入下方的锁存器的/Q端。 由于与门的一个输入端为“0”,所以它使上端的FET截止.这就是P0口在做I/O口时输出为“漏极开路”的结构原因. 输出操作:在执行以口为目标的指令时,数据送到锁存器的“D”端,经“/Q”端送场效管应输出极.如:送“1”时,/Q=“0”,使下端的FET截止.这样出现输出极的两个FET全部截止.在这种情况下必须在端口线上外加上拉电阻.这样在上拉电阻的作用下,使端口为高电平.同理,若总线向口送“0”时,锁存器的/Q=1,使下端的FET导通(上面的FET仍然截止),这样端口呈现“0”电平.,输入操作(读引脚,读锁存,输入前写一) a,读引脚:读外部送到端口引脚的电平,即通常所说的输入操作(如:MOV A,P0).此时,单片机控制“读引脚”的三态门,使引脚处的外部电平经三态门送入内部总线. b,读锁存器:将进行读锁存器并进行处理,最后再写回锁存器的操作称之为: “读修改写”操作。在这种情况下, 读入的数据不是来自引脚,而是端口内部的锁存器的内容。 当前面完成一次端口的输出后,要再将前面输入的状态取回来,进行再处理,然后重新输出,在MCS-51的指令系统中这种“读修改写”的操作有: ORL 、XRL 、JBC 、CPL 、INC 、DEC 、DJNZ 、MOV Px,y 、 CLR Px,y和SET Px,y。 如: ORL P0,A ;P0 A P0,P0. X,c,输入时应先写“1”:在端口电路中,可以发现一个问题:端口在输入(读引脚)时,原来锁存器的状态可能要影响引脚电平的输入.例如:原来锁存器的状态为“0”态,既输出极的下端FET是饱和状态,这样如果外电路向引脚输入高电平时,电路将不能正确读入.要解决的方法就是让下端的FET截止,既事先向端口写一个“1”.,2,P0口的总线方式,控制电路的“控制”=1,此时与门打开,MUX接向“地址/数据”信号.在这种情况下,输出极的两个FET都处于正常的工作状态 。 访问外部存储器的指令movx、movc ,就是使用P0口来输出外部存储器的低八位地址和输入、输出存储器的数据。可以从:访问外部程序存储器ROM的时序; 读外部数据存储器RAM的指令时序中来清楚的观察P0口作为“地址/数据复用”总线的工作特点。 在进行单片机的硬件系统的设计中,如果使用了外部存储器(或使用movx指令来访问外部接口电路)时,P0口成为整个系统的地址/数据复用总线。换句话,P0口不能再作为通用的I/O端口的形式直接与外部连接。,1, 做通用数据I/O端口时,输出级上端的FET处于截止状态,所以与MOS器件连接时,必须接“上拉电阻”,否则不能正确的输出高电平; 2,在输入操作前,为了保证输入正确,必须先向端口“写1”; 3,“读引脚”与“读锁存器”是不同的两个数据通道。凡是“读修改写” 的操作,CPU读的都是端口锁存器中的数据。 4,为了提高电路的可靠性,端口引脚不要直接与三极管一类的器件直接连接,应加隔离电路或与三极管之间加一个电阻. 5,在总线方式时,P0口不能再做通用的I/O端口。它分时输出地址、数据总线的信息(此时引脚不用外接上拉电阻)。,P0口特点小结:,特点:单纯的通用I/O端口,负载能力为3个TTL输入。与P0口的区别在于内部具有上拉电阻,所以输出时不用外接上拉电阻。,2.4.2 P1口的位结构图,D Q 锁存器 CL /Q,P1.x 引脚,Vcc,读锁存器,读引脚,内部总线,写锁存器,内部上拉电阻,图2-8 P1端口的结构图,由于P1口只能当作通用I/O口使用,所以在电路结构上与P0口不同, 首先,它不需要多路转换器,其次为通用输出功能提供了上拉电阻。 P1口的每一位可以分别定义为输入或输出,其功能同P0口通用功能。 P1口的每一位可以驱动4个LSTTL负载。,2.4.3 P2口 特点: “通用数据I/O端口”和“高八位地址总线”端口,D Q 锁存器 CL /Q,P2.x 引脚,Vcc,地址 1/0,控制,读锁存器,读引脚,内部总线,写锁存器,MUX (地址/数据=0),内部上拉电阻,图2-9 P2端口的结构图,与P0口一样,P2口在系统使用外部存储器时,做高八位的地址总线。当P2口当作通用I/O口时,多路开关使输出锁存器的Q端与驱动器的栅极相连构成一个双向口,其功能同P0口的通用功能。同样,P2口作为输入时,也必须使锁存器预先置1. 应当注意的是:仅使用外部数据存储器时,P2口分两种情况: 1,仅仅使用256B的外部RAM时,既使用movx a,r0指令访问外部RAM,此时用8位的寄存器R0或R1作间址寄存器,这时P2口无用,所以在这种情况下,P2口仍然可以做通用I/O端口。 2,如果访问外部ROM或使用大于256BRAM时,P2口必须作为外存储器的高八位地址总线。 如:movx a,dptr ;访问外部数据存储器 movc a,a+dptr ;访问外部程序存储器 这里使用了16位的寄存器DPTR,2.4.4 P3口 特点:通用I/O端口、多用途端口,在多用途情况下,P3口分别作为串行口、外中断输入、外部计数输入和系统扩展时使用的WR和RD信号的端口。在这种情况下,锁存器Q端为“1”电平以保证与门是打开的。 在通用I/O模式下,“替代输出功能”端为“1”电平,以保证与门打开。,D Q 锁存器 CL /Q,P3.x 引脚,替代输出功能,读锁存器,读引脚,内部总线,写锁存器,MUX (地址/数据=0),Vcc,图2-10 P3端口的结构图,并行端口在使用时应注意的几个问题,“拉电流”还是“灌电流”-与大电流负载的连接 (我们以美国ATMEL公司生产的AT89C51为例) 1, 使用灌电流的方式与电流较大的负载直接连接时, 端口可以吸收约20mA的电流而保证端口电平不高于0.45V(见右上图)。 2,采用拉电流方式连接负载时,AT89C51所能提供“拉电流”仅仅为80A,否则输出的高电平会急剧下降.如果我们采用右下图的方式,向端口输出一个高电平去点亮LED,会发现,端口输出的电平不是“1”而是“0”! 当然,不是所有的单片机都是这样,PIC单片机就可以提供30mA的拉电流和灌电流。单对于大多数IC电路,最好还是使用“灌电流”去推动负载。,Px.y,Vdd,Px.y,Vdd,Vdd,灌电流方式 输出”0”点 亮LED,拉电流方式 输出高电平 点亮LED,单片机与继电器等大电流负载的接口,我们知道:AT89C51的端口可以吸收约20mA的电流.对于继电器等大于20mA的负载,单片机可以采用右图的接法,用一个三极管来承担负载所需的大电流. 若于负载电流易造成干扰单片机的环境,应采用右下图”光电隔离”的方式.其中: A 、 B两处没有 任何电的联系.,Px.y,J,Vcc,Vdd,负载,Vcc,Px.y,A,B,2.5.1 时钟电路 1. 内部时钟方式 内部方式的时钟电路如下图2-14所示。利用MCS-51内部的高增益反向放大器,在XTAL1和XTAL2引脚上外界定时元件,内部振荡器电路便产生自激振荡。定时元件一般采用石英晶体和电容组成的并联谐振回路。晶体可以在1.2-12MHZ直接任选,电容可以在5-30pF之间选择,电容C1和C2的大小可以起到频率微调的作用,电容大小要和晶体的容性负载阻抗相匹配,否则不易起振。 内部时钟方式如下图:,2.5 时钟电路与CPU时序,30pF,30pF,XTAL1,XTAL2,8051,图2-11 单片机内部时钟方式,2. 外部时钟方式 外部时钟方式常用于多机系统,以便各个单片机能够同步工作。 对外部振荡信号无特殊要求,但需要保证脉冲宽度不小于20ns,且频率应低于单片机所支持的最高频率。 对于8051单片机,外部脉冲由XTAL2引入内部电路,XTAL1接地; 对于80C51单片机,外部脉冲由XTAL1引入,XTAL2悬空。,外部时钟信号,VSS,XTAL1,XTAL2,8051,1,Vcc,外部时钟信号,VSS,XTAL1,XTAL2,80C51,1,悬空,5.1k,图2-12 单片机的外部时钟方式,(a)8051外部时钟方式,(b)80C51外部时钟方式,S1,S2,S6,S5,S4,S3,机器周期,2.5.2 时序定时单位,单片机的工作过程就是不断的执行指令的过程。CPU每执行一条指令,都要经过取指(取操作码)、取操作数和执行等几个过程。 CPU执行一条指令的各个微操作所对应时间顺序称为CPU时序。为了直观的展现CPU的时序,把执行一条指令时相应信号线上有关信息的变化,按时间序列特定的波形展示出来,这就是时序图。 由于指令的字节数不同,执行的操作也不同,因而执行不同的指令所需要的时间差别较大。为了便于说明,人们按指令的执行过程定义了几种时序定时单位,及振荡周期、时钟周期和指令周期,它们的相互关系如下图所示,状态周期或时钟周期,振荡周期,P1,P2,指令周期,.,图 2-13 MCS-51各周期的关系,1.振荡周期:时振荡周期也称为节拍,它是单片机最基本的定时单位。前面介绍的时钟振荡器的周期就是振荡周期。 2.时钟周期 :又称状态周期,是由振荡器周期经2分频后获得的。所以时钟周期是振荡周期的2倍。时钟周期被分为P1和P2拍节。在每个时钟周期代码前板周期内,P1信号有效,这时通常完成算术逻辑操作;而在后半周期内,P2信号有效,完成内部寄存器直接的传送操作。时序中最小的时间单位.其值由外接晶体或外输入时钟来决定,其值石英振荡器频率的倒数。 例如:在单片机外接1MH的晶体,则单片机的系统时钟的频率为1M, 时钟周期为1us. 3.机器周期:MCS-51采用定时控制方式,因此它有固定 的机器周期。完成特定功能所需要的时间,在MCS-51单片机中机器周期由12个时钟周期构成,并分为6个状态(S1-S6),每个状态又分为P1和P2两拍.这样一个机器周期的12个震荡周期可以表示为: S1P1,S1P2,S2P1,S2P2,S3P1,S3P2 S6P1,S6P2 将12个震荡周期用6个状态和2拍来替代。,4.指令周期:这是时序图中最大的时间单位,既执行一条指令所需要的时间.在MCS-51系统中,不同的指令它所包含的机器周期数不同.它们分别是: 1,单机器周期指令; 2,双机器周期指令; 3,四机器周期指令 我们知道:一个机器周期包含了12个震荡周期.如果我们使用一个12M的晶体震荡器,那么: 一个机器周期为1us, 两个机器周期为2us, 四个机器周期为4us. 可见一条指令的运算速度与它所包含的机器周期数有关.机器周期数越少,执行的速度就越快.在MCS-51单片机的指令系统中,除了乘、除法指令为四个机器周期外,其余都是单周期和双周期指令.,2.5.3 典型指令的取指、执行时序 在MCS-51单片机的指令系统中有: 单字节; 双字节; 三字节指令。 在MCS-51的111条指令中,可以分为六种基本的时序: 1,单字节单周期指令; 4,双字节单周期指令; 2,单字节双周期指令; 5,双字节双周期指令; 3,单字节四周期指令; 6,三字节双周期指令.,指令特点:在程序存储器ROM中仅占一个存储单元。 在ALE第一次有效(S2P1)时,从ROM中读取指令的操作码,送入指令寄存器IR中.并译码执行,在ALE第二次有效时,封锁PC加一,使第二次读数无效.可见: 1, ALE信号对应这从ROM中读指令,所以在一个机器周期中CPU可以读两次指令; 2,对于单字节单周期的指令,CPU通过译码后封死PC,实际上指令的后半部不做任何工作.,单字节单周期指令的时序:,机器周期,读操作码一,读操作无效,ALE,S1,S2,S6,S5,S4,S3,图 2-14 单字节单周期指令的时序,指令特点:一条指令长度为两个字节,并存储在ROM相邻的两个单元中。要想完整的将这样的指令执行完,必须从ROM中读两次操作码. 在ALE第一次有效时,CPU 从ROM的n单元中取出指令的第一个字节OP1-1,并送入IR译码,通过译码CPU知道这是一条双字节指令,所以使PC加一,并在ALE第二次有效时,从ROM的n+1单元取出指令的第二个字节OP1-2送入IR进行译码,并产生对应的操作.最后在S6P2时完成本条指令的运行.,S1,S2,S6,S5,S4,S3,机器周期,读操作码一,读操作码二,OP1-2,OP1-1,n+1 n,程序ROM,PC,双字节单周期指令时序,ALE,图 2-15 双字节单周期指令的时序,指令特点:单字节, 需要两个机器周期运行.如: INC DPTR DPTR为两个8位的寄存器,加一时,必须分两步完成.既第一步 DPL加一,如果DPL加一有进位则还要进行第二步对DPH加一. 在指令周期的第一个ALE时,将ROM中的操作码OP取出, 经IR译码后得知为单字节双周期指令,所以一面执行该指令, 同时封锁后面三次ALE有效时的PC+1,在第二个机器周期的S6P2时,完成操作.,S1,S2,S6,S5,S4,S3,机器周期1,读操作码,读无效,S1,S2,S6,S5,S4,S3,读无效,读无效,机器周期2,单字节双周期指令的时序,ALE,图 2-16 单字节双周期指令的时序,设外部RAM2000H单元中有一个数x,且DPTR中已存有该数地址2000H.则CPU 执行外部ROM中的指令: MOVX A,DPTR ;将外RAM的x送A中,/WR /RD P2口 MCS-51 P0口 ALE,D7 D0 /CP,/WR /RD A15 A8 A7 A0 64KRAM D0D7,S1,S2,S6,S5,S4,S3,S1,S2,S6,S5,S4,S3,ALE,Psen,A15-A8(PC),A15-A8(DPH),A7-A0,指令,A7-A0,数据,RD,P2口,P0口,选中外部RAM,读外部数据存储器RAM的指令时序,图 2-17 读外部数据存储器RAM的指令时序,1, 在S2P2时,ALE的第一个下降沿将P0口输出的外程序ROM的低八位地址锁存到74LS373锁存器中; 2, 在S3P2的Psen为低电平时,选中外ROM,并根据单片机P0、P2口输出的16位地址选中movx指令(单字节),通过P0口送至单片机内部IR中译码.经译码后产生下列的一系列操作; 3, CPU将DPTR中的高8位(20H)送P2口输出,低八位(00H)经P0口输出,节在S5P1时ALE第二次下降沿时,将P0口的低八位地址锁存; 4, 在第二个机器周期的S1-S3中单片机输出/RD信号(低电平),选中外部RAM,并根据单片机提供的2000H 这16位地址中取出数据x. 5, CPU在S2-S3期间,将外部RAM2000H单元送到P0口上的数据送入累加器A中.,上述过程可以分成两个指行的阶段: 1, 根据PC所指定的程序存储器的地址,将movx指令从片 外ROM中取出; 2, 经译码后将DPTR提供的外数据存储器RAM中的数据 地址取出数据,经P0口送累加器A. 在第一阶段CPU产生/Psen信号用来选通外部程序存储器ROM; 在第二阶段CPU输出/RD信号(低电平),用来选通并读取外部数据存储器RAM的数据.,2.6 MCS-51单片机工作方式,MCS-51单片机的工作方式有多种,如复位、程序执行、单步执行、低功耗、EPROM编程与校验等。 2.6.1 复位方式及复位电路 1.复位方式 单片机复位后不会影响内部RAM中的数据,仅将PC指向0000H,SP指向07H,保证单片机复位信号撤出后CPU能够从起始地址0000H开始执行程序。但单片机由于外界干扰等原因造成程序跑飞或进入死循环时,可用复位信号重新启动程序。 复位操作还对单片机的个别引脚有影响,使P0-P3置位输入方式,使ALE=1,/PSEN=1.,表2-6 复位后内部寄存器的状态,2. 复位电路 RST端的尾部复位电路有两种复位形式:上电自动复位和按键手动复位。 (1)上电自动复位电路 只要在RST复位端接一个电容至VCC和一个电阻至VSS,就能够实现上电自动复位。在家电瞬间,电容通过电阻充电,就在RST端出现一定宽度的高电平,只要高电平时间足够长,就可以使单片机有效复位。 (2)按键手动复位 按键手动复位有电平方式和脉冲方式两种。 按键电平复位时通过使复位端经过电阻与VCC接通而实现的。 按键脉冲复位则是通过利用RC微分电路产生的正脉冲来实现的。,8051,Vcc,8051,Vcc,8051,Vcc,(a)上电自动复位,(b)手动电平复位,(c)手动脉冲复位,图2-17 MCS-51复位电路,(3)系统复位 在单片机的应用中,除单片机身体需复位以外,外部扩展I/O接口电路等也需要复位,因此需要一个系统的同步复位信号.即单片机复位后,CPU开始工作时,外部的电路一定要准备好,以保证CPU有效的对外部电路进行初始化编程.如上所述,MCS-51的复位端RST是一个施密特触发器,高电平有效,而I/O接口电路的复位端一般为TTL电平输入,通常也是高电平有效,但这两种复位输入端复位有效的电平不完全相同.若将单片机的复位不同步,CPU对I/O初始化编程无效,使系统不能够正常工作.解决的办法就是通过延时一段时间后,再对外部电路进行初始化编程.有效的系统复位电路如下图2-18所示:,8051,Vcc,8051,Vcc,(b)至外部IO电路复位端,1,(a)至外部IO电路复位端,图2-18 系统复位电路,2.6.2 程序执行方式,程序执行方式是单片机的最基本工作方式。所执行的程序可以在内部ROM、外部ROM或者同时放在内外ROM中。若程序放在外部ROM中,则应使/EA=0;否则,可令/EA=1。由于复位之后PC=0000H,所以程序的执行总是从地址0000H开始的。但真正的程序一般不一定从0000H开始存放,此时需要在000

温馨提示

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

评论

0/150

提交评论