单片微机原理第四章411定时、中断、串行课件_第1页
单片微机原理第四章411定时、中断、串行课件_第2页
单片微机原理第四章411定时、中断、串行课件_第3页
单片微机原理第四章411定时、中断、串行课件_第4页
单片微机原理第四章411定时、中断、串行课件_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

第四章定时、中断、串行口系统及应用

第一节定时/计数系统及应用本章要点要点:1、定时器的结构、工作方式、初始化、编程应用2、中断系统的结构、中断的概念、中断的标志、中断优先级、中断响应、中断程序设计3、串行口的结构、串行通信的特点、串行通信的工作方式、波特率的设定难点:1、定时器的工作方式的设定和初始化2、中断响应及中断系统程序设计3、串行口的波特率的设定4.1.18051单片微机定时/计数器结构8051单片微机内部有两个16位可编程的定时/计数器(T0和T1),可用作定时器定时,也可作为计数器记录外部脉冲个数。用指令可以设定其工作方式、定时时间、启动、停止等。T0由TH0和TL0两个8位寄存器组成;T1由TH1和TL1两个8位寄存器组成。T0和T1的工作方式通过8位寄存器TMOD设定;T0和T1的启、停由8位寄存器TCON控制。一、定时/计数器工作原理两种功能:定时计数——记录外脉冲的个数1、定时原理定时器工作前先装入初值,利用送数指令将初值装入TH0和TL0或TH1和TL1,高位数装入TH0和TH1,低位数装入TL0和TL1。

当发出启动命令后,装初值寄存器开始计数,连续加1,每一个机器周期加1一次,加到满值(各位全1)。若再加l则溢出,同时将初值寄存器清零。如果继续计数定时,则需要重新赋初值。一、定时/计数器工作原理分析与定时有关的因数:1、与频率有关:12MHZ一个机器周期1微秒,6MHZ为2微秒。2、与初值有关:3、与定时器的大小有关2、计数原理:——下降沿计数检测一个1至0的跳变需要二个机器周期,所以最高计数频率为振荡频率的1/24。M1、M0两位可组合成4种状态,控制定时器的4种工作方式。每种方式的功能如表4—1所列3.方式选择位M1、M0三、控制及标志寄存器TCON

外部中断0触发方式外部中断0中断标志位外部中断1触发方式选择外部中断1中断标志位定时器T0启、停控制位定时器T0溢出标志位定时器T1启、停控制位定时器T1溢出标志位

TCON是一个八位寄存器。它控制定时器的启、停、溢出、中断等。有些位是控制设置,有些是标志位,各位都有对应地址,故可位寻址。TCON格式如下:8FH8EH8DH8CH8BH8AH89H88H←位地址

TF1TR1TF0TR0IE1IT1IE0IT04.1.2定时器初始化初始化:使用定时器时,必须先利用指令对其进行正确设置,这种设置过程称为初始化。一、定时器初始化的主要内容1.选择工作方式2.给定时器赋初值3.根据需要设置中断控制字4.启动定时器

1.选择工作方式选择工作方式,通过对方式寄存器TMOD进行设置。例如,欲设置T0为定时方式1,TMOD状态应置为:

00000001其状态字为01H。

MOVTMOD,#0lH,把TMOD设置成T0方式l状态。若设置T1为计数方式l,只需C/T=1,M0=l,则用指令MOVTMOD,#50H可达此目的。注意:TMOD不能位寻址GATEC/TM1M0GATEC/TM1M0

例T0初值3CB0H,T1初值00FFH。利用指令:MOVTH0,#3CH;送T0初值MOVTL0,#0B0HMOVTH1,#00H;送T1初值MOVTL1,#0FFH2.给定时器赋初值3.根据需要设置中断控制字对中断允许寄存器IE和优先级寄存器IP设置,详细在中断中介绍赋初值即把初始常数装入TH0、TL0或TH1、TL1二、定时器初值设定方法定时时间和定时器工作方式、初值及时钟周期均有关系,欲设定准确时间,必须会计算定时值。即使同样的时间,工作方式不同,初值则不同;时钟频率不同即使工作方式相同,初值也不同。一般设定初值分几步考虑。1.根据定时长短,选择工作方式因为工作方式不同,溢出一次计数最大值不同。设用M表示最大计数值,则各种方式计数最大值如下:方式0M=213=8192方式lM=216=65536方式2M=28=256方式3M=28=256

原则上:

定时时间长选用16位或13位计数器,即方式0或方式1。

若时间短选8位,即方式2和方式3,

如果需要自动装入初值,只能选择方式2。2.定时初值计算设初值为x,最大计数值为M。初值X与机器周期Tm、定时时间T的关系如下:(M-X)Tm=T①Tm=12个时钟周期=12/foscX=M-T/Tm②因为Tm=12/fosc当fosc=6MHz时,Tm=2μsfosc=12MHz时,Tm=1μs4.1.3定时/计数器应用程序设计一、定时程序设计

例编写用定时器延时1分钟的子程序。设fosc=12MHz。程序如下:

DELAY:MOVR0,#20;送延时1s常数MOVR1,#60;送延时1min常数MOVTMOD,#0lH;T0为方式1,送方式字MOVTH0,#3CH;送初值高字节MOVTL0,#0B0H;送初值低字节SETBTR0;启动T0

LP:JBCTF0LP1;判断溢出标志TF0=l转LP1

SJMPLP;继续查询50ms

LP1:MOVTH0,#3CH

MOVTL0,#0B0H

DJNZR0,LP;R0≠0继续查询

MOVR0,#20;R0=0重装循环常数

DJNZR1,LP;R1≠0继续循环定时

MOVR1,#60

RET;R1=0,1min到返回

无论定时多长,编程方法类似,只是改变定时初值和循环常数而已。

二、计数程序设计定时/计数器作为计数器方式,记录外部输入脉冲个数,外部脉冲每下跳变一次计数器加1。

编写每记录100个脉冲,将P1.0取反一次的程序。初值X=28-100=156=9CH最大值脉冲个数

程序MOVTMOD,#60H;T1方式2、计数方式MOVTH1,#9CH;保存备用初值MOVTL1,#9CH;赋初值SETBTR1;启动T1三、脉冲宽度测量程序设计测试过程如下:图4-2门控波形图所示:

脉冲宽度T=计数值×机器周期例测试INT0(P3.2)引脚上输入的外脉冲宽度。已知晶振频率fosc=12MHz。

选择T0方式1,门控方式(GATE=1),计数器从00H开始工作比较方便,计数器中的最后值则是总计数脉冲值。脉宽计算:从R0、R1中读出计数结果(即脉冲数),该值乘以机器周期则为脉冲宽度T。程序

MOVTMOD,#09H;设置T0方式l,门控方式

MOVTH0,#00H;初值为0

MOVTL0,#00H

SETBTR0;T0置1,等待脉冲高电平到才启动

JNBP3.2,$;P3.2

温馨提示

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

最新文档

评论

0/150

提交评论