C51单片机应用设计与技能训练(第2版)课件 任务5 设计定时控制的流水灯_第1页
C51单片机应用设计与技能训练(第2版)课件 任务5 设计定时控制的流水灯_第2页
C51单片机应用设计与技能训练(第2版)课件 任务5 设计定时控制的流水灯_第3页
C51单片机应用设计与技能训练(第2版)课件 任务5 设计定时控制的流水灯_第4页
C51单片机应用设计与技能训练(第2版)课件 任务5 设计定时控制的流水灯_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

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

文档简介

模块四

定时器/计数器4.1

定时器/计数器的结构4.1

定时器/计数器的结构可编程定时,通过对系统时钟脉冲计数而获得延时

,MCS-51

定时/计数器的优点:>可实现定时、计数功能,有利用实时控

制不占用CPU时间>定时精度高,修改方便TO

|P3.4(TO)TLO工作方式THOTMOD1.

定时/计数器结构TH1TCONTL1工作

方式定时/计数器的结构框图T1

P3.5(T1)微

器(1)结构组成部分两个16位的二进制定时/计数器TO

、T1>TO/T1分别由两个8位的计数器组成,均属SFR寄存器>TO由THO、TLO

构成,字节地址为8CH、8AH>T1由TH1、TL1

构成,字节地址为8DH、8BH;相关的控制寄存器◆方式寄存器TMOD◆控制寄存器TCON控制信号TRx定时功能>对片内机器周期进行计数,即每个机器周期

产生一个计数脉冲,计数加1。>

实时控制、实时采样、定时控制等。(2)定时器/计数器的原理振荡器

÷12加

1计数器C/T=1申请

中断TX端一C/T=0

TFx加

1计数器TX端一

C/T=1控制信号TRx计数功能对片外从T0(P3.4)

、T1(P3.5)(2)定时器/计数器的原理振荡器

÷12部脉冲信号进行计数,下降沿计数加1。计数频率为晶振频率的1/24。>生产线上产品计数、检测电机转速等功能。引脚输入的外申请

中断C/T=0

TFx(3)定时/计数器初值预置初值X的计数方法(设最大值为M,

计数值为

N,

初值为X,Tcy=12÷晶振频率)>定时状态:

X=M一定时时间/Tcy>计数状态:

X=M-N设定时/计数器为8位加1计

数器,要求定时每隔100

μs

时间,发一次中断请求(设

机器周期1μs),

选定时功

能,计数初值为156要求检测到100个脉冲,

发中断请求,通知CPU,

选计数功能,计数初值为1562.方式和控制寄存器(1)方式控制寄存器TMOD>SFR寄存器,地址89H>控制T0、T1的工作方式

>

仅可字节寻址GATEC/TM1MOGATEC/TM1MOT1方式控制TO方式控制M1

MO方式说明0

0013位计数器(TH的高8位和TL的低5位)0

1116位计数器1

02自动重装入初值的8位计数器1

13定时器0:分成两个独立的8位计数器定时器1:停止计数定时器工作方式选择M1

和M0

:

工作方式选择位功能选择及门控位>C/定时/计数功能选择位。为“0”,定时模式为“1”,计数模式GATE:门控位,定义T1/TO的启动方式,●GATE=0,非门控方式(内部启动):●TRO/1=1,启动定时器工作;●TRO/1=0,

停止定时器工作。●GATE=1,

门控方式(外部启动)●TRO/1=1且引脚INT0/1=1才启动。(2)状态控制寄存器TCON>SFR

寄存器,地址88H>即参与定时控制又参与中断控制>与定时控制相关的有4位>TF1/TF0:当T1/TO的计数器计数溢出时,该位置“1”;>TR1/TR0:T1/T0运行控制位。软件将其置“1”时,

动T1/TO工作。8FH8EH

8DH8CH

8BH8AH89H

88HTF1

TR1

TF0

TRO

IE1IT1

IE0

ITO模块四

定时器/计数器4.2

定时器/计数器的工作方式4.2定时器/计数器工作方式1.工作方式0■

M1M0=00;作定时器:TMOD=00000000=00H作计数器:TMOD=00000100=04H■13位计数器;TH:8

位TL:低5位,高3位不用。方式0的工作原理方式0的应用>

计数初值最大计数值为2¹³=8192定时时间:△T=(21³-TO

的初值)×Tey计数个数:

S=21³-TO

的初值定时器初始化编程(1)向TMOD寄存器中写入工作方式控制字(2)向定时/计数器THO

、TLO

(

或TH1

、TL1)

装入初值(3)启动定时/计数器(置位TRO/TR1)(4)如采用中断方式,置位ETO(ET1)、

EA

、IP

等中断寄存器例:已知单片机晶振频率6MHz,

利用TO的方式0在

P1.0引脚输出周期为500us的方波解:1)方波波形如图所示2)TMOD

初始化00H3)计数初值:计数初值=2¹³-欲计数脉冲数=2¹³-△T/T=2¹³-250/2=1F83H=

0001111110000011B∴TH1=0xFC,TL1=0x034)TCON

.

TR0=1500us#include<reg51.h>sbitp10=P1^0;main()TMOD=0;TH0=0XFC;TLO=0X03;TR0=1;while(1)while(TF0==0);p10=~p10;TH0=0XFC;TL0=0X03;

TF0=0;查询方式程序清单#include<reg51.h>sbit

p10=P1^0;void

isr

t00;main(){TMOD=0;THO=0XFC;TLO=0X03;TR0=1;EA=1;ETO=1;while(1);void

isr

t0()interrupt

1p10=~p10;TH0=0XFC;TLO=0X03;中断方式程序清单例单片机晶振频率12MHz,

利用TO的方式0实现1s延时,每隔1s钟使P1.0引脚翻转一次。■

1)TMOD

初始化

00H■2)计数初值:定时时间:tmax=8192×1us=8.192ms;取5ms1秒延时实现:5ms延时200次TO的初值:=2¹³-5000μs/1s=3192=0C78H=000

0110001111000B■

∴THO=63H,TLO=18H#include<reg51.h>void

isr

time0(void);sbitP10=P1^0;unsignedintcounter=200;

voidmain(){TMOD=0X00;TH0=0X63;TLO=0X18;TRO=1;EA=1;ETO=1;while(1);}void

isr

time0()interrupt{counter--;if(!counter){counter=200;P10=~P10;}TH0=0X63;TLO=0X18;源程序清单:2.

定时/计数器工作方式1M1M0=01作定时器:TMOD=00000000=01H作计数器:TMOD=00000100=05H>16位计数器,逻辑结构框图如下:THO

TLO(8位)

(8位)

TFO控制

EAETO

&振荡器

÷12TOTR0—GATE—INTO端C/T=0C/T=1&中断&例

利用TO的方式1完成例3-6的功能(即在P1.0引脚

输出周期为500us的方波)。■1)TMOD

初始化

01H■2)计数初值:计数初值=21⁶-欲计数脉冲数=21⁶-△T/Tcy=2¹⁶-250/2=65411=FF83H因此TH1=0xFF,TL1=0x83■

3)TCON初始化,TR0=1■

4)开中断:

EA=1;ET0=1源程序清单//主函数#include<reg51.h>void

isr

time0(void);sbitP10=P1^0;void

main(){TMOD=0X01;THO=-125>>8;TLO=-125;TRO=1;EA=1;ETO=1;while(1);小技巧

:实

服务函数利用C51编

程时,计数初值可以直接

yid

is方法me(void)interrμBt518

;//

取计数初值的高8位(0FFH)Tp9o-125P10;

动取计数初

值的低8位(83H)不需要计算出具’体的计数

初值Q=仙2读者要清楚计算

计数初值的原理。3.定时/计数器工作方式2M1M0=10作定时器:TMOD=02H作计数器:TMOD=06H>自动重置初值的8位计数器,逻辑结构如图:振荡器

÷12

-TO—TROGATE

一D-TLO

(8位)控制THO(8位)CT=0

C/T=1&TFO重

新装入EA中断&ET0&案例——啤酒自动生产线■某啤酒自动生产线,需要每生产12瓶执行装箱操作,将生产出的啤酒自动装箱,用单片机实现该控制要

求。●解:如果啤酒生产线上装有传感装置,每检

测一瓶啤酒就向单片机发送一个脉冲信号,

使用计数功能就可实现该控制要求。●1)TMOD

初始化06HTHO=TL0=2—12=0F4H程序清单#include<reg51.h>void

isr

time0(void);void

main()void

isr

time()interrupt

1int

i,time=600;P37=0;//

驱动电机转动while(time

--)//假设装箱时间固定

for(i=500;i>0;i--);P37=1;//装箱结束电机停止转动TMOD=0x06;TLO=0Xf4;TH0=0Xf4;

TRO=1;ETO=1;EA=1;

while(1);TR0

一GATEINTO端一振荡器

÷12TLO(8位)EAETOTHO(8位)4.

定时/计数器工作方式3T0中断T1中断控制控

制TFO&一TF1振荡器T0

端□C/T=0C/T=1仅作定时器用人TR1÷12&4.

定时/计数器工作方式3>

M1M0=11>T0、T1的设置和使用不同>T0两个8位的计数器TLO:

使用T0

原有控制资源,功能与方式0、1

。TH0:

用T1的TR1

、TF1,只能对片内机器周期脉冲计数,作8位定时器。>

T0

初值计算完全同方式2。TO工作方式3时T1的工作■T1仍然可工作于方式0~2,C/控制位仍可使T1工作

在定时器或计数器方式,由于其TR1、TF1

被T0

的TH0占用,因而计数溢出时只能将输出结果送至串

口,即用作串行口波特率发生器。■T1工作于方式2,因定时初值能自动恢复,用作波特

率发生器。■因定时器1的TR1

被占用,其启动和关闭比较特殊:●当设置好工作方式时,T1

自动开始运行。●送入一个设置定时器1为方式3的方式字即可停止

T1

。例

已知系统晶振12MHz,

试用定时器0的方式3实现1s的延时(设每秒让P0.0所接的发光二极管闪烁一次)

。>TMOD初始化

07H>

THO作为定时器,定时时间250us;初值28

—250=06H>

TLO

作为计数器,计数200次;初值28—200=38H因250μs*200=50ms,则需引进一个变量,TLO

计数满后该变量加1,直至20则为1s主函数#include<reg51.h>sbitP00=PO^0;sbit

P34=P3^4;unsigned

char

count;void

delay();main()TMOD=7;THO=0x06;TLO=0x38;while(1){PO0=~P00;

delay();}}延时函数void

delay(){count=0;while(count<20){while(TF0==0){while(TF1==0);P34=0;THO=6;TF1=0;P34=1;

}TLO=0x38;TF0=0;count++;数组一维数组■在许多程序中,可能需要保留一块连续的存储空间

,相应的存储空间就是数组。■数组是一组变量,具有相同的数据类型,在某种意

义上具有一定的关系。■这些变量是所属数组的成分分量,称为数组元素,

既可以是基本数据类型,也可以是构造数据类型。1.

一维数组的定义数据类型

数组名[常量表达式]={值列表};定义了一个一维整形数组a,10表示有

10个元

:a[0],a[1],a[2].……a[8],a[9]定义了一个一维字符数组s1,5

表示有5个元素:s1[0],s1[1],s1[2],s1[3],s1[4]Exampleint

a[10];char

s1[5];1.

一维数组的定义■常量表达式中可以包括常量和符号常量,不能包含

变量。即C语言不允许对数组的大小作动态定义。■

如:inti=5;int

a[i];表示引用数组a中的第2个元素表示引用数组a中的第6个元素表示引用数组a中的第16个元素int

n=5,a[20];a[1]a[n]a[3*n]数组名[下标];Example2、一维数组元素的引用下标可以是整型常量、整型变量和整型表达式。2、一维数组元素的引用■

:●数组必须先定义后使用。●只能逐个引用数据元素而不能整体引用。●若一个数组长度为n,其下标值范围是0~(n-1)二维数组1.

二维数组的定义数据类型

数组名[常量表达式1][常量表达式2]={值列表};行

列int

a[3,4],b(3,4);int

c[][],d(3)(4);Exampleintx[2][3];x[(x[1二、二维数组2.

引用引

数组名[行下标][列下标]Exampleint

a[3][4];

a[3][4]=3;

/*

下标越界*/a[0][0]=3;

a[1,2]=1;/*a[1][2]=1;*/a[0][1]=a[0][0]+10;二维数组■

3.二维数组的初始化(1)分行对二维数组初始化(2)按数组排列的顺序初始化(3)对全部数组元素初始化(4)给部分元素赋初值用二层循环语句处理数组,通常外循环控制行,内循环控制列。3

4Exampl

温馨提示

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

最新文档

评论

0/150

提交评论