第六章 单片机功能部件.docx

上传人:b****6 文档编号:16824525 上传时间:2023-07-17 格式:DOCX 页数:42 大小:373.97KB
下载 相关 举报
第六章 单片机功能部件.docx_第1页
第1页 / 共42页
第六章 单片机功能部件.docx_第2页
第2页 / 共42页
第六章 单片机功能部件.docx_第3页
第3页 / 共42页
第六章 单片机功能部件.docx_第4页
第4页 / 共42页
第六章 单片机功能部件.docx_第5页
第5页 / 共42页
第六章 单片机功能部件.docx_第6页
第6页 / 共42页
第六章 单片机功能部件.docx_第7页
第7页 / 共42页
第六章 单片机功能部件.docx_第8页
第8页 / 共42页
第六章 单片机功能部件.docx_第9页
第9页 / 共42页
第六章 单片机功能部件.docx_第10页
第10页 / 共42页
第六章 单片机功能部件.docx_第11页
第11页 / 共42页
第六章 单片机功能部件.docx_第12页
第12页 / 共42页
第六章 单片机功能部件.docx_第13页
第13页 / 共42页
第六章 单片机功能部件.docx_第14页
第14页 / 共42页
第六章 单片机功能部件.docx_第15页
第15页 / 共42页
第六章 单片机功能部件.docx_第16页
第16页 / 共42页
第六章 单片机功能部件.docx_第17页
第17页 / 共42页
第六章 单片机功能部件.docx_第18页
第18页 / 共42页
第六章 单片机功能部件.docx_第19页
第19页 / 共42页
第六章 单片机功能部件.docx_第20页
第20页 / 共42页
亲,该文档总共42页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

第六章 单片机功能部件.docx

《第六章 单片机功能部件.docx》由会员分享,可在线阅读,更多相关《第六章 单片机功能部件.docx(42页珍藏版)》请在冰点文库上搜索。

第六章 单片机功能部件.docx

第六章单片机功能部件

第六章 单片机的功能部件

教学内容:

1、定时/计数器

2、单片机中断系统

3、单片机串行通信

本章重点:

1、单片机定时/计数器、中断系统、串行通信的结构与工作原理

2、单片机定时/计数器、中断、串行通信初始化设置

教学要求:

1、要求掌握单片机定时/计数器、中断、串行通信的结构与工作原理

2、能熟练进行单片机定时/计数器、中断、串行通信初始化设置

3、能应用单片机定时/计数器、中断、串行通信解决实际问题

教案:

第一节定时/计数器

1、结构

80C51单片机内部设有两个16位定时/计数器,简称为定时器0(T0)和定时器1(T1)。

定时器/计数器的结构如图1所示:

 

 

图1 80C51单片机内部定时/计数器的结构

TMOD---方式控制寄存器,用于设定定时/计数器的工作方式

TCON---定时器控制寄存器,用于启动定时/计数器

IE---中断允许控制寄存器:

定时/计数器是微机的中断源

2、工作原理

80C51系列单片机内部定时/计数器的工作原理可用图2来说明。

定时/计数功能选择:

当C/T=0时,为定时器功能,此时,C与A相连(计数脉冲为机器周期);当C/T=1时,为计数功能,此时,C与B相连(计数脉冲从P3.4或P3.5口输入)。

定时/计数器设置:

定时/计数器设置由工作方式控制寄存器(TMOD)、定时控制寄存器(TCON)以及中断允许寄存器(IE)共同完成。

3、控制寄存器

1)、方式控制寄存器TMOD

方式控制寄存器(TMOD)是一个SFR寄存器,字节地址为89H,CPU可以通过字节传送指令来设定TMOD中各位的状态,但不能位寻址。

GATE----门控制位

当GATE=0时,定时/计数器由定时控制寄存器中的TR0(或TR1)启动。

当GATE=1时,定时/计数器由外部中断请求信号INT0(或INT1)与TRX共同启动。

C/T----定时、计数功能选择位

当C/T=0时,定时/计数器工作在定时工作方式

当C/T=1时,定时/计数器工作在计数方式

M1M2-----方式控制位,如图3所示。

图3方式控制寄存器

当M1M0=00时,定时/计数器工作在方式0

当M1M0=01时,定时/计数器工作在方式1

当M1M0=10时,定时/计数器工作在方式2

当M1M0=11时,定时/计数器工作在方式3

例:

设定时/计数器T0用作定时器使用,且工作在方式3,与外部INT0无关,定时/计数器T1用作计数器且工作在方式2,与外部INT1有关,试写出控制寄存器TMOD的值。

解:

依题意知,TMOD=11100011B=E3H

     MOV TMOD,#0E3H

----------------

2)、定时器控制寄存器TCON 

定时器控制寄存器TCON的格式如图4所示,

定时控制寄存器TCON也是SFR,字节地址为88H,可位寻址,位地址为88H--8FH,用于控制定时器的操作与中断。

TR0.TR1用于启停定时/计数器:

当TRX=1时,启动定时/计数器,用SETB TRX 实现;

当TRX=0时,停止定时/计数器,用CLR TRX 实现;

TF0.TF1为定时/计数器中断标志:

当TFX=1,表示定时/计数有溢出,可用查询或中断来处理;

当TFX=0,表示定时/计数无溢出,可用查询或中断来处理;

IE0.IE1为外中断标志:

 

图4 定时器控制寄存器TCON

当IEX=1,表示外部有中断发生(与ITX配合使用);

当IEX=0,表示外部无中断发生(与ITX配合使用);

IT0.IT1为外中断触发方式选择位:

  置ITX=1,则外中断在脉冲下降沿触发,

置1T1=0,则外中断在低电平触发方式,

例:

定时器/计数器T0作定时器使用,工作在方式1,T1作计数器使用,工作在方式2,当T0定时到,先关闭定时,后开启计数器T1,计数到,先关闭计数,后开启定时器T0,如些往复,试编写实现上述过程的程序。

分析:

先确定方式寄存器的值:

由题意知:

TMOD=01100001B=A1H

判别定时/计数溢出:

用LP:

JNB TFX,LP语句;采用查询方式

程序设计:

   ORG  1000H

    START:

MOV TMOD,#0A1H;设置TMOD工作方式

       SETB TR0     ;开启定时器T0

     LP:

JNB TF0,LP    ;定时器无溢出等待

      CLR TR0      ;定时溢出关定时器T0

       SETB TR1     ;开计数器T1

     LJ:

JNB TF1,LJ    ;计数器无溢出等待

       CLR TR1

       LJMP START

       END

3)、中断允许寄存器IE

中断允许寄存器也是一个SFR,地址为A8H,可以位寻址,如图5所示:

图5中断允许控制寄存器IE

通过向IE写入中断控制字,实现CPU对中断的开放和屏蔽。

4、工作方式

80C51单片机共有四种工作方式,定时器/计数器的功能与其工作方式有关:

1)、方式0

工作在方式0时,内部定时/计数器控制逻辑图如图6所示,计数值由THX(8位)和TLX(低5位)组成13位计数器。

定时/计数值的确定:

①最大定时/计数值

最大定时/计数值=213*机器周期;

此时,TH=00H.TL=00H

②定时/计数值的确定

定时值/计数值=(213-X)*机器周期;

式中X为TH.TL的设置值

注意:

在实际运算过程中,由于TL的高3位未用,一般应填写O,因此对实际的计算结果要进行调整。

如:

实际计算定时值X=1111100000110B,调整后X=1111100000000110B

 

图6 内部定时/计数器控制逻辑

例:

选择T1工作在方式0用于定时,晶振fosc=6MHZ,要求在P1.1输出1ms方波。

分析:

由题意得定时器T1的定时时间为:

1ms/2=500us

机器同期:

T=12/fosc=12/6*106=2us

设定时器的初始值为X,则:

    (213-X)*2=500

       X=7942D=1111100000110B=1F06H

考虑到TL的高三位未用,用0或1来补上,则调整后的X值为:

         X=1111100000000110B=F806H

结果:

TH1=F8H; TL1=06H

程序设计:

    ORG 2000H

    START:

MOV TMOD, #00H

MOV TL1,#06H

        MOV  TH1,#0F8H

        SETB TR1

LP1:

JBC TF1,LP2

AJMP  LP1

LP2:

MOV TL1, #06H

       MOV TH1, #0F8H

       CPL P1.1

       AJMPLP1

       END

2)、方式1

方式1在结构与操作上几乎与方式0相同,不同点有二:

一是工作方式设置,二是方式1是一个由高THX(8位)和低TLX(8位)共同组成的16位定时计数器。

定时/计数值=(216-X)*机器周期

3)、方式2

方式2是能重置初值的8位定时器/计数器,其结构如图7所示:

 

图7定时/计数器工作在方式2的结构

THX中放复置值,TLX放定时/计数值,通常将两者取同样大的数值

用定时器T1作计数器,工作在方式2,要求每计满100次,将P1.0端取反,试编制应用程序。

分析:

外部计数脉冲从P3.5输入,每跳变一次计数器加1

程序采用查询方式

确定工作方式值:

TMOD=60H

确定计数器初值:

X=28-100=156D=9CH

TH1=9CH;TL1=9CH

程序设计:

ORG1000H

START:

MOVTMOD,#60H

MOVTH1,#9CH

MOVTL1,#9CH

SETBTR1

DEL:

JBCTF1,REP

AJMPDEL

REP:

CPLP1.0

AJMPDEL

END

4)、方式3

方式3只适用于定时器T0。

定时器在方式3下被拆成两个独立的8位计数器TL0和TH0,如图8所示。

TL0占居了T0口的所有资源,TH0只能作简单的内部定时器使用,它占用T1口的TR1和TF1。

 

图8T0方式3结构

在定时器T0用做方式3时,T1仍可设置为方式0∽2,如图9所示:

(1)T0口在方式3下的控制

①TL0的控制

开启/停止:

TR0

溢出:

TF0

②TH0的控制

开启/停止:

TR1

溢出:

TF1

 

图9TO在方式3下T1口结构

(2)T0在方式3下的T1口控制

①T1工作在方式0或方式1下:

启动:

只要设置好工作方式,T1自动启动

停止:

送入一个设置定时器T1为方式3的方式字

输出:

定时/计数器输出送串行口

②T1工作在方式2下:

启动/停止方法与T1工作在方式0或方式1下相同。

它的输出也直接送串行口,通常把定时器T1设置为方式2作波特率发生器。

5、初始化

由于定时器/计数器的功能是由软件编程确定的,因此在使用定时/计数器前要对其进行初始化,使其按设定的功能工作。

1)、定时器/计数器初始化内容

①定时/计数器的工作方式:

依据要求定出TMOD的值

②预置定时/计数器初值:

给TH1.TL1或TH0.TL0赋值

③根据要求开放定时/计数器的中断:

对IE赋值

④启动定时/计数器

2)、实战训练

例:

晶振频率为6MHZ,使用T0作定时器,试编写在P1.3口输出秒脉冲方波程序。

分析:

A、确定TMOD的值:

TMOD=01H

B.求TH0和TL0的值:

取定时时间为125000μS,则8个定时时间等于1秒,计算定时器初值:

机器周期T=12×1/6×10-6=2μS

(216-X)×T=25000

X=6070=17B6H

TH0=17H  TL=B6H

C.确定IE的值:

由题意知IE=00H

D.启动定时/计数器:

用SETB TR0来启动定时器。

E.程序设计:

程序流程图如右所示,程序如下:

 ORG4100H

START:

MOVTMOD,#01H

 MOVTH0,#17H

MOVTL0,#0B6H

SETBTR0

MOVR0,#08H

LOOP1:

JNBTF0,LOOP1

MOVTH0,#17H

MOVTL0,#0B6H

DJNZR0,LOOP1

CPLP1.3

LJMPLOOP0

END

6、应用

定时器是单片机应用系统中的重要部件,是实时控制系统中不可缺少的部分,灵活应用其不同的工作方式可提高编程技巧,减轻CPU负担,简化外围电路,下面介绍定时/计数器的应用:

1)、在多任务应用系统中用来定时/计数

单片机定时/计数器常用来作定时器或计数器使用,对于一个采用单片机作为控制核心的系统来说,采用定时器来定时/计数,既不要增加硬件投入,又具有定时准确等特点,同时不占用CPU资源。

2)、用来测量脉冲宽度

利用方式控制寄存器TMOD门控位GATE=1时,允许外部输入电平控制启.停定时器这个特性,用定时器来测量外部输入脉冲的宽度。

实战训练:

分析如何测量图10所示的方波频率。

分析:

A.外部方波从单片机P3.2脚输入

B.单片机复位时,P3.2=1,当检   图10 外部脉冲

测到P3.2=0时,开启TR0,等一个P3.2=1到来时开启定时器T0,P3.2=0时关闭定时器T0。

C.根据定时器的定时值,计算方波的频率。

3)、在串行通信中作波特率发生器

当T0工作在方式3时,T1口工作在方式0.1.2下,T1定时/计数溢出直接送串行口的特点,定时器T1可以用来作串行通信的波特率发生器。

第二节单片机中断系统

1、中断

1)、与中断相关的几个概念

中断——程序在运行过程中,由于外界的原因,CPU暂停当前的处理转去执行紧急事件,待紧急事件执行完毕后再转回执行原程序。

中断源——引起中断的原因或触发中断请求的来源。

中断服务——中断之后执行的处理叫中断服务,对应的处理程序叫中断服务程序,原程序叫主程序。

中断系统——实现中断功能而设置的各种硬件和软件。

注意:

正确区分中断服务和调用子程序。

2)、引进中断技术的优点

①、分时操作

  有了中断功能就能解决快速CPU与慢速外设之间的矛盾,可以使CPU和外设同时工作。

②、实时处理

  在实时控制中,现场的各个参数.信息是随时间和现场情况不断变化的。

有了中断功能,外界的这些变化量可根据要求随时向CPU发出中断请求,要求CPU及时处理,CPU可以马上响应加以处理。

③、故障处理

计算机在运行过程中,出现一些事先无法预料的故障是难免的,例如电源突变.存储出错.运算溢出等,有了中断功能,计算机就能自行处理,而不必停机处理。

3)、中断源

①、外部中断:

INT0、INT1

单片机外部中断源有INT0、INT1,每个中断源有两种触发方式,一种是电平触发,另一种是脉冲触发方式。

具体的触发过程如下:

电平方式:

当INT0、INT1对应管脚出现低电平时有效。

脉冲方式:

在两个相邻机器周期中,检测到引脚由高电平到低电平时,表示有中断发生。

特别注意:

电平方式与脉冲方式的区别:

在电平触发方式,单片机在每个机器周期都将INT0(或INT1)的信号读入IE0(或IE1)中,如果送入8051的中断信号,未能及时检测到,就会漏掉中断要求。

脉冲方式不存在这个问题,但脉冲方式必须采用软件清除IE0(或IE1)。

②、定时/计数器中断:

T1,T2

单片机内部有两个定时计数器,当启用中断时,如果计数器有溢出,溢出信号去置位TF0(或TF1)标志位,作为单片机接受中断请求的标志。

③、串行中断:

当串行口发送和接收一组串行数据时,就产生一个中断请求。

④、中断优先权:

按中断的级别将中断分成不同的等级,并按优先权原则执行中断处理,CPU响应中断的顺序:

a、不同级别的中断源同时申请时按中断优先权执行;b、同级别的中断源同时申请时按事先安排的程序执行;c、在处理中断过程中,又有中断申请时,视其级别的高低,如果申请的级别高程序转向申请的中断,如果申请的级别低程序继续执行,直到结束再转向中断。

对80C51单片机来说,同一级别的中断按下顺序执行:

外部中断0定时/计数器T0T1外部中断1定时/计数器串行口

2、单片机中断系统

1)、单片机中断系统

单片机中断系统如图11所示:

 

2)、单片机中断入口地址

当有中断发生并且系统开放中断时,单片机将自动转入固定的入口地址,单片机的中断入口地址如表1所示:

表180C51单片机中断入口地址

中断源

入口地址

中断源

入口地址

外部中断0

0003H

T1溢出

001BH

T0溢出中断

000BH

串行口接收

0023H

外部中断1

0013H

串行口发送

0023H

3)、单片机中断控制

单片机的中断设置由下面的四个控制寄存器确定。

①中断充许寄存器IE

中断允许寄存器是一个SFR,地址为A8H,可以位寻址。

通过向IE写入中断控制字,实现CPU对中断的开放和屏蔽。

如图12所示:

EA:

中断允话控制位;

ES:

串行口中断;

ET1:

定时/计数器T1;

EX1:

外部中断1

ET0:

定时/计数器0;

图12中断允许数寄存器

EX0:

外部中断0;

②定时控制寄存器TCON

定时控制寄存器TCON也是SFR,字节地址为88H,可位寻址,位地址为88H--8FH,用于控制定时器的操作与中断。

如图13所示:

图13定时控制寄存器

注意:

IT1.1T0:

是专门用来设置外部中断1和0的触发方式的,对于外部中断INT1.INT0来说,用不同的触发方式,中断过程是不一样的:

1T1=0:

为低电平触发方式。

处于这种触发方式时,CPU响应中断后不能自动清除IE1标志,也不能由软件清除,因此在中断返回前发须撤消INT1引脚上的低电平,否则将再次响应中断。

IT0=1:

为脉冲触发方式。

处于这种触发方式时,CPU响应中断后自动清除IE1。

对于IE0来说触发方式与IE1的触发方式一样。

③串行控制寄存器SCON

SCON是一个可位寻址的专用寄存器,用于串行数据通信的控制,单元地址为:

98H,位地址与位功能如表2所示:

表2位地址与位功能表

④中断优级控制寄存器IP

***PSPT1PX1PT0PX0

IP:

 

PX0------------外部中断0中断优先级控制位   

PT0-----------定时/计数器T0中断优先级控制位

PX1----------外部中断1中断优先级控制位

PT1----------定时/计数器T1中断优先级控制位

PS-----------串行口中断优先级控制位

3、中断处理过程

单片机在每一指令的S5P2期间,CPU采样各中断源,并设置相应的中断标志位。

CPU在下一个周期S6期间按优先级顺序查询各中断标志,如查询到某个中断标志为1,将在下一个机器周期S1期间按优先级进行中断处理。

中断处理过程分成三个阶段,即中断响应.中断处理和中断返回,如图14所示:

1)、中断响应

(1)、中断请求标志

IE0(外部中断0)——中断处理时,由硬件复位。

TF0(T0)——中断处理时,由硬件复位

IE1(外部中断0)——中断处理时,由硬件复位

TF1(T1)——中断处理时,由硬件复位

T1(发送标志)——中断处理时,由软件复位

R1(接收标志)——中断处理时,由软件复位 

(2)、中断响应

CPU响应中断的条件

①有中断源发出中断申请

②对应的中断开放图14中断处理

③CPU不是运行在中断服务程序;也不是处于执行RET1或者读写IE或IP指令期间,正在执行的指令要执行完成。

(3)、中断响应过程

CPU响应中断请求后,自动将当前的PC值压入椎栈然后程序转入约定的入口地址,开始执行中断服务程序。

2)、中断处理

中断处理又叫中断服务,程序从入口地址开始执行,直到返回指令RETI为止,这个过程称之为中断处理。

中断服务过程包含两部分内容:

一是保护现场,二是处理中断源的请求。

中断处理过程如图15所示:

①保护现场

将中断处理程序所用到的如累加器、通用寄存器等参数;入栈保护。

注意在入栈时应关中断,入栈完成后再开中断。

图15中断处理

②中断服务

处理中断事件,它是事先按中断要求编制的服务程序。

③恢复现场;

中断服务结束后,应立即关中断,恢复现场;恢复现

场结束后应立即开中断。

注意:

中断请求的撤除:

CPU响应中断请求后,在中断返回前,应撤消中断请求,否则会引起另一次中断对于定时器T0.T1.以及外部中断0或1工作在脉冲触发方式时,CPU响应中断后,会自动清除中断标志位;对于串行通信中断请求只能用软件清除;外部中断0或外部中断1工作在低电平触发方式时,只有改变触发电平,再配以软件才能清除中断请求。

中断响应的时间:

CPU不是在任何时候都能响应中断的,因此CPU响应中断的时间也不一样。

3)、中断返回

在中断处理完成后用RETI返回主程序指令。

4、中断系统扩展

1)、利用定时器扩展外部中断

让定时/计数器作计数器用,工作在方式2,定时器的定时值为#0FFH当外部来一个脉冲,定时/计数器产生溢出,用定时/计数器的溢出作为中断请求标志,这样就可以增加两个外部中断源。

例如:

将定时器T0作为外部中断源的程序如下:

     MOV TMOD,#06H

     MOV TL0,#0FFH

     MOV TH0,#0FFH

     SETB TR0

     SETB EA

     SETB ET0

     ……………

2)、利用中断和查询结合法扩展外部中断

如图16所示,有多个外部中断,只用一个外部中断源,采用中断和查询相结合的方法解决外部多中断请求的问题:

解决问题的思路:

将外部信号通过非门后接在一起,作为外部中断信号,当CPU响应外部中断后,查询外部中断信号,根据外部中断信号转到相应服务程序,这样就实现了用一个外部中断源解决多个外部中断的问题。

中断服务程序设计:

中断服务程序:

CLR EA

JB P1.0,X10

JBP1.1,X11

JBP1.2,X12

JBP1.3,X13

ZDFH:

RETI

图16中断扩展

X10:

……………

     AJMP ZDFH

   X11:

………………

     AJMP ZDFH

   X12:

………………

     AJMP ZDFH

   X13:

……………

     AJMP ZDFH

5、中断系统应用实例

例1:

利用定时器T0定时,在P1.0端输出一方波,方波周期为20ms。

已知晶振频率为12MHZ。

解:

定时器T0工作在方式1,经计算定时器的初值为:

D8F0H

程序设计:

            ORG  0000H

            LJMP 1000H

            ORG 000BH

            LJMP 2000H

            ORG 1000H

        1000H:

MOV TMOD,#01H

           MOV TL0,#0F0H

           MOV TH0,#0D8H

           MOV IE,#82H

           SETB TR0

        LOOP:

SJMP LOOP

----------------------------------

ORG 2000H

MOV TL0,#0F0H

MOV TH0,#0D8H

CPL  P1.0

RETI

END

例2:

单片机P1口的输出通过与非门接发光二极管,正常情况发光二极管从左到右点亮,现系统开发中断INT0,当有中断发生时,灯间隙闪烁16次。

试编制相关程序。

解:

系统采用软件定时,定时时间为1S,开发外部中断INT0。

程序设计:

主程序:

            ORG 0000H

            LJMP 1000H

            ORG 0003H

            LJMP 2000H

            ORG 1000H

1000H:

SETB EA

    SETB EX0

    SETB IT0

    MOV A,#80H

LOOP:

MOV P1,A

    LCALL 1SMIN

    RL A

    LJMP  LOOP

子程序:

1SMIN:

MOV R0,#0FA

LOOP1:

MOV R1,#88H

LOOP2:

DJNZ R1,LOOP2

    DJNZ R0,LOOP1

    RET

中断服务程序:

    ORG 2000H

    MOV R2,#10H

LOOP3:

MOV P1,#55H

    LCALL 1SMIN

    MOV P1,#0AAH

    LCALL 1SMIN

    DJNZ R2,LOOP3

    RETI

    END

第三

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2