您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 51单片机C语言应用与开发(第3章)
第3章51单片机的内部资源51单片机C语言应用与开发单片机的内部资源是单片机内部最基本的结构单元。要想理解单片机的工作原理,充分运用单片机的功能,设计高效、合理的单片机控制系统,必须对单片机的内部资源有比较详细的了解和认识。本章主要介绍MCS-51系列单片机的并行I/O口、中断系统、定时器/计数器和串行通信等内部资源。第3章51单片机的内部资源本章重点并行I/O口中断系统和中断程序设计定时器及定时器中断程序设计串行通信及串行中断程序设计本章难点中断及中断优先级中断、定时器及串行控制寄存器的功能及初始化定时器及串行通信的工作方式第3章51单片机的内部资源本章各章节安排3.1并行I/O口3.2中断系统3.3定时器/计数器3.4单片机串行通信第3章51单片机的内部资源3.1并行I/O口80C51单片机有4个8位的I/O口(共32根线):P0、P1、P2和P3。各口结构大同小异,主要由接口锁存器、输出驱动和输入缓冲器组成。其中,P1、P2、P3为准双向口,这些端口内均有上拉电阻,在读之前应先写入“1”。P0口内无上拉电阻,是开漏极输出,又称为三态双向I/O口。各口均可作为字节输入/输出,同时每一条口线亦可单独地用于位输出/输入。第3章51单片机的内部资源3.1并行I/O口P0口由1个输出锁存器、1个转换开关MUX、2个三态输入缓冲器、输出驱动电路、1个与门和1个反相器组成。当系统进行扩展时,P0口用做地址/数据总线,分时输出低8位地址和数据信息。P1口由1个输出锁存器、2个三态输入缓冲器和输出驱动电路组成。P1口是80C51唯一的单功能接口,仅能用做通用I/O接口。P2口由1个输出锁存器、1个转换开关MUX、2个三态输入缓冲器、输出驱动电路和1个反相器组成。当需要在单片机外部扩展程序存储器时,P2口作为地址总线输出高8位。3.1并行I/O口第3章51单片机的内部资源P3口由1个输出锁存器、3个输入缓冲器、输出驱动电路和1个与非门组成。P3口是双功能接口,除输出/输入外,每一条口线都有特殊的第二功能。需要说明的是:四个接口的输入/输出电平同CMOS电平、TTL电平皆兼容,P0口每条口线可以接8个LSTTL(Low-powerSchottkyTransistor-TransistorLogic即低功耗肖特基晶体管-晶体管逻辑电路)负载,P1、P2、P3口每条口线可以接4个LSTTL负载。3.1并行I/O口第3章51单片机的内部资源中断系统是单片机系统的重要内容之一,同时也是学习的难点。本节将介绍中断系统,中断控制器,如何用C51编写中断服务程序以及外部中断的扩充等。3.2中断系统第3章51单片机的内部资源3.2.1中断系统介绍在计算机执行程序的过程中,由于出现某个特殊情况(或称为“事件”),使得暂时中止现行程序,而转去执行处理这一事件的程序,处理完毕之后再回到原程序被中断的地方继续执行程序,这个过程就是中断。如图3-1所示。3.2中断系统第3章51单片机的内部资源3.2.1中断系统介绍3.2中断系统图3-1中断示意图第3章51单片机的内部资源3.2中断系统3.2.1中断系统介绍引起CPU中断的事件,称为中断源。中断源向CPU发中断请求,CPU收到请求后,暂时打断原程序,转去处理发出请求的事件,这一过程叫中断响应。事件处理完后,再回到被打断的地方(断点)处继续执行原程序,这个过程叫中断返回。中断功能由中断系统实现。8051系列单片机的中断系统有5个中断源,分别是:2个外部中断,2个定时器中断和1个串行通信中断。第3章51单片机的内部资源3.2中断系统3.2.1中断系统介绍51单片机的常用中断源和中断向量如下表所示:第3章51单片机的内部资源中断编号中断源入口地址0(interrupt0)外部中断00x00031(interrupt1)定时器/计数器0溢出0x000B2(interrupt2)外部中断10x00133(interrupt3)定时器/计数器1溢出0x001B4(interrupt4)串行口中断0x00233.2中断系统3.2.2中断控制寄存器中断的控制由中断控制寄存器完成,是系统提供给用户控制中断的手段。8051单片机有4个中断控制寄存器(专用寄存器),中断的控制通过对这些寄存器相应位的设置来实现。单片机初始化时,各寄存器全部置为0。4个中断控制寄存器为:定时器控制寄存器TCON、串行口控制寄存器SCON、中断允许寄存器IE和中断优先级控制寄存器IP。第3章51单片机的内部资源3.2中断系统3.2.2中断控制寄存器1.定时器控制寄存器(TCON)各位的位地址及位名称如下所示:第3章51单片机的内部资源IT0(或1),外中断0(或1)触发方式选择标志位,由软件置位。置为0时,设置为电平触发(低电平有效);为1时,设置为下降沿触发。IE0(或1),外中断请求标志位,硬件置位。有外中断请求时,由硬件置位。CPU响应中断后,由硬件自动清0。TR0(或1),定时器0(或1)启停标志位,由软件置位。为1时,启动定时器;为0时,停止定时器。TF0(或1),定时器0(或1)溢出中断标志位,硬件置位。定时器溢出(由全1变为全0)时,由硬件自动置1,CPU响应中断后,由硬件自动置0。3.2中断系统3.2.2中断控制寄存器2.串行口控制寄存器(SCON)各位的位地址及位名称如下所示:第3章51单片机的内部资源与中断有关的只有两位:TI和RI。串行通信时,由硬件自动置位。串行通信时,每发送完一帧串行数据后,由硬件置TI=1。CPU响应中断后,TI必须在中断服务子程序里由软件清除TI=0。串行通信时,每接收完一帧串行数据后,由硬件置RI=1。CPU响应中断后,RI必须在中断服务子程序里由软件清除RI=0。TI和RI共用一个中断——串行通信中断。产生串行通信中断后,需在中断服务子程序中判断到底是发送中断(TI=1)还是接收中断(RI=1)。串行发送和串行接收共用一个数据缓冲器(SBUF)3.2中断系统3.2.2中断控制寄存器3.中断允许控制寄存器(IE)各位的位地址及位名称如下所示:第3章51单片机的内部资源EA,中断允许控制位,软件置位。为1,允许中断;为0,禁止中断ES,串行通信中断允许控制位,软件置位。为1,允许中断。ET0(或1),定时器0(或1)中断允许位,软件置位。为1,允许中断;为0,禁止中断。EX0(或1),外中断0(或1)中断允许位,软件置位。为了,允许中断;为0,禁止中断。3.2中断系统3.2.2中断控制寄存器4.中断优先级控制器(IP)各位的位地址及位名称如下所示:第3章51单片机的内部资源8051单片机只有两级中断优先级——高优先级和低优先级对应位置1表示高优先级,置0表示低优先级。同一优先级别,按PX0、PT0、PX1、PT1、PS的顺序决定中断响应的顺序。3.2中断系统3.2.3C51编写中断服务程序C51编译器支持在C语言源程序中直接编写51单片机的。中断服务函数程序中断服务程序定义为函数,函数定义一般形式如下:函数类型函数名(形式参数表)interruptn[usingm](Interruptn表示将函数声明为中断服务函数,n是中断编号,n的取0~31的整数。编译器从8n+3处产生中断向量,具体的n和中断向量取决于不同的51系列单片机芯片。)第3章51单片机的内部资源3.2中断系统例3-1首先通过Pl.7口点亮发光二极管,然后由外部输入一脉冲,启动发光二极管亮、暗交替。电路如图3-2所示,请编写程序。图3-2发光二极管实验电路第3章51单片机的内部资源3.2中断系统例3-1首先通过Pl.7口点亮发光二极管,然后由外部输入一脉冲,启动发光二极管亮、暗交替。电路如图3-2所示,编写程序如下。#includereg51.hsbitP1_7=P1^7;voidinterrupt0()interrupt0using2//定义外中断0{P1_7=!P1_7;}voidmain(){EA=0;//禁止中断ITO=1;//设置外中断为脉冲触发方式EX0=1;//允许外部中断EA=1//开中断P1_7=0;while(1);//进入循环,等待中断}第3章51单片机的内部资源3.2中断系统3.2.4外部中断的扩充8051单片机只有两个外部中断,若外部要求检测的事件很多,就需要对外部中断进行扩充。51系列单片机扩充外部中断的方法一般有两种:利用定时器的计数方式对外部事件进行计数(最多可扩充两个外部中断);利用逻辑电路,通过逻辑运算,以查询的方式扩展外部中断(可以扩充多个外中断)。下页图是用查询的方式扩展外部中断的一个例子。第3章51单片机的内部资源第3章51单片机的内部资源查询方式扩展外部中断3.3定时器/计数器8051单片机内部有2个具有定时和计数功能的16位定时器(T0和T1)。每个定时器都由2个8位特殊功能寄存器TH0(高8位)和TL0(低8位)组成。每个定时器都有不同的工作方式,可以工作在定时或计数的模式下。定时器的工作方式和工作模式由工作方式寄存器(TMOD)的相应位决定。第3章51单片机的内部资源第3章51单片机的内部资源3.3定时器/计数器3.3.1定时器/计时器控制寄存器1.定时控制寄存器(TCON)与定时器有关的有TF0、TF1、TR0、TR1等四位,另四位对外部中断进行设置。2.定时器工作方式选择寄存器(TMOD)TMOD寄存器是4位一组的结构,以4位为单位进行定义,不能位寻址,只能用字节的方式设置内容。低4位(D0至D3)用于设置T0的工作方式;高4位(D4至D7)用于设置T1的工作方式。3.3定时器/计数器3.3.2定时/计数器的工作方式1.方式0(M1M0=00)13位定时/计数器,计数器由TL0的低5位(高3位无效)和TH0的全部8位构成。C/T(-)=0时为定时器模式。计数个数为:N=t/T。其中,t为定时时间,N为计数个数,T为机器周期。计数初值的计算公式:X=213-N。其中,X为计数初值,N为计数个数。计数结束,由软件重装计数初值。C/T(-)=1时为计数模式。对外部脉冲进行计数,计数脉冲由T0(T1)引脚输入。第3章51单片机的内部资源3.3定时器/计数器3.3.2定时/计数器的工作方式2.方式1(M1M0=01)16位定时/计数器。TL0为低8位,TH0为高8位。计数个数与计数初值关系为:X=216-N(当计数个数为1时,X为65535,当计数个数为63536时,X为0)。方式1的定时/计数方式与方式0基本相同,仅计数位数不同。计数结束,同样由软件重装计数初值。第3章51单片机的内部资源3.3定时器/计数器3.3.2定时/计数器的工作方式3.方式2(M1M0=10)自动重装初值的8位计数器。计数过程在TL0(1)中进行,待重装的初值存放在TH(1)中。计数结束,机器自动将TH中的内容装入TL,重新开始新的计数周期。计数个数与计数初值关系:X=28-N(计数个数为1时,X为255,计数个数为256时,X为0)。第3章51单片机的内部资源3.3.2定时/计数器的工作方式4.方式3(M1M0=11)方式3只适用于T0。T0工作于方式3时,被拆分为两个独立的8位定时器。其中,TL0既可以作为定时器,也可以作为计数器使用;而TH0只能作为定时器使用。T0工作于方式3时,TL0占用TCON的TR0和TF0;TH0使用TCON的TR1和TF1。T0工作于方式3时,T1只能工作于方式0、1、2,作为串行通信的波特率发生器,以确定串行通信的波特率。T1作波特率发生器使用时,只要设置好工作方式,T1即开始自动运行;如要停止,只需将T1设置成方式3即可。T1设置成方式3,全停止工作。第3章51单片机的内部资源3.3定时器/计数器3.3定时器/计数器3.3.3定时器/计时器的初始化1.初始化过程根据定时或计数要求确定计数器的初值;根据要求给方式寄存器TMOD赋值,
本文标题:51单片机C语言应用与开发(第3章)
链接地址:https://www.777doc.com/doc-3826450 .html