单片机原理及C51应用设计全套课件电子教案板_第1页
单片机原理及C51应用设计全套课件电子教案板_第2页
单片机原理及C51应用设计全套课件电子教案板_第3页
单片机原理及C51应用设计全套课件电子教案板_第4页
单片机原理及C51应用设计全套课件电子教案板_第5页
已阅读5页,还剩611页未读 继续免费阅读

下载本文档

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

文档简介

单片机原理及C51应用设计第1章单片机基础知识概述1.1单片机概述1.2单片机的特点及应用领域1.3单片机产品的设计过程1.4单片机代表性产品1.5单片机学习的预备产品单片机的学习方法

硬件准备

计算机:普通计算机一台。安装windos操作系统。 编程器:用于对单片机进行编程。(使用S51芯片可以使用下载线) 实验板:用来进行单片机开发设计实践,能完成的项目较多为好 仿真器:进行较复杂设计时用来调试单片机。方便实用,但价高。

软件准备

集成开发软件:伟福软件WAV6000,Keil等。 仿真软件:Proetus

1、学习条件和学习环境

2、知识准备

C语言(或其它基础语言):打好编程基础。 电子技术:特别是数字电子技术,是必备的电路基础。 微机原理:对计算机基础知识有较好的准备。

3、初学者推荐的软件硬件准备

计算机一台、开发实验板一块、ISP下载线一条(可自制)相关软件:开发软件、仿真软件、ISP下载软件等。 工具书:教材一本,较祥细的手册类书一本。 其它资料:器件资料、应用文档、实例等,主要由网络收集。

U盘:128M,用于保存资料(选购)。成绩比例分布平时成绩:10%实验成绩:20%卷面成绩:70%1.1单片机概述

单片微型计算机简称单片机,又称为单片微控制器MCU,嵌入式微控制器。具有体积小、重量轻、成本低、使用简单、抗干扰能力强、功耗低、开发灵活等特点。

1.单片机及应用分类

单片机是典型的嵌入式微控制器,它是将计算机系统集成在一个芯片上,使其体积更小,更利于集成,单片机相当于一台小型的计算机。单片机将中央处理器CPU、随机存储器RAM、只读存储器ROM和各种输入、输出接口(多种I/0口、中断系统、定时器/计数器、AD转换器等)集成到一块硅片上,从而构成了一个小而完整的微型计算机系统。

按照应用范围单片机可分为通用型和专用型。通用型内部资源配置具有普遍性,适用范围广;而专用型的单片机是专门针对某种特殊用途设计,稳定性较强,价格昂贵,适合于批量生产。

按照内部是否采用总线结构,可分为总线型和非总线型。总线型通常设有地址总线、数据总线和控制总线;非总线型单片机内部未采用总线结构,可以减小单片机的体积。单片机是嵌入式处理芯片的一种,嵌入式处理器可以有很多种,在相应的配置需要的外围设备,嵌入到其他系统中起控制作用,就构成了嵌入式系统。嵌入式系统首先要满足嵌入系统的物理环境、电气干扰、成本等各种要求;其次要满足所嵌入到的系统的最小软、硬件的裁剪的要求等;最后要满足控制要求,符合相应的接口方式。

2.单片机和嵌入式系统嵌入式系统按形式上分,可以分为系统级(工控机)、板级(单板、模块)、芯片级(如微控制器MCU、片上系统SoC)。嵌入式系统主要技术发展方向是满足嵌入式应用要求,不断扩展所嵌入到的系统要求的外围电路(如ADC、DAC、PWM、日历时钟等),精简系统内核、算法,降低功耗和软硬件成本,提供友好的人际界面,形成满足于所嵌入到系统要求的应用系统。根据单片机一次处理二进制数据的位数,可分为1位单片机、4位单片机、8位单片机、16位单片机和32位单片机。大致可分为四个阶段:

(1)第一阶段(1976-1978):单片机的探索阶段。以Intel公司的8位单片机MCS-48为代表。(2)第二阶段(1978-1982):单片机的完善阶段。Intel公司推出了MCS

–51。MCS-51设置了经典的8位单片机的总线结构,包括8位数据总线、16位地址总线、控制总线及具有很多机通信功能的串行通信接口,集成了8位CPU、8位的定时/计数器,具有较为完善和丰富的指令系统。

3.单片机的发展史及趋势(3)第三阶段(1982-1990):向微控制器发展的阶段。MCS-

51系列单片机已经成为国内的主流产品,8位单片机得到了巩固的发展,各大厂商竞相使用51内核,增强了外围电路功能,强化了智能控制的特征。此阶段16位单片机推出并得以应用。(4)第四阶段(1990—至今):全面发展阶段。随着单片机在各个领域全面广泛的应用,陆续出现了运行速度快、功耗较低、运算能力强、可靠性高的8位、16位、32位通用型单片机,以及小型廉价的专用型单片机。

未来的单片机将向着大容量高性能化、小容量低成本化、外围电路内装化的方向发展。(1)高集成度、高可靠性。内部布线短,采用总线连接,可靠性高,体积小,具有屏蔽电磁干扰的措施,抗干扰能力强的特点。(2)控制功能强。早期的单片机主要用于工业控制领域,它具备丰富的指令系统,便于进行逻辑控制。(3)优异的性价比。单片机的高性价比,是单片机推广应用的重要因素,也是各公司竞争的主要策略。(4)系统配置较典型、规范,易于扩展。(5)低电压、低功耗。适用于便携式的产品和家电产品,很多的单片机内的工作电压仅为1.8V~3.6V,而工作电流仅为数百微安。1.2单片机的特点及应用领域1.单片机的特点2.单片机的应用领域(1)在消费电子产品中的应用消费电子产品主要体现在家用电子产品上,这是单片机的一大主流市场。(2)在医疗设备中的应用单片机的体积小、功能强、应用灵活等特点,如医用呼吸机、分析仪、超声诊断设备、病床呼叫系统等都有单片机的身影。(3)在工控领域中的应用在工业自动化控制中的数据采集和智能控制等方向都采用了单片机技术,比如工厂流水线的智能化管理、智能化电梯、报警系统等。(4)在仪器仪表中的应用单片机具有运算能力强,处理速度快,体积小等特点,使得在仪器仪表中得到了越来越多的应用。仪器仪表技术全面的向着数字化、小型化、智能化和多功能化的方向发展,功能越来越强大,综合性更加突出。(5)在军事领域中的应用军用产品的先进性与否体现了一个国家的综合实力。无论是飞机、坦克、航母,还是导弹、鱼雷制导,单片机技术都在其中发挥着重要的作用。1.3单片机产品的设计过程单片机需要用户根据具体的功能为单片机配置好必须的外围电路,再将实现具体功能的程序代码烧录到单片机中,最后进行软硬件联调。1.3.1单片机实验环境的搭建单片机技术是利用软件去控制硬件,一个完整的单片机实验环境包括硬件和软件两大部分。单片机具体硬件实验环境必要的工具是计算机和实验板,下面介绍几种常用的实验工具及平台构建的方式。1.烧录器烧录器是借助计算机对单片机进行擦写的工具,烧录器可以支持多种不同品牌、不同型号的单片机。STC单片机烧录器2.仿真器仿真器可以在产品开发过程中用来代替单片机进行软、硬件调试,对于初学者来说,仿真器是一个很好的入门工具。它可以很方便、迅速、准确的找到程序中的错误,从而节省了单片机的开发周期。WAVE仿真器的外观3.实验板通常利用Protel、PowerPCB等绘图软件可以制作单片机实验板,实验板一般有两种形式,一种是下载型实验板;另一种是支持烧录器或仿真器实验板。单片机实验板1.3.2设计过程及注意事项1.单片机系统的的设计过程单片机硬件电路单片机硬件电路通常除了单片机必要的系统电路,输入输出设备外,还会根据设计需要设计功能模块。单片机软件程序的设计单片机的软件程序的编写是由用户根据具体的需要,编写程序,从而控制单片机各部件一步一步地动作,使系统按照要求执行功能。单片机的常用语言包括汇编语言和C语言。单片机应用程序的编译与调试支持两种语言的单片机开发软件有很多种,其中一款功能强大、易学易用、界面友好,利于调试的仿真软件KeilC51非常流行,支持软件和硬件仿真。单片机应用程序烧写与脱机检测通过烧录器或在线下载的方式,将程序编译后生成的机器码文件下载到单片机中。将烧写好的单片机固定在实验板电路中,脱离计算机,单片机系统独立运行,观察并检测是否与预期的功能一致。2.单片机设计过程中的注意事项单片机系统的设计主要以模块化为主,设计电路比较典型,大大降低了设计的错误率,并可以缩短设计周期。在设计电路板的布局中,要注意高频干扰等问题,电路布局还要尽量的紧凑些,节约成本。硬件系统设计过程除了必须的电路外,一般通常都设计些可以用于扩展的外围接口,系统板不必改动。在电路设计过程中,一定要考虑到电路各部分的驱动或锁存。一般通常考虑电路的不同驱动能力和阻抗匹配等问题。MCS-51系列单片机是由Intel公司生产的单片机的总称,是国内市场应用的最为广泛的8位单片机。主要包括8031、8051、8751、8032、8052、8752等品种,其中8051是早期最为典型的单片机产品,目前市场上的51系列单片机都是在其基础上进行改进的。MCS-51它具有非常典型的内部结构,并且采用内部总线控制,特殊功能寄存器的集中管理,丰富的指令系统,这些都为后来的单片机提供一定的技术保障。1.4

单片机代表性产品1.51系列单片机由于MCS-51单片机应用广泛,INTEL公司将MCS-51内核授权给其他很多公司,很多公司推出了51系列单片机的兼容产品,比如ATMEL、Dallas、STC、华邦公司等都有51单片机系列的兼容产品。目前51系列单片机是指所有兼容INTEL8031指令系统的单片机的统称。1997年ATMEL公司研发出精简指令集的高速8位单片机,简称AVR。相对于51系列单片机来说,AVR系列单片机片内资源更为丰富,增加了AD转换电路,接口也更为强大,同时具有电压范围宽、工作速度快、功耗低、保密性强、价格低等优势,在很多场合可以替代51系列单片机。AVR也可使用ISP在线下载编程方式,程序存储器擦写可达10000次以上,AVR单片机是高速嵌入式单片机。2.AVR系列单片机MSP430系列单片机是美国TI公司的一种16位超低功耗、精简指令集的混合信号处理器。它具有极低的功耗、丰富的片内外设和方便灵活的开发手段,此系列单片机针对实际应用需求,将多个不同功能的模拟电路、数字电路模块和微处理器集成在一个芯片上,以实现一片芯片高集成化。该系列单片机大多应用于需要电池供电的便携式仪器仪表中。MSP430系列单片机具有丰富的片上外围设备,包括看门狗、模拟比较器、硬件乘法器、ADC、I2C总线直接数据存取、PWM等。MSP430系列单片机的这些片内外设为系统的单片机解决方案提供了有利的便利条件。3.MSP430系列单片机PIC单片机系列是美国微芯公司的产品,是当前市场份额增长最快的单片机之一,PIC系列单片机广泛应用于工业控制领域。PIC单片机根据不同层次的需求推出不同型号的产品,PIC单片机的设计面向应用、面向产品,设计起点高、技术领先、性能优越、品种齐全、种类繁多。PIC单片机自带看门狗定时器,可以用来提高程序运行的可靠性。指令读取实现“流水作业”,使其运行速度高,并且具有睡眠和低功耗模式等优良特点。4.PIC系列单片机凌阳16位单片机是为了控制处理数据以及数字信号处理DSP等领域适时推出的产品,它的CPU内核采用凌阳最新推出的μ’nSPTM16位微处理器芯片。其中SPCE061A是应用非常普遍的凌阳16位单片机,61板是凌阳单片机SPCE061A精简、开发、仿真实验板的简称,是“凌阳大学计划”。它的体积小,采用电池供电,方便随身携带,特别适合在野外作业等领域中应用。支持语音识别,语音产生。凌阳推出了很多工业级高性能单片机,可广泛应用于家电、工业控制、电机变频调速、软启动、变频电源、逆变电源、UPS电源、车载GPS定位系统等产品。5.凌阳16位单片机1.5单片机学习的预备知识1.有符号数、无符号数数值型数据主要分为两种形式:有符号数和无符号数。计算机或单片机中的数据用二进制表示,数的符号也只能用0/1表示。有符号数的最高有效位(MBS)为数的符号位,正数用0表示,负数用1表示,其余的数位表示该数的数值。无符号数表示的数是非负数,所有的二进制数码都表示数值,没有符号位。2.原码、反码和补码

有符号数常用补码、原码和反码表示。用不同方式表示有符号数时,所得到的机器数可能不一样,但是真值应该是相同的。原码是符号数,即最高位为符号位,其余位表示数值的大小。规定正数的反码是其原码,负数的反码是对其原码逐位取反,但符号位除外。对于补码来说,正数的补码与其原码相同;负数的补码是在其反码加1。

3.单片机常用编码(1)二—十进制编码(BCD码)尽管十进制数可以转换成二进制数,但不便于识读。用四位二进制数表示十进制数的编码方式,称为二—十进制编码,即BCD码。其中最常用的是8421BCD码。(2)ASCⅡ码ASCII是基于拉丁字母的一套电脑编码系统,是现今最通用的单字节编码系统。ASCII码使用7位二进制数编码来表示所有的大写和小写字母,数字0~9、标点符号,以及在美式英语中使用的特殊控制字符,最高位用于奇偶校验。第2章单片机硬件结构及工作原理2.1单片机的片内结构2.2单片机的封装与引脚2.3AT89S51单片机的CPU2.4AT89S51单片机的最小系统2.5片内存储器结构一、ATAT89S51单片机内部基本组成§2.1单片机的片内结构图2.1ATAT89S51单片机内部基本组成1、中央处理器CPU2、内部RAM3、内部ROM4、中断系统5、定时计数器6、串行口7、并行口8、SFR8位CPU,包括运算器和控制器两大部分,具有运算控制功能,且有面向控制的处理功能,不仅可以处理字节数据,还可以处理位变量,即可实现按位操作。89S51单片机共256个单元,用户使用前128个,用于存放数据(可读写),后128个单元被特殊功能寄存器占用,即26个SFR(specialfunctionregister),片外最多可以扩展64KB。片内4K,用于存放程序、原始数据和表格,片外最多可以扩展到64KB。AT89S51单片机内部使用FLASH作为ROM使用,提高了程序存储的灵活性,并支持更多次数的擦写。5个中断源(其中外部中断2个,定时计数器中断2个,串行中断1个),2个优先级。2个16位可编程定时器/计数器,具有4种工作方式,对内部时钟定时,对外部事件计数。1个全双工异步串行口,具有4种工作方式用来进行串行通信、多机连接。4个8位的并行I/O口。共26个,用于CPU对片内各功能部件进行管理、控制、监视,即,片内各功能部件的控制、状态寄存器,是特殊功能的RAM区。§2.1单片机的片内结构单片机一般采用的双列直插的DIP40封装形式,也存在贴片形式的PLCC44和PQFP44封装形式,用于对尺寸要求较高的产品中。封装形式如2.2所示。§2.2.1常用IC的封装形式§2.2单片机的封装与引脚DIP(DualIn-linePackage)

双列直插式封装PQFPPQFP(PlasticQuadFlatPackage)

塑料四方扁平封装DIP封装形式一般应用在开发板,要求芯片能够方便取下更换的场合,也应用在对尺寸要求不高的消费类产品中,对于初学者比较适合用DIP封装形式的芯片。PLCC44封装形式,也是应用于方便更换芯片的场合,这种封装配以芯片座使用,这种封装形式是芯片的管脚是向内弯曲的,属于表贴封装,更适合波峰焊机焊接的场合,它与DIP封装相比,体积小了很多。PQFP44封装适合于大批量生产且对产品尺寸要求较小的消费类产片中。这种封装形式不适合经常更换芯片,它采用的是粘帖的方式焊接在电路板上,对焊接工艺要求较高。这三种封装形式,PQFP形式的体积是最小的。§2.2单片机的封装与引脚1、单片机引脚封装§2.2.2AT89S51单片机的引脚及功能§2.2单片机的封装与引脚图2.3AT89S51单片机的引脚2、引脚功能介绍(40引脚)(1)电源引脚,Vcc(40脚)接+5V,Vss(20脚)接地,单片机工作电源。(2)时钟引脚,XTAL1、XTAL2,提供单片机时钟控制信号,接晶振。(3)控制引脚A、RST(9脚)复位信号输入端,高电平有效。(持续时间大于2个机器周期)在单片机正常工作时,此引脚应为≤0.5V的低电平。B、ALE/PROG(30脚)高电平时,输出地址锁存允许信号(可检测51的好坏)低电平时,片内EPROM写信号脉冲,编程脉冲输入端。C、PSEN(29脚)输出脉冲负跳沿作为外部ROM的选通信号,可检测单片机上电后,CPU能否正常与外部ROM读取指令。D、EA/Vpp(31脚)EA接高电平时,PC访问内部ROM,PC>0FFFH,自动访问外部ROM;接低电平时,不管是否有内部ROM,PC直接访问外部ROM。Vpp编程电压,12V;8031应用时EA=0,因为其无ROM(4)I/O口引脚P0口:双向8位三态I/O口,口输出位置是OD门,片内无上拉电阻,地址总线(低8位)、数据总线复用,帯载能力强,可驱动8个LS型TTL;P1、P2、P3口:8位准双向I/O口,各口片内有上拉电阻,帯载能力差,可驱动4个LS型TTL,作为输入时,要向该口先写1。P2:做地址总线高8位P3:双功能复用§2.2单片机的封装与引脚1、功能主要用来对操作数进行算术、逻辑运算和位操作。2、组成主要包括ALU、累加器A、位处理器C、程序状态字寄存器PSW、BCD码修正电路等。(1)算术逻辑运算单元ALU8位变量:与、或、异或、循环、求补、清零,加减乘除;1位变量:置位,清零,转移,求补,与、或、非。(2)累加器A8位,Acc,向ALU输入数据,即存放操作数,存放ALU运算结果,向CPU传送数据、中转。其进位标志Cy,位处理器(位累加器)。(3)PSW8位,地址:D0H,位于SFR区表2.1PSW的位说明各位定义为:(从高到低)CY:进、借位标志。有进、借位时CY=1,否则CY=0;可硬件或软件置1或清0;AC:辅助进位、借位标志;BCD运算时,低4位向高4位有进、借位,硬件控制;F0:用户标志位,由用户自己定义;RS1、RS0:当前工作寄存器组选择位;OV:溢出标志位。有溢出时OV=1,否则OV=0;P:奇偶标志位。ACC中结果有奇数个1时P=1,否则,P=0。§2.3AT89S51单片机的CPU§2.3.1

运算器§2.3AT89S51单片机的CPU§2.3.2控制器1.功能识别指令,根据指令性质控制单片机各功能部件,执行指令。2.组成包括程序计数器PC、指令寄存器IR、指令译码器、条件转移逻辑电路及定时与控制逻辑。程序计数器PC为不可读不可写的16位特殊功能寄存器,用来存放下一条要执行的指令在程序存储器中的地址,其位数决定了单片机对ROM可直接寻址的范围,16位,216=64K。§2.3AT89S51单片机的CPU§2.3.3

指令执行的基本过程单片机执行程序的过程,实际上就是执行我们所编制程序的过程。即逐条指令的过程。计算机每执行一条指令都可分为三个阶段进行。即取指令-----分析指令-----执行指令。取指令的任务是:根据程序计数器PC中的值从程序存储器读出现行指令,送到指令寄存器。分析指令阶段的任务是:将指令寄存器中的指令操作码取出后进行译码,分析其指令性质。如指令要求操作数,则寻找操作数地址。执行程序的过程实际上就是逐条指令地重复上述操作过程,直至遇到停机指令可循环等待指令。§2.3AT89S51单片机的CPU§2.3.3

指令执行的基本过程一般计算机进行工作时,首先要通过外部设备把程序和数据通过输入接口电路和数据总线送入到存储器,然后逐条取出执行。但单片机中的程序一般事先我们都已通过写入器固化在片内或片外程序存储器中。因而一开机即可执行指令。开机时,程序计算器PC变为0000H。然后单片机在时序电路作用下自动进入执行程序过程。§2.3AT89S51单片机的CPU§2.3.3

指令执行的基本过程当单片机开始运行时,首先是进入取指阶段,其次序是:1、程序计数器的内容(这时是0000H)送到地址寄存器;2、程序计数器的内容自动加1(变为0001H);3、地址寄存器的内容(0000H)通过内部地址总线送到存储器,存储器中地址译码电路使地址为0000H的单元被选中;4、CPU使读控制线有效;5、在读命令控制下被选中存储器单元的内容(此时应为74H)送到内部数据总线上,因为是取指阶段,所以该内容通过数据总线被送到指令寄存器。至此,取指阶段完成,进入译码分析和执行指令阶段。§2.4AT89S51单片机的最小系统§2.4.1

复位电路1、复位的目的

使单片机或系统中其它部件处于某种确定的初始状态。2、复位电路

图2.4上电复位电路图2.5按键复位和上电复位原理§2.4AT89S51单片机的最小系统3、单片机复位后的状态复位后:

PC=0000H,所以程序从0000H地址单元开始执行;

RAM为随机值;

P0-P3=FFH,端口定义为输入;

SP=07H,第一个入栈内容将写入08H单元;

IP、IE和PCON的有效位为0;

PSW=00H,当前工作寄存器为0组;其余的SFR均为00H。§2.4AT89S51单片机的最小系统§2.4.2时钟电路与时序一、时钟电路时钟电路用于产生51单片机工作时必需的时钟控制信号,其内部的振荡电路是一个高增益反相放大器,引线XTAL1、XTAL2分别是放大器的输入和输出端。单片机内部虽然有振荡电路,因为有些功能器件无法集成到芯片里,要形成时钟,还须外部附加电路。时钟频率直接影响单片机速度,时钟电路质量直接影响系统的稳定性。时钟电路的设计有两种方式。

§2.4AT89S51单片机的最小系统§2.4.2时钟电路与时序一、时钟电路1、内部时钟方式利用芯片内部振荡电路。外接晶振及电容构成并联谐振电路,晶振可选在3MHz~33MHz之间;电容大小会影响振荡器频率的高低、振荡器的稳定性、起振的速度、温度稳定性等。一般电容值选在20pF~100pF之间,典型值为30pF左右(对应12MHz晶振)。

图2.6内部时钟方式原理§2.4AT89S51单片机的最小系统§2.4.2时钟电路与时序一、时钟电路2、外部时钟方式利用外部振荡器信号源直接接入XTAL1或XTAL2。通常XTAL1接地,XTAL2接时钟,由于XTAL2逻辑电平不是TTL,故建议外接一个4.7K~10K的上拉电阻。

图2.7外部时钟方式原理§2.4AT89S51单片机的最小系统§2.4.2时钟电路与时序二、时序单片机执行指令是在CPU控制器的时序控制电路的控制下进行的,各种时序均与时钟周期有关。1、时钟周期是单片机基本时间单位。若时钟晶振振荡频率为fosc,时钟周期Tosc=1/fosc2、机器周期CPU完成一次基本操作所需要的时间称为机器周期。Tcy=12/fosc

§2.4AT89S51单片机的最小系统§2.4.2时钟电路与时序

单片机常把指令的执行过程分为几个机器周期,每个机器周期完成一个基本操作。一个机器周期包括12个时钟周期,分为6个状态,S1~S6,每个状态分为2拍:P1、P2。因此,一个机器周期中的12个时钟周期表示为S1P1、S1P2、S2P1、S2P2……S6P6。3、指令周期执行完成一条指令所需的时间称为指令周期,以机器周期为单位,有单、双、四机器周期指令,指令按字节分为单、双、三字节指令。单、双字节指令一般占用单、双机器周期,三字节指令为双机器周期,只有乘、除指令占用4个机器周期。§2.4AT89S51单片机的最小系统§2.4.2时钟电路与时序4、指令时序计算机执行指令时通常将一条指令分成若干个微操作,这些微操作所对应的脉冲信号在时间上有严格的次序,微操作的时间次序称为指令时序。ALE输出地址锁存信号,有效一次,对应单片机的一次读指令操作。一个机器周期,ALE有效两次,宽度为一个状态,即两个时钟周期。图2.8ATAT89S51的机器周期§2.5片内存储器结构存储器就是用来存放数据的地方,它是利用电平的高低来存放数据的。一片64K存储器有65536个单元,51单片机有16根地址线,要对它读写数据,就用到8根数据线,至于什么时候读写,就用读写控制端和片选控制端确定。§2.5片内存储器结构按功能存储器分为只读存储器ROM和随机存储器RAM。RAM:CPU能随机进行数据的写入和读出,用来存放暂时性的I/O数据、运算中间结果或用作堆栈。ROM:断电后,其中的信息保留不变,用来存放固定程序,如监控程序、表格等。单片机中,ROM、RAM分成两个独立地址空间,称为哈佛结构。§2.5.1

程序存储器用来存放固定程序和常数、表格。程序存储器分为片内程序存储器和片外程序存储器两种,AT89S51单片机内部程序存储器的容量为4K字节,AT89S51单片机允许片外最大扩展到64K,程序存储器的机构图如图所示。§2.5片内存储器结构图2.9程序存储器结构§2.5.1

程序存储器§2.5片内存储器结构图2.10中断入口地址在程序存储器中有五个入口地址是固定的,即0003H、000BH、0013H、001BH、0023H,这5个入口地址即为中断的入口地址,也就是说,无论中断发生在任何地方,程序会自动生成一条长调用指令LCALL,指向这些入口地址。如图所示。所以在编写程序的时候要尽量避开这些固定的地址,以免造成程序错乱§2.5.1

程序存储器对程序存储器总结如下:1、取值范围:PC,16位,64K,0000H~FFFFH;2、片内、片外ROM用EA引脚区分;3、8031的ROM全部外扩64K;4、片内、片外地址连续,内外加起来最多是64K,由PC决定;5、复位时,PC=0000H;6、ROM中某些单元被固定用于中断源的中断服务程序入口地址。§2.5片内存储器结构对程序存储器总结如下:1、取值范围:PC,16位,64K,0000H~FFFFH;2、片内、片外ROM用EA引脚区分;3、8031的ROM全部外扩64K;4、片内、片外地址连续,内外加起来最多是64K,由PC决定;5、复位时,PC=0000H;6、ROM中某些单元被固定用于中断源的中断服务程序入口地址。对程序存储器总结如下:1、取值范围:PC,16位,64K,0000H~FFFFH;2、片内、片外ROM用EA引脚区分;3、8031的ROM全部外扩64K;4、片内、片外地址连续,内外加起来最多是64K,由PC决定;5、复位时,PC=0000H;6、ROM中某些单元被固定用于中断源的中断服务程序入口地址。§2.5.2片内数据存储器128个字节,地址00H~7FH。可分为三大部分:1、00~1FH,通用工作寄存器区。32个字节,分成4个工作寄存器组,每组8个单元,工作寄存器,编号R0~R7。当前工作寄存器组的机制便于快速现场保护。PSW的RS1、RS0决定当前工作寄存器组号。§2.5片内存储器结构表2.24组工作寄存器在片内数据存储器的位置§2.5.2片内数据存储器2、20H~2FH,位寻址区16个单元,128位,构成1位处理机的存储器空间,单元中每一位都有地址,00~7FH,16个单元既可位寻址又可字节寻址。3、30H~7FH,用户RAM区,共80个字节为通用RAM区。这些单元可以作为数据缓冲器使用。只能字节寻址。§2.5片内存储器结构图2.11片内数据存储器结构§2.5.3

特殊功能寄存器SFR与RAM连续的后128个字节,地址80H~FFH,26个SFR离散的分布在该区域,空的单元地址不能访问。双字节SFR可单字节分别使用。26个特殊功能寄存器的字节地址、位地址及复位值在表2.3中列出。§2.5片内存储器结构§2.5.3

特殊功能寄存器§2.5片内存储器结构表2.3SFR名称及分布§2.5.3

特殊功能寄存器字节地址末位是0或8的SFR(共11个)具有位地址,共83个位地址。SFR功能上分为五部分:1、与运算器相关的寄存器(1)累加器ACC,8位。向ALU提供操作数及存放运算结果;(2)寄存器B,8位。主要用于乘、除法运算;(3)程序状态字寄存器PSW§2.5片内存储器结构§2.5.3

特殊功能寄存器2、指针类寄存器(1)堆栈指针SP,8位SP的内容指示出堆栈顶部在内部RAM中的位置。可指向内部RAM00~7FH。51堆栈结构属于向上生成型堆栈,有入栈和出栈两种操作。遵循“先进后出,后进先出”的原则。堆栈常设在30H-7FH这一段RAM中。堆栈操作遵循“后进先出”的原则。堆栈的功能有:保护断点——子程序调用或是中断调用保护主程序断点现场保护——执行子程序调用或是中断调用保护主程序前将有关寄存器内容保护临时存数§2.5片内存储器结构§2.5.3

特殊功能寄存器(2)数据指针DPTR,16位。用来存放16位的地址。它由4个8位的寄存器DP0H和DP0L、DP1H和DP1L组成。间接寻址或变址寻址可访问片外的64KB范围的RAM或ROM数据。(3)程序计数器PC。16位,内容是将要执行的指令的地址。3、与口相关的寄存器并行I/O口,P0、P1、P2、P3锁存器,均为8位;所以访问RAM单元的指令均可访问I/O口,I/O端口与RAM统一编址;串行口数据缓冲器SBUF;串行口控制寄存器SCON;串行通讯波特率倍增寄存器PCON。4、与中断相关的寄存器中断允许控制寄存器IE;中断优先级控制寄存器IP。§2.5片内存储器结构§2.5.3

特殊功能寄存器5、与定时器/计数器相关的寄存器定时/计数器T0的两个8位计数初值寄存器TH0、TL0,它们可以构成16位的计数器,TH0存放高8位,TL0存放低8位;定时/计数器T1的两个8位计数初值寄存器TH1、TL1,它们可以构成16位的计数器,TH1存放高8位,TL1存放低8位;定时/计数器的工作方式寄存器TMOD;定时/计数器的控制寄存器TCON。6、位地址空间共211个寻址位的位地址,包括:1、RAM中20H~2FH的16个单元,128位;2、SFR中单元地址可被0或8整除的SFR,共83个位,每一单元最低位地址等于其字节地址。§2.5片内存储器结构§2.5.4

外部数据存储器外部数据存储器地址0000H~FFFFH,64KB.§2.5片内存储器结构图2.12片外数据存储器结构1、地址重叠ROM、RAM全部64K空间地址重叠。51采用不同操作指令及EA控制来区分。第3章 KEILC51编程基础3.1KeilC51简介3.2C51程序设计基础3.1KeilC51简介

针对51系列单片机的C语言编程(俗称C51)的编译器称为C51编译器。目前,51单片机中功能先进、完善且应用范围广泛的C51编译器是KeilC51。KeilC51简称C51,是面向单片机及其硬件控制系统的开发工具,利用C51编写的程序最后要转换成机器码,并下载到单片机中运行。3.1.1C51与标准C的异同C51虽然继承了标准C语言的绝大部分的特性,而且基本语法相同。特定的硬件结构上有所扩展,如关键字sbit、data、idata、xdata、code等。应用C51特别要注重对系统资源的理解,因为单片机的系统资源相对PC机来说很贫乏,特别是对内部RAM,其中的每一字节都要充分利用。C51中增加了单片机中断函数,interrupt函数属性标志着该函数为中断服务程序。程序中应用的各种算法要精简,不要对系统构成过重的负担。尽量少用浮点运算,可以用unsigned无符号型数据的就不要用signed有符号型数据,尽量避免多字节的乘除运算,多使用移位运算等。3.1.2C51与汇编语言的异同使用C51与汇编语言相比具有如下优点:不需要了解处理器的指令集,也不必了解存储器结构。寄存器分配和寻址方式由编译器进行管理,编程时不需要考虑存储器的寻址和数据类型等细节。指定操作的变量选择组合提高了程序的可读性。可使用与程序员思维更相近的关键字和函数。节省了程序开发和高度的时间。通过模块化编程技术,可移植性好。3.2C51程序设计基础一般C语言程序具有如下的结构:预处理命令

#include<>函数说明

longfun1();

floatfun2();功能函数1 fun1()函数体

{}主函数

main()主函数体

{

}功能函数2fun2()函数体

{

}3.2C51程序设计基础一般C语言程序具有如下的结构:预处理命令#include<>函数说明longfun1();

floatfun2();功能函数1 fun1()函数体{}功能函数2fun2()函数体 {

}主函数main()主函数体 {

}3.2.1数据类型

表3-1C51基本数据类型3.2.2运算符及表达式

表3-2C51的运算符3.2.3常量与变量1.常量常量是在程序执行过程中其值不能改变的量。常量的数据类型有整型、浮点型、字符型利字符串型等,C51编译器还扩充了一种位(bit)标量。(1)整型常量十进制整数。如1234、-5678、0等。十六进制整数。以0x开头的数是十六进制数,如0xl23。(2)浮点型常量浮点型常量有十进制表示形式和指数表示形式。如0.3141。(3)字符型常量字符型常量是单引号内的字符,如‘a’,‘b’等。(4)字符串型常量字符串型常量内双引号“”内的字符组成,如“ABCD”。2.变量变量是一种在程序执行过程中其位能不断变化的量。C语言程序中的每一个变量都必须有一个标识符作为它的变量名。在使用一个变量之前.必须先对该变量进行定义,指出它的数据类型和存储模式,以便编译系统为它分配相应的存储单元。在C51中对变量进行定义的格式如下:

[存储种类]数据类型[存储器类型]变量名表;其中,“存储种类”和“存储器类型”是可选项。变量的存储种类有四种:自动(auto)、外部(extern)、静态(static)和寄存器(register)。在定义一个变量时如果省略存储种类选项,则变量将为自动(auto)变量。在51单片机应用系统中经常需要访问特殊功能寄存器中的某些位,C51编译器为此提供了一种扩充关键字sbit,利用它可以访问可位寻址对象。使用方法有如下三种:(1)sbit位变量名=位地址;例如:sbitOV=0xd2;sbitCY=0xD7;(2)sbit位变量名=特殊功能寄存器名^位位置;例如:sfrPSW=0xD0;sbitCY=PSW^7;(3)sbit位变量名=字节地址^位位置;例如:sbitOV=0xD0^2;sbitCY=0xD0^7;全局变量和局部变量全局变量是指在程序开始处或各个功能函数的外面所定义的变量,在程序开始处定义的全局变量在整个程序中有效。可供程序中所有的函数共同使用;而在各功能函数外面定义的全局变量只对从定义处开始往后的各个函数有效,只有从定义处往后的各个功能函数可以使用该变量,定义处前向的函数则不能使用它。局部变量是指在函数内部或以花括号{}围起来的功能块内部所定义的变量,局部变量只在定义它的函数或功能块以内有效,在该函数或功能块以外则不能使用它,因此局部变量可以与全局变量同名,但在这种情况下局部变量的优先级较高,而同名的全局变量在该功能块内被暂时屏蔽。3.2.4存储类型及存储区数据的存储空间有4类:片内程序存储器空间、片外程序存储器空间、片内数据存储器空间和片外数据存储器空间。C51定义了6种存储类型;data、bdata、idata、pdata、xdata、code,这些存储类型与51单片机实际存储空间有如下对应关系:3.2.5循环控制流程语句

在实际应用中有很多地方需要进行循环流程控制,即我们常说的循环控制,比如对于某种操作需要反复进行多次,这时可以用循环控制流程语句来实现。

在C51语言程序中用来构成循环控制的语句有:if语句、switch/case(开关)语句、while语句、dowhile语句、for语句、return语句等。1.选择语句if if语句是用来判断所给定的条件是否满足的一种操作,它有两种基本形式。(1)if(表达式){语句;}(2)if(条件表达式) {语句1;}else {语句2;}(3)if(表达式1) {语句1;} elseif(表达式2) {语句2;} elseif(表达式3) {语句3;} elseif(表达式m) {语句m;} else {语句n;}2.switch/case(开关)语句用多个if语句可以实现多方向条件分支,但过多的if语句实现多方向分支会使条件语句嵌套过多,程序冗长、繁琐。这时使用开关语句同样可以达到多分支选择的目的,却可以使程序结构清晰。语法如下;switch(表达式){case常量表达式1:语句1;break;case常量表达式2:语句2;break;

……case常量表达式n:语句n;break;

default:语句n+1;}3.while语句

while(条件表达式){语句;}

4.dowhile语句

do{语句;}while(条件表达式);5.for语句for([初值设定表达式];[循环条件表达式];[条件更新表达式]){语句;}6.return语句return返回语句用于终止函数的执行,并控制程序返回到调用该函数时所处的位置。返回语句有两种形式:return表达式;return;

如果return后面带有表达式,则需要计算出表达式的值,并将表达式的值作为该函数的返回值;若return后面没有表达式,则被调用函数返回主函数时,函数值不确定。一个函数内可以没有return语句,在这种情况下,当程序到最后一个界限符“}”时,就自动返回主调函数。3.2.5数组数组就是同一类型变量的有序集合。数组中的每个数据都可以用唯一的下标来确定其位置,下标可以是一维或多维的。数据类型

数组名[常量表达式]“数据类型”是指数组中的各数据单元的类型,每个数组中的数据单元只能是同一数据类型。“数组名”是整个数组的标识,命名方法和变量命名方法是一样的。“常量表达式”表示数组的长度和维数,它必须用“[]”括起,括号里的数不能是变量只能是常量。一维数组一维数组赋初值的方式如下:数据类型[存储区域]数组名[常量表达式]={常量表达式};unsignedinta[5]={0x1234,0x2345,0x1ac3,0xabcd,0xf955};

2.二维数组定义二维及多维数组时,只要在数组名后面增加相应于维数的常量表达式即可。多维数组的定义形式如下数据类型数组名[常量表达式1]……[常量表达式N];例如对数组a[5][3]:按行分段赋值可写为:inta[5][3]={{80,75,92},{61,65,71},{59,63,70},{85,87,90},{76,77,85}};按行连续赋值可写为:

inta[5][3]={80,75,92,61,65,71,59,63,70,85,87,90,76,77,85};这两种赋初值的结果是完全相同的。可以只对部分元素赋初值,未赋初值的元素自动取0值。Intkey[2][3]={{0x76,0x38}{0x73,0x31,0x3E};3.字符数组charsecond[5]={‘H’,‘E’,‘L’,‘L’,O’};//字符用单引号charcond[5]={“HELLO”};//字符串用双引号3.2.5函数

函数是C51语言程序的基本单位。函数调用类似于子程序调用、用户可以根据实际需要编出各种不同用途的功能函数、C语言编译器还提供了十分丰富的库函数。对于系统提供的标准库函数,在使用之前需要通过预处理命令#include将对应的标堆函数库包含到程序起始位置。而对于用户自定义函数,必须对它进行定义之后才能调用。C51中函数的定义方式与标准C语言的是相同的,由于C51在标准C语言的基础上扩展了许多专用关键字,因此可以将其应用于函数的定义中。函数语法结构说明C51函数定义的一般格式如下:[类型标识符]函数名([形参列表])[{small/compact/large}][reentrant][interruptm][usingn]{声明部分语句部分}(1)类型标识符类型标识符说明了函数返回值的类型,用于说明函数最后的return语句送回给被调用处的返回值的类型。如果省略,则默认为int类型。如果一个函数没有返回值,则类型标识符定义为void。(2)函数名(3)形参列表形参表列用于列举在主调函数与被调函数之间进行数据传递的形式参数。在函数定义时要说明其类型。如果函数没有参数传递,在定义时,形参可以没有,也可以用void,但括号不能省略。(4)small/compact/1arge修饰符small/compact/large用来指定函数的存储器模式,函数的存储器模式确定了函数的参数和局部变量在内存中的地址空间。系统默认为small模式。(5)reentrant修饰符重入函数是可以在函数体内不直接或间接调用其自身的函数。2.中断函数(1)语法格式void函数名(void)interruptn[usingr]其中,n(0~31)代表中断号。C51编译器允许32个中断,具体使用哪个中断由单片机芯片决定。r(0~3)代表第r组寄存器。using用来选择51单片机中的工作寄存器组,51单片机有4组工作寄存器组:0组、1组、2组和3组。3.函数的调用

调用就是指一个函数体中引用另一个已定义的函数来实现所需要的功能,这个时候函数体称为主调用函数,函数体中所引用的函数称为被调用函数。一个函数体中能调用数个其它的函数,这些被调用的函数同样也能调用其它函数,也能嵌套调用。在C51语言中有一个函数是不能被其它函数所调用的,它就是main主函数。函数调用的形式包括以下三种:1.函数名(实际参数表)“函数名”就是指被调用的函数。2.函数参数“函数参数”这种方式是指被调用函数的返回值当作另一个被调用函数的实际参数.例如:max(y(5));y(5)的返回值作为max函数的实际参数传递。

3.函数表达式函数的调用作为一个运算对象出现在表达式中,能称为函数表达式。例如:temp=max(5)+min(10);3.2.6指针指针变量的定义形式:数据类型说明符[存储器类型1]*[存储器类型2]指针变量名;其中,数据类型说明符说明了该指针变量所指向的变量的类型。一个指向整型变量的指针变量不能指向字符型变量。存储器类型l是可选项:带有该选顶时,编程者规定了指针指向的存储区域,这种指针称为存储器指针,它是C51语言对标准C语言的扩展;不带该选项时,定义的指针为通用指针。存储器类型2也是可选项:带有该选项时,声明了指针本身的存储位置;不带该选项时,指针本身则根据不同的存储器模式放在相应的区域。3.2.7预处理所谓预处理,是指在进行编译的第一遍扫描之前所做的工作。常用的预处理命令有宏定义和文件包含两种。1.宏定义在C语言中源程序中允许用一个标志符来表示一个字符串,称为“宏”。被定义为“宏”的标志符称为“宏名”。在编译处理时,对程序中所有出现的“宏名”都会用宏定义中的字符串去代替。在C语言中,“宏”可分为有参数和无参数两种。(1)无参数宏定义:#define标志符字符串如:#defineKEYP1^2(2)有参数宏定义#define宏名(形参表)字符串如:#definey(s)s*s十3*s//宏定义:k=y(5);//宏调用这等于用实参5去代替形参s,经预处理后相当于

k=5*5+3*5;2.文件包含任何一个C51程序都要有头文件,它由预处理命令组成。头文件就是放在程序开头的文件,一般都是由C51开发商和芯片厂商提供的;这些文件的后缀为“h”,用#include在程序开始处标注出来。C51在编译时首先会将标注的程序应用到编译器里,所以在使用时要确保这些文件的存在。文件包含是C51预处理程序的一个重要功能。文件包含命令行的一般形式为:#include“文件名”文件包含命令的功能是把制定的文件插入该命令行位置取代该命令行,从而把指定的文件和当前的源程序文件连成一个源文件。#include<reg51.h>#include<stdio.h>我们在用c语言编程时往往第一行就是头文件,51单片机为reg51.h或reg52.h,51单片机相对来说比较简单,头文件里面内容不多,像飞思卡尔、ARM系列的单片机头文件往往内容就非常多。

1)“文件包含”处理概念

所谓“文件包含”是指在一个文件内将另外一个文件的内容全部包含进来。因为被包含的文件中的一些定义和命令使用的频率很高,几乎每个程序中都可能要用到,为了提高编程效率,减少编程人员的重得劳动,将这些定义和命令单独组成一个文件,如reg51.h,然后用#include<reg51.h>包含进来就可以了,这个就相当于工业上的标准零件,拿来直接用就可以了。

2)寄存器地址及位地址声明的原因

reg51.h里面主要是一些特殊功能寄存器的地址声明,对可以位寻址的,还包括一些位地址的声明,如果如sfrP1=0x80;

sfrIE=0xA8;sbitEA=0xAF等。3.2.8C51使用规范注释段落注释,以“/*”符号开始,以“*/”结束;需要注意的是,C51语言中的注释不能嵌套,即在“/*”和“*/”之间不允许再次出现“/*”和“*/”。行注释,以“//”开始,以“回车符”结束。2.命名在C语言中,同一个字母由于其大小写的不同可以代表两个不同的变量。常量的命名一律用大写;变量的命名一般反应该变量的功能,可以大小写混合使用;函数的命名与变量相似,一般都以该函数的功能进行命名。·第4章单片机开发工具软件4.1集成开发环境KeilμVision44.2仿真开发工具Proteus4.1集成开发环境KeilμVision44.1.1KeilμVision4简介Keil软件是目前最流行开发MCS-51系列单片机的软件。Keil公司是一家业界领先的微控制器(MCU)软件开发工具的独立供应商。2009年2月该公司发布Keilμvision4,Keilμvision4引入灵活的窗口管理系统,使开发人员能够使用多台监视器,并提供了视觉上的表面对窗口位置的完全控制的任何地方。Keilμvision4新的用户界面可以更好地利用屏幕空间和更有效地组织多个窗口,提供一个整洁,高效的环境来开发应用程序.4.1.2软件启动和运行点击KeilμVision4软件的快捷方式图标,运行该软件。图4-1启动KeilμVision4时的屏幕图4-2进入KeilμVision4后的编辑界面4.1.3使用方法1)建立一个新工程单击Project菜单,在弹出的下拉菜单中选中NewμVisionProject选项

2)然后选择你要保存的路径,输入工程文件的名字,比如保存到C51目录里,工程文件的名字为C51,如下图所示,然后点击保存。3)仿真器件选择4)工程编辑界面5)在下图中,单击“File”菜单,再在下拉菜单中单击“New”选项2.新建程序文件编辑界面单击菜单上的“File”,在下拉菜单中选中“SaveAs”选项单击,屏幕如下图所示,在“文件名”栏右侧的编辑框中,键入欲使用的文件名,同时,必须键入正确的扩展名。注意,如果用C语言编写程序,则扩展名为(.c);如果用汇编语言编写程序,则扩展名必须为(.asm)。然后,单击“保存”按钮。6)回到编辑界面后,单击“Target1”前面的“+”号,然后在“SourceGroup1”上单击右键,弹出如下菜单.选中Text1.c,然后单击“Add”.C语言程序编辑界面9)调试程序:在上图中,单击“Debug”菜单,在下拉菜单中单击“Go”选项,(或者使用快捷键F5),然后再单击“Debug”菜单,在下拉菜单中单击“StopRunning”选项(或者使用快捷键Esc);再单击“View”菜单,再在下拉菜单中单击“SerialWindows#1”选项,就可以看到程序运行后的结果10)单击“Project”菜单,再在下拉菜单中单击“Optionsfortarget‘Target1’”在下图中,单击“Output”中单击“CreateHEXFile”选项,使程序编译后产生HEX代码,供下载器软件使用。把程序下载到AT89S51单片机中。4.2仿真开发工具Proteus4.2.1Proteus简介ProteusISIS是英国Labcenter公司开发的电路分析与实物仿真软件。该软件的特点是:①实现了单片机仿真和SPICE电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。②支持主流单片机系统的仿真。③提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如KeilC51μVision4等软件。④具有强大的原理图绘制功能。总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。4.2.2软件的启动和运行双击桌面上的ISIS7Professional图标或者单击屏幕左下方的“开始”→“程序”→“Proteus7Professional”→“ISIS7Professional”,出现如图4-20所示屏幕,表明进入ProteusISIS集成环境。ProteusISIS的工作界面4.2.3软件的使用方法

电路图的绘制1、将所需元器件加入到对象选择器窗口。PickingComponentsintotheSchematic,单击对象选择器弹出“PickDevices”页面,在“Keywords”输入AT89C51,系统在对象库中进行搜索查找,并将搜索结果显示在“Results”中,如图所示。在“Results”栏中的列表项中,双击“AT89C51”,则可将“AT89C51”添加至对象选择器窗口。接着在“Keywords”栏中重新输入7SEG,如图所示。双击“7SEG-MPX6-CA-BLUE”,则可将“7SEG-MPX6-CA-BLUE”(6位共阳7段LED显示器)添加至对象选择器窗口。2、放置元器件至图形编辑窗口PlacingComponentsontotheSchematic3、放置总线至图形编辑窗口4、元器件之间的连线WiringUpComponentsontheSchematic5、元器件与总线的连线6、给与总线连接的导线贴标签PARTLABELS2.3.Proteus仿真调试双击图形编辑窗口中的器件AT89C51单击“EditComponent”内

选项中的

按钮,加载编译完成的C51程序,通过路径选择找到KEIL编译完成的HEX文件选中“C51”将通过KEIL编译完成的“HEX”文件加载到PROTUES中。单击仿真运行开始按钮

,我们能清楚地观察到每一个引脚的电频变化,红色代表高电频,蓝色代表低电频。第5章片内并行I/O接口51系列单片机有4组I/O端口:P0、P1、P2和P3口,每组端口都是8位准双向口,共占32根引脚。5.1P0口的工作原理P0口是一个三态双向口,可作为地址/数据分时复用口,也可作为通用I/O接口。

图5-1P0口的1位结构图5.1.1P0口作为地址/数据总线一是以P0口引脚输出地址或数据信息。二是由P0口输入数据,此时输入的数据是从引脚通过输入缓冲器2进入内部总线。当P0口做地址/数据总线复用后,就不能再做通用I/O口使用了。5.1.2P0口做通用I/O口使用当P0口做I/O端口使用时,CPU内部发出控制电平“0”信号封锁与门,使输出上拉场效管T1截止,同时多路开关把输出锁存器Q端与输出场效应管T2的栅极接通。5.2P1口的工作原理P1端口是一个准双向口,结构最简单,用途也单一,仅作为数据输入/输出端口使用。图5-2P1口的1位结构图5.3P2口的工作原理

P2口也是准双向口,有8条端口线,命名为P2.7~P2.0,它具有通用I/O接口或高8位地址总线输出两种功能,所以其输出驱动结构多了一个数字多路开关MUX和反相器。图5-3P2口的1位结构图5.4P3口的工作原理P3口是一个多功能口,它除了可以作为I/O口外,还具有第二功能。图5-4P3口的1位结构图例5-1:利用8个拨动开关,把8位数据送到P2口,程序读入,然后送到P1口显示,如图5-5所示。【C程序】:#include<reg52.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedint#definekeyp2#defineledp1

intmain(){while(1){led=key;}return0;}第6章

单片机中断系统6.1中断技术概述6.2中断系统结构6.1中断技术概述中断技术主要用于实时监测与控制,要求单片机能及时地响应中断请求源提出的服务请求,并做出快速响应、及时处理。 这是由片内的中断系统来实现的。 中断是指计算机在执行某一程序的过程中,由于计算机系统内、外的某种原因而必须终止源程序的执行,转去完成相应的处理程序,待处理结束之后再返回继续执行被终止源程序的过程。实现这种中断功能的硬件系统和软件系统统称为中断系统。图6.1中断过程主程序:CPU正常情况下运行的程序称为主程序。中断源:把向CPU提出中断申请的设备称为中断源。中断请求:由中断源向CPU所发出的请求中断的信号称中断请求。中断响应:CPU在满足条件情况下接受中断申请,终止现行程序执行转而为申请中断的对象服务称中断响应。中断服务程序:为服务对象服务的程序称为中断服务程序。断点:现行程序被中断的地址称为断点。中断返回:中断服务程序结束后返回到原来程序称中断返回。中断优先级控制当有多个中断源同时申请中断时,CPU优先响应最需紧急处理的中断请求,处理完毕再响应优先级别较低的,这种预先安排的响应次序就是中断优先级。一般都把最重要的事或处理时间不及时就会出现严重事故的事设置为优先级最高的位置。中断优先级越高,则响应优先权就越高。“中断嵌套”,如图6.2所示。图6.2中断嵌套过程中断响应的过程:当有中断产生时,保护中断现场、处理中断事件和返回原有事件处理的过程。检测中断保护现场中断服务清除中断标志位恢复现场中断返回

中断的优点:中断技术解决了快速CPU与慢速I/O设备的数据传送问题,如果单片机没有中断系统,单片机的大量时间可能会浪费在查询是否有服务请求发生的定时查询操作上。采用中断技术完全消除了单片机在查询方式中的等待现象,大大地提高了单片机的工作效率和实时性。6.2中断系统结构51单片机的中断系统内部结构框图如图6.3所示。图6.351系列单片机中断系统原理及组成图IE0TF0IE1TF11110110RITI≥

1INT0INT1T0T1RXDTXD01EX011EAPX001ET011EAPT001EX111EAPX101ET111EAPT101ES11EAPS自然优先级中断源中断入口高级0自然优先级中断源中断入口低级硬件查询IPIE源允许总允许TCONSCONIT0IT1§6.2.1中断源中断源是指向CPU发出中断请求的信号来源,中断可以通过人为设定,并响应突发性的随机事件。(1)—外部中断0,从P3.2引脚输入的中断请求。(2)T0—定时/计数器T0,定时器0溢出发出中断请求,计数器0从外部P3.4引脚输入计数脉冲中断请求。(3)—外部中断1,从P3.3引脚输入的中断请求。(4)T1—定时/计数器T1,定时器1溢出发出中断请求,计数器1从外部

温馨提示

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

评论

0/150

提交评论