51单片机C语言应用与开发(第3章)_第1页
51单片机C语言应用与开发(第3章)_第2页
51单片机C语言应用与开发(第3章)_第3页
51单片机C语言应用与开发(第3章)_第4页
51单片机C语言应用与开发(第3章)_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

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

文档简介

1、第3章 51单片机的内部资源,51单片机C语言应用与开发,单片机的内部资源是单片机内部最基本的结构单元。 要想理解单片机的工作原理,充分运用单片机的功能,设计高效、合理的单片机控制系统,必须对单片机的内部资源有比较详细的了解和认识。 本章主要介绍MCS-51系列单片机的并行I/O口、中断系统、定时器/计数器和串行通信等内部资源。,第3章 51单片机的内部资源,本章重点 并行I/O口 中断系统和中断程序设计 定时器及定时器中断程序设计 串行通信及串行中断程序设计 本章难点 中断及中断优先级 中断、定时器及串行控制寄存器的功能及初始化 定时器及串行通信的工作方式,第3章 51单片机的内部资源,本章

2、各章节安排 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、

3、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口是双功能接口,除输出/输入外,每一条口线都有特殊的

4、第二功能。 需要说明的是:四个接口的输入/输出电平同CMOS电平、TTL电平皆兼容,P0口每条口线可以接8个LSTTL(Low-power Schottky Transistor-Transistor Logic即低功耗肖特基晶体管-晶体管逻辑电路)负载,P1、 P2、P3口每条口线可以接4个LSTTL负载。,3.1 并行I/O口,第3章 51单片机的内部资源,中断系统是单片机系统的重要内容之一,同时也是学习的难点。本节将介绍中断系统,中断控制器,如何用C51编写中断服务程序以及外部中断的扩充等。,3.2 中断系统,第3章 51单片机的内部资源,3.2.1 中断系统介绍 在计算机执行程序的过程

5、中,由于出现某个特殊情况(或称为“事件”),使得暂时中止现行程序,而转去执行处理这一事件的程序,处理完毕之后再回到原程序被中断的地方继续执行程序,这个过程就是中断。如图3-1所示。,3.2 中断系统,第3章 51单片机的内部资源,3.2.1 中断系统介绍,3.2 中断系统,图3-1 中断示意图,第3章 51单片机的内部资源,3.2 中断系统,3.2.1 中断系统介绍 引起CPU中断的事件,称为中断源。 中断源向CPU发中断请求,CPU收到请求后,暂时打断原程序,转去处理发出请求的事件,这一过程叫中断响应。 事件处理完后,再回到被打断的地方(断点)处继续执行原程序,这个过程叫中断返回。 中断功能

6、由中断系统实现。 8051系列单片机的中断系统有5个中断源,分别是:2个外部中断,2个定时器中断和1个串行通信中断。,第3章 51单片机的内部资源,3.2 中断系统,3.2.1 中断系统介绍 51单片机的常用中断源和中断向量如下表所示:,第3章 51单片机的内部资源,3.2 中断系统,3.2.2 中断控制寄存器 中断的控制由中断控制寄存器完成,是系统提供给用户控制中断的手段。 8051单片机有4个中断控制寄存器(专用寄存器),中断的控制通过对这些寄存器相应位的设置来实现。单片机初始化时,各寄存器全部置为0。 4个中断控制寄存器为:定时器控制寄存器TCON、串行口控制寄存器SCON、中断允许寄存

7、器IE和中断优先级控制寄存器IP。,第3章 51单片机的内部资源,3.2 中断系统,3.2.2 中断控制寄存器 1. 定时器控制寄存器(TCON)各位的位地址及位名称如下所示:,第3章 51单片机的内部资源,I T0(或1),外中断0(或1)触发方式选择标志位,由软件置位。置为0时,设置为电平触发(低电平有效);为1时,设置为下降沿触发。 I E0(或1),外中断请求标志位,硬件置位。有外中断请求时,由硬件置位。CPU响应中断后,由硬件自动清0。 TR0(或1),定时器0(或1)启停标志位,由软件置位。为1时,启动定时器;为0时,停止定时器。 TF0(或1),定时器0(或1)溢出中断标志位,硬

8、件置位。定时器溢出(由全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共用一个中断串行通信中断。产生串行通信中断后,需在中断

9、服务子程序中判断到底是发送中断(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 中断控制寄存器

10、 4.中断优先级控制器(IP)各位的位地址及位名称如下所示:,第3章 51单片机的内部资源,8051单片机只有两级中断优先级高优先级和低优先级 对应位置1表示高优先级,置0表示低优先级。 同一优先级别,按PX0、PT0、PX1、PT1、PS的顺序决定中断响应的顺序。,3.2 中断系统,3.2.3 C51编写中断服务程序 C51编译器支持在C语言源程序中直接编写51单片机的。中断服务函数程序中断服务程序定义为函数 ,函数定义一般形式如下: 函数类型 函数名(形式参数表) interrupt n using m (Interrupt n表示将函数声明为中断服务函数,n是中断编号,n的取031的整数

11、。编译器从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所示,编写程序如下。,#include sbit P1_7=P17; void interrupt0() interrupt 0 using 2 /定义外

12、中断0 P1_7=!P1_7; void main() EA = 0; /禁止中断 ITO= 1; /设置外中断为脉冲触发方式 EX0= 1; /允许外部中断 EA = 1 /开中断 P1_7=0; while(1); /进入循环,等待中断 ,第3章 51单片机的内部资源,3.2 中断系统,3.2.4 外部中断的扩充 8051单片机只有两个外部中断,若外部要求检测的事件很多,就需要对外部中断进行扩充。51系列单片机扩充外部中断的方法一般有两种:利用定时器的计数方式对外部事件进行计 数(最多可扩充两个外部中断);利用逻辑电路,通过逻辑运算,以查询的方式扩展外部中断(可以扩充多个外中断)。下页图是

13、用查询的方式扩展外部中断的一个例子。,第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) 与定时器有关的有TF

14、0、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-

15、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

16、定时/计数器的工作方式 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

17、和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赋值,设定定时器的工作方式; 根据需要给中断允许寄存器IE送中断控制字,以开放相应的中断和设定中断优先级; 给T

18、CON寄存器中的TR0或TR1置位,以启动或禁止定时器/计时器。,第3章 51单片机的内部资源,3.3 定时器/计数器,3.3.3 定时器/计时器的初始化 2. 定时初值的计算和最大定时时间的确定 初值的计算:设计数器的最大值为M(在不同的工作方式下,M=213,216,28),计数初值为TC,计数器计满回零所需的计数值为C ,则TC=M - C。 定时时间的计算:定时时间= CT = (M-TC)T。其中T为计数周期,即单片机的机器周期。 最大定时时间:当TC=0时,定时器的定时时间最大。若单片机的机器周期为1us,当定时器工作于方式0时,最大定时时间为2131us=8.192ms;工作于方

19、式1,则为65.536ms;工作于方式2,则为0.256ms。,第3章 51单片机的内部资源,3.3 定时器/计数器,3.3.3 定时器/计时器的初始化 例3-2 假定某单片机系统的时钟频率为11.0592MHz,要利用该单片机的定时器0产生50ms的定时时间,请计算定时器初值,并确定定时器0的工作方式。,第3章 51单片机的内部资源,定时时间=CT=5010-3 T=121/(11.0592106) C=5010-311.0592106/12=46080=0 xB400 由于8位、13位定时器都没这么大的数,只能用16位定时器,因此,定时器只能工作于方式1。 TC=M-C=65536-460

20、80=19456=0 x4C00,3.4 串行通信,计算机系统中,CPU和外部设备的通信方式有2种:并行通信和串行通信。 并行通信是指在多根线上同时传输多位数据(一般是一个字节或一个字)。 串行通信,是指在数据在一根线上按顺序一位一位地传送。 8051单片机内部有一个全双工的串行通信口,可实现串行数据的发送和接收。,第3章 51单片机的内部资源,3.4 串行通信,3.4.1 串行接口的工作方式 8051单片机的串行接口共有4种工作方式 工作方式的选择由串行口控制寄存器SCON中的SMO、SM1来进行设置。 1方式0 方式0是同步移位寄存器输入/输出方式,主要用于扩展并行I/O接口。 移位数据的

21、发送和接收以8位为一组,低位在前,高位在后。 方式0实际上是把串行口变为并行口使用,实现数据的移位输入或输出。,第3章 51单片机的内部资源,3.4 串行通信,3.4.1 串行接口的工作方式 2方式1 方式1是异步通信方式。TXD为数据发送引脚,RXD为数据接收引脚。 方式1的数据帧依次为起始位1位、数据位8位、停止位1位,共10位数据。,第3章 51单片机的内部资源,第3章 51单片机的内部资源,3.4 串行通信,3.4.1 串行接口的工作方式 3方式2与方式3 方式2与方式3的数据帧有11位,依次为起始位1位、数据位8位、可编程位1位、停止位1位。 可编程位由SCON的TB和RB决定。 输

22、出时,应由软件置TB位,以启动串行数据的发送。一帧数据发送完,置位SCON的TI。 输入时,串行接口先将前8位数据送SBUF,然后将第9个数据送RB,最后置位SCON的RI。,3.4 串行通信,3.4.2 串行接口控制寄存器 1串行口控制寄存器(SCON) 专用寄存器SCON用于串行数据通信的控制,其格式为:,第3章 51单片机的内部资源,SM0、SM1。工作方式选择位 SM2。多机通信控制位,用于方式2和方式3的接收控制。 方式0和方式1时,SM2不用,置0。,当SM2 = 0时,不论第9位数据是什么,都将前8位数据送入SBUF中,并产生中断请求。,当SM2 = 1时,只有当接收到的第9位数

23、据为1,才将接收到的前8位数据送入SBUF,并置位RI产生中断请求。,第3章 51单片机的内部资源,3.4 串行通信,3.4.2 串行接口控制寄存器 1串行口控制寄存器(SCON),REN。允许接收控制位,由软件置位或复位。当REN=0时,禁止接收;当REN=1时,允许接收。 TB8。串行发送数据的第9位,由软件设置。 在双机通信时,TB8一般作为奇偶校验位使用。 在多机通信中,TB8作为区别地址帧和数据帧的标志位。TB8=0为数据帧,TB8=1为地址帧。,第3章 51单片机的内部资源,3.4 串行通信,3.4.2 串行接口控制寄存器 1串行口控制寄存器(SCON),RB8。串行接收数据的第9

24、位。 TB8和RB8在方式0和方式1时不用。 TI。发送数据中断请求标志位,由硬件置位,软件清0。TI=1表示1帧数据已发送完。 RI。接收数据中断请求标志位,由硬件置位,软件清0。RI=1表示接收到1帧数据。,3.4 串行通信,3.4.2 串行接口控制寄存器 2电源控制寄存器(PCON) PCON主要是为了80C51的电源控制而设置的专用寄存器,不能进行位寻址。 PCON的最高位SMOD是串行通信波特率的倍增位,其余各位用于电源管理。 在串行通信的方式1、2、3下,SMOD = 1时,波特率倍增; SMOD = 0时,波特率不变。 3中断允许寄存器(IE),第3章 51单片机的内部资源,3.4 串行通信,3.4.3 串行接口应用 51系列单片机的工作方式0是同步操作。因此可以通过外接串入-并出或者并入-串出器件实现IO口的扩展,常用的器件为移位寄存器。 串行接口方式0的应用有两种,即串行接口变为串入-并出的输出口和串行接口变为并入-串出的输入口。串行接口方式0的数据输出可以采用中断方式、查询方式,两种方式都要

温馨提示

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

评论

0/150

提交评论