当前位置:文档之家› 中断定时器串口通信

中断定时器串口通信

中断定时器串口通信
中断定时器串口通信

总结

51单片机

一.中断

一、中断的概念

CPU 在处理某一事件A 时,发生了另一事件B 请求CPU 迅速去处理(中断发生);

CPU 暂时中断当前的工作,转去处理事件B (中断响应和中断服务);

待CPU 将事件B 处理完毕后,再回到原来事件A 被中断的地方继续处理事件A (中断返回),这一过程称为中断 。

二、80C51的中断系统有5个中断源(8052有 6个) ,2个优先级,可实现二级中断嵌套 。

1、(P3.2)可由IT0(TCON.0)选择其为低电平有效还是下降沿有

SCON

TCON

IE

IP

硬件查询

效。当CPU检测到P3.2引脚上出现有效的中断信号时,中断标志IE0(TCON.1)置1,向CPU申请中断。

2、(P3.3)可由IT1(TCON.2)选择其为低电平有效还是下降沿有效。当CPU检测到P3.3引脚上出现有效的中断信号时,中断标志IE1(TCON.3)置1,向CPU申请中断。

3、TF0(TCON.5),片内定时/计数器T0溢出中断请求标志。当定时/计数器T0发生溢出时,置位TF0,并向CPU申请中断。

4、TF1(TCON.7),片内定时/计数器T1溢出中断请求标志。当定时/计数器T1发生溢出时,置位TF1,并向CPU申请中断。

5、RI(SCON.0)或TI(SCON.1),串行口中断请求标志。当串行口接收完一帧串行数据时置位RI或当串行口发送完一帧串行数据时置位TI,向CPU申请中断。

中断请求标志位

51单片机的这5个中断源的6个中断标志位和2个中断触发方式控制位分别由特殊功能的寄存器TCON和SCON的相应位锁存。

1、TCON的中断标志

IT0(TCON.0),外部中断0触发方式控制位。

当IT0=0时,为电平触发方式。

当IT0=1时,为边沿触发方式(下降沿有效)。

IE0(TCON.1),外部中断0中断请求标志位。

IT1(TCON.2),外部中断1触发方式控制位。

IE1(TCON.3),外部中断1中断请求标志位。

TF0(TCON.5),定时/计数器T0溢出中断请求标志位。

TF1(TCON.7),定时/计数器T1溢出中断请求标志位。

TR0(TCON.4),定时器T0运行控制位。TR0=1,开定时器0

TR1(TCON.6),定时器T1运行控制位。TR1=1,开

2.SCON的中断标志

RI(SCON.0),串行口接收中断标志位。当允许串行口接收数据时,每接收完一个串行帧,由硬件置位RI。注意,RI必须由软件清除。

TI(SCON.1),串行口发送中断标志位。当CPU将一个发送数据写入串行口发送缓冲器时,就启动了发送过程。每发送完一个串行帧,由硬件置位TI。CPU响应中断时,不能自动清除TI,TI必须由软件清除。

三.CPU对中断系统所有中断以及某个中断源的开放和屏蔽是由中断允许寄存器IE控制的。

EX0(IE.0),外部中断0允许位;

ET0(IE.1),定时/计数器T0中断允许位;

EX1(IE.2),外部中断1允许位;

ET1(IE.3),定时/计数器T1中断允许位;

ES(IE.4),串行口中断允许位;

EA (IE.7),CPU中断允许(总允许)位。

四、中断响应条件

1.中断源有中断请求;

2.此中断源的中断允许位为1;

3.CPU开中断(即EA=1)。

以上三条同时满足时,CPU才有可能响应中断。例如:外部中断0响应条件:

EA=1;//开全中断(允许位)

EX0=1;//开外部中断0中断(允许位)

IT0=1;//触发方式(0:低电平触发,1:边沿触发)void exter0() interrupt 0

{

}

二.定时器

一、定时/计数器的结构

定时/计数器的实质是加1计数器(16位),由高8位和低8位两个寄存器组成。TMOD是定时/计数器的工作方式寄存器,确定工作方式和功能;TCON是控制寄存器,控制T0、T1的启动和停止及设置溢出标志。

1、工作方式寄存器TMOD

工作方式寄存器TMOD用于设置定时/计数器的工作方式,低四位用于T0,高四位用于T1。其格式如下:

GATE:门控位。GATE=0时,只要用软件使TCON中的TR0或TR1为1,就可以启动定时/计数器工作;GATA=1时,要用软件使TR0或TR1为1,同时外部中断引脚或也为高电平时,才能启动定时/计数器工作。即此时定时器的启动多了一条件。

C/T:定时/计数模式选择位。C/T=0为定时模式;C/T =1为计数模式。

M1M0:工作方式设置位。定时/计数器有四种工作方式,由M1M0进行设置。

主要用方式1!

TCON的低4位用于控制外部中断,已在前面介绍。TCON的高4位用于控制定时/计数器的启动和中断申请。其格式如下:

1.TF1(TCON.7):T1溢出中断请求标志位。T1计数溢出

时由硬件自动置TF1为1。CPU响应中断后TF1由硬件自动清0。T1工作时,CPU可随时查询TF1的状态。所以,TF1可用作查询测试的标志。TF1也可以用软件置1或清0,同硬件置1或清0的效果一样。

2.TR1(TCON.6):T1运行控制位。TR1置1时,T1开始

工作;TR1置0时,T1停止工作。TR1由软件置1或清0。

所以,用软件可控制定时/计数器的启动与停止。

3.TF0(TCON.5):T0溢出中断请求标志位,其功能与TF1

类同。

4.TR0(TCON.4):T0运行控制位,其功能与TR1类同。

定时器/计数器初始化程序应完成如下工作:

1、对TMOD赋值,以确定T0和T1的工作方式。

2、计算初值,并将其写入TH0、TL0或TH1、TL1。

3、中断方式时,则对IE赋值,开放中断。

4、使TR0或TR1置位,启动定时/计数器定时或计数。

三.串口

一.80C51串行口的结构

有两个物理上独立的接收、发送缓冲器SBUF ,它们占用同一地址99H ;接收器是双缓冲结构 ;发送缓冲器,因为发送时CPU 是主动的,不会产生重叠错误。 二.80C51串行口的控制寄存器

SCON 是一个特殊功能寄存器,用以设定串行口的工作方式、接收/发送控制以及设置状态标志:

SM0和SM1为工作方式选择位,可选择四种工作方式:

SM2,多机通信控制位,主要用于方式2和方式3。当接收机的SM2=1时可以利用收到的RB8来控制是否激活RI(RB8=0时不激活RI,收到的信息丢弃;RB8=1时收到的数据进入SBUF,并激活RI,进而在中断服务中将数据从SBUF读走)。当SM2=0时,不论收到的RB8为0和1,均可以使收到的数据进入SBUF,并激活RI(即此时RB8不具有控制RI激活的功能)。通过控制SM2,可以实现多机通信。

在方式0时,SM2必须是0。在方式1时,若SM2=1,则只有接收到有效停止位时,RI才置1。

●REN,允许串行接收位。由软件置REN=1,则启动串行口接收数据;若软件置REN=0,则禁止接收。

TB8,在方式2或方式3中,是发送数据的第九位,可以用软件规定其作用。可以用作数据的奇偶校验位,或在多机通信中,作为地址帧/数据帧的标志位。

在方式0和方式1中,该位未用。

●RB8,在方式2或方式3中,是接收到数据的第九位,作为奇偶校验位或地址帧/数据帧的标志位。在方式1时,若SM2=0,则RB8是接收到的停止位。

●TI,发送中断标志位。在方式0时,当串行发送第8位数据结束时,或在其它方式,串行发送停止位的开始时,由内部硬件使TI置1,向CPU发中断申请。在中断服务程序中,必须用软件将其清0,取消此中断申请。

●RI,接收中断标志位。在方式0时,当串行接收第8位数据结束时,或在其它方式,串行接收停止位的中间时,由内部硬件使RI置1,向CPU发中断申请。也必须在中断服务程序中,用软件将其清0,取消此中断申请。

PCON中只有一位SMOD与串行口工作有关:

SMOD(PCON.7)波特率倍增位。在串行口方式1、方式2、方式3时,波特率与SMOD有关,当SMOD=1时,波特率提高一倍。复位时,SMOD=0。

四、波特率的计算

在串行通信中,收发双方对发送或接收数据的速率要有约定。通过软件可对单片机串行口编程为四种工作方式,其中方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可变的,由定时器T1的溢出率来决定。

串行口的四种工作方式对应三种波特率。由于输入的移位时钟的来源不同,所以,各种方式的波特率计算公式也不相同。方式0的波特率= fosc/12

方式2的波特率=(2SMOD/64)· fosc

方式1的波特率=(2SMOD/32)·(T1溢出率)

方式3的波特率=(2SMOD/32)·(T1溢出率)

当T1作为波特率发生器时,最典型的用法是使T1工作在自动再装入的8位定时器方式(即方式2,且TCON的TR1=1,以启动定时器)。这时溢出率取决于TH1中的计数值。

T1 溢出率= fosc /{12×[256 -(TH1)]} 在单片机的应用中,常用的晶振频率为:12MHz和11.0592MHz。所以,选用的波特率也相对固定。常用的串行口波特率以及各参数的关系如表所示。

串行口工作之前,应对其进行初始化,主要是设置产生波特率的定时器1、串行口控制和中断控制。具体步骤如下:

1、确定T1的工作方式(编程TMOD寄存器);

2、计算T1的初值,装载TH1、TL1;

3、启动T1(编程TCON中的TR1位);

4、确定串行口控制(编程SCON寄存器);

串行口在中断方式工作时,要进行中断设置(编程IE、IP 寄存器)。

TMOD=0X20; //T1方式2

TH1=FDH;//9600

TL1=FDH;//9600

TR1=1;//开定时器1

MOM1=01;//串口工作方式1

REN=1;//允许串口接收

EA=1;//开全局中断

ES=1;//开串口中断

例1:外部中断0响应条件:

EA=1;//开全中断(允许位)

EX0=1;//开外部中断0中断(允许位)

IT0=1;//触发方式(0:低电平触发,1:边沿触发)void exter0() interrupt 0

{

。。。。。

}

例2:外部中断1响应条件:

EA=1;//开全中断(允许位)

EX1=1;//开外部中断1中断(允许位)

IT1=1;//触发方式(0:低电平触发,1:边沿触发)void exter1() interrupt 2

{

。。。。。

}

例3:定时器0中断响应条件:

TMOD=0x01H;//选择定时器0为工作方式1

TH0= //初始化

TL0= //初始化

EA=1;//开全中断(允许位)

ET0=1;//开定时器/计数器0中断中断(允许位)TR0=1;//开定时器0

void timer0 () interrupt 1

{

。。。。。

}

例4:定时器1中断响应条件:

TMOD=0x10H;//选择定时器1为工作方式1 TH1= //初始化

TL1= //初始化

EA=1;//开全中断(允许位)

ET1=1;//开定时器/计数器1中断中断(允许位)TR1=1;//开定时器1

void timer1 () interrupt 3

{

。。。。。

}

例5:串口中断响应条件:

#include

unsigned char a;

void main()

{

TMOD=0X20; //T1方式2

TH1=FDH;//9600

TL1=FDH;//9600

TR1=1;//开定时器1

MOM1=01;//串口工作方式1 REN=1;//允许串口接收

EA=1;//开全局中断

ES=1;//开串口中断

while(1)

{

if(RI==1)

{

RI=0;

P1=SBUF;

}

}

}

void ser() interrupt 4

{

RI=0;

P1=SBUF;

}

定时器实验报告

电子信息工程学系实验报告 课程名称:单片机原理及接口应用Array实验项目名称:51定时器实验实验时间: 班级:姓名:学号: 一、实验目的: 熟悉keil仿真软件、protues仿真软件的使用和单片机定时程序的编写。了解51单片机中定时、计数的概念,熟悉51单片机内部定时/计数器的结构与工作原理。掌握中断方式处理定时/计数的工作过程,掌握定时/计数器在C51中的设置与程序的书写格式以及使用方法。 二、实验环境: 软件:KEIL C51单片机仿真调试软件,proteus系列仿真调试软件 三、实验原理: 1、51单片机定时计数器的基本情况 8051型有两个十六位定时/计数器T0、T1,有四种工作方式。MCS-51系列单片机的定时/计数器有几个相关的特殊功能寄存器: 方式控制寄存器TMOD; 加法计数寄存器TH0、TH1 (高八位);TL0、TL1 (低八位); 定时/计数到标志TF0、TF1(中断控制寄存器TCON) 定时/计数器启停控制位TR0、TR1(TCON) 定时/计数器中断允许位ET0、ET1(中断允许寄存IE) 定时/计数器中断优先级控制位PT0、PT1(中断优IP) 2、51单片机的相关寄存器设置 方式控制寄存器TMOD: TMOD的低四位为T0的方式字,高四位为T1的方式字。TMOD不能位寻址,必须整体赋值。TMOD各位的含义如下: 1. 工作方式选择位M1、M0 3、51单片机定时器的工作过程(逻辑)方式一 方式1:当M1M0=01时,定时器工作于方式1。

T1工作于方式1时,由TH1作为高8位,TL1作为低8位,构成一个十六位的计数器。若T1工作于定时方式1,计数初值为a,晶振频率为12MHz,则T1从计数初值计数到溢出的定时时间为t =(216-a)μS。 4、51单片机的编程 使用MCS-51单片机的定时/计数器的步骤是: .设定TMOD,确定: 工作状态(用作定时器/计数器); 工作方式; 控制方式。 如:T1用于定时器、方式1,T0用于计数器、方式2,均用软件控制。则TMOD的值应为:0001 0110,即0x16。 .设置合适的计数初值,以产生期望的定时间隔。由于定时/计数器在方式0、方式1和方式2时的最大计数间隔取决于使用的晶振频率fosc,如下表所示,当需要的定时间隔较大时,要采用适当的方法,即将定时间隔分段处理。 计数初值的计算方法如下,设晶振频率为fosc,则定时/计数器计数频率为fosc/12,定时/计数器的计数总次数T_all在方式0、方式1和方式2时分别为213 = 8192、216 = 65536和28 = 256,定时间隔为T,计数初值为a,则有 T = 12×(T_all – a)/fosc a = T_all – T×fosc/12 a = – T×fosc/12 (注意单位) THx = a / 256;TLx = a % 256; .确定定时/计数器工作于查询方式还是中断方式,若工作于中断方式,则在初始化时开放定时/计数器的中断及总中断: ET0 = 1;EA = 1; 还需要编写中断服务函数: void T0_srv(void)interrupt 1 using 1 { TL0 = a % 256; TH0 = a / 256; 中断服务程序段} .启动定时器:TR0(TR1)= 1。 四、实验内容过程及结果分析: 利用protues仿真软件设计一个可以显示秒表时间的显示电路。利用实验板上的一位led数码管做显示,利用中断法编写定时程序,控制单片机定时器进行定时,所定时间为1s。刚开始led数码管显示9,每过一秒数码管显示值减一,当显示到0时返回9,依此反复。然后设计00-59的两位秒表显示程序。 (1)实现个位秒表,9-0

单片机计数器与定时器的区别

单片机计数器与定时器的区别 在的学习过程中,我们经常会发现中断、串口是学习的难点,对于初学者来说,这几部分的内容很难理解。但是我个人觉得这几部分内容是的重点,如果在一个学期的课堂学习或者自学中没有理解这几部分内容,那就等于还没有掌握51单片机,那更谈不上单片机的开发了,我们都知道在成品的单片机项目中,有很多是以这几部分为理论基础的,万年历是以定时器为主的,报警器是以中断为主的,联机通讯是以串口为主的。 在这几部分内容中,计数器/定时器对于初学者说很容易搞混淆,下面我将对这方面的内容结合自己的学习经验谈几点看法。 计数器和定时器相同的,他们都是对单片机中产生的脉冲进行计数,只不过计数器是单片机外部触发的脉冲,定时器是单片机内部在晶振的触发下产生的脉冲。当他们的脉冲间隔相同的时候,计数器和定时器就是一个概念。 在定时器和计数器中都有一个溢出的概念,那什么是溢出了。我们可以从一个生活小常识得到答案,当一个碗放在水龙头下接水的时候,过了一会儿,碗的水满了,就发生溢出。同样的道理,假设水龙头的水是一滴滴的往碗里滴,那

么总有一滴水是导致碗中的水溢出的。在碗中溢出的水就浪费了,但是在单片机的中溢出将导致一次中断。 在定时器计数器中,我们有个概念叫容量,就是最大计数量。 把水滴比喻成脉冲,那么导致碗中水溢出的最后一滴水的就是定时计数器的溢出的最后一个脉冲。 在各种单片机书本中,在介绍定时计数器时都讲到一个计数初值,那什么是计数初值呢?在这里我们还是假设水滴碗。假设第一百滴水能够使碗中的水溢出,我们就知道这个碗的容量是100。 在这里计数初值有3个,假设: 根据所得的初始值,再将其转换为,就可以进行计数或者定时了。后面讲解定时器初值的。 单片机, 计数器, 定时器

51单片机外部中断与定时器的实用

中断使能寄存器 通过设置中断使能寄存器 IE 的 EA 位 使能所有中断 每个中断源都有单独的使能位 可通过软件设置 IE 中相应的使能位在任何时候使能或禁能中断 中断使能寄存器 IE 的各 位如下所示 中断使能寄存器IE 位地址 0AFH 0AEH 0ADH 0ACH 0ABH 0AAH 0A9H 0A8H 位符号 EA / ET2 ES ET1 EX1 ET0 EX0 EA 使能标志位 置位则所有中断使能 复位则禁止所有中断保留 ET2 定时器2 中断使能 ES 串行通信中断使能 ET1 定时器 1 中断使能 EX1 外部中断 1 使能 ET0 定时器0 中断使能 EX0 外部中断 0使能 8051 支持两个中断优先级 有标准的中断机制, 低优先级的中断只能被高优先级的中断所中断 ,而高优先级的中断不能被中断。 中断优先级寄存器 每个中断源都可通过设置中断优先级寄存器IP 来单独设置中断优先级 如果每个中断源的相应位被置位 则该中断源的优先级为高,如果相应的位被复位, 则该中断源的优先级为低, 如果你觉得两个中断源不够用 ,别急以后我会教你如何增加中断优先级 表 A-5 示出了 IP 寄存器的各位 此寄存器可位寻址 IP 寄存器 位地址 0BFH 0BEH 0BDH 0BCH 0BBH 0BAH 0B9H 0B8H 位符号 / / / PS PT1 PX1 PT0 PX0 编号 中断源 中断向量 上电复位 0000H 0 外部中断0 0003H 1 定时器0溢出 000BH 2 外部中断1 0013H 3 定时器1溢出 001BH 4 串行口中断 0023H 5 定时器2溢出 002BH PT2 定时器 2中断优先级 PS 串行通信中断优先级 PT1 定时器 1中断优先级 PX1 外部中断1 优先级 PT0 定时器0中断优先级 PX0 外部中断0 优先级

单片机中断实验报告

实验三定时器中断实验 一、实验目的 1、掌握51单片机定时器基本知识; 2、掌握定时器的基本编程方法; 3、学会使用定时器中断。 二、实验内容 1、利用定时器设计一个秒表,计数范围为0—59,并在数码管实时显示。 三、实验设备 PC 机一台、单片机实验箱 主要器件:AT89C52、7SEG-BCD、 四、实验步骤 1、使用Proteus设计仿真原理图; 2、使用Keil设计程序; 3、联合调试仿真。 五、实验流程图 六、实验程序与结果 #include #define uint unsigned int #define uchar unsigned char sbit F=P2^1; void timer1_init() 开始 设置显示初值启动定时器 判断是否到59 继续 是 否

{ TMOD=0x10;//将定时器1设置为工作方式1 TH1=(65536-6000)/256;//定时器每加一时间为1/fsoc,定时时间为1/500 //(1/500)s/(1/3000000)s=6000 TL1=(65536-6000)%256;//fsoc=3000000,所以装入16位定时器中值为65536-6000 EA=1; ET1=1; TR1=1; } void main() { timer1_init(); while(1); } void timer1() interrupt 3 { TH1=(65536-6000)/256;//每次进入中断,重装初值TL1=(65536-6000)%256; F=~F;//每次进入中断P1.1口取反 } #include #define uint unsigned int #define uchar unsigned char sbit F=P2^1; void timer0_init() {TMOD=0x01;//将定时器0设置为工作方式1 TH0=(65536-83)/256;//定时器每加一时间为1/fsoc,定时时间为2Khz,既500us //500us/6us=83.3333 TL0=(65536-83)%256;//fsoc=6000000,所以装入16位定时器中值为65536-83 EA=1; ET0=1; TR0=1; }void main() { timer0_init(); while(1); } void timer0() interrupt 1 { TH0=(65536-83)/256;//每次进入中断,重装初值 TL0=(65536-83)%256; F=~F;//每次进入中断P1.1口取反,表示定时时间到 } #include // 包含51单片机寄存器定义的头文件 #define seg_data P1 #define seg_data2 P3 #define uint unsigned int

定时器计数器

定时器/计数器 MCS-51单片机内部有两个16位可编程的定时器/计数器,即定时器T0(由TH0和TL0组成)和定时器T1(由TH1和TL1组成),它们既可用作定时器定时,又可用作计数器记录外部脉冲个数,其工作方式、定时时间、启动、停止等均用指令设定。 定时器/计数器的结构 1.定时器/计数器的工作原理 定时器/计数器T0和T1的工作方式通过八位寄存器TMOD设定,T0和T1 的启动、停止由八位寄存器TCON控制。工作前需先装入初值,利用传送指令将初值装入加1计数器TH0和TL0或TH1和TL1,高位数装入TH0或TH1,低位数装入TL0或TL1。当发出启动命令后,加1计数器开始加1计数,加到满值(各位全1)后,再加1就会产生溢出,系统将初值寄存器清0。如果需要继续计数或定时,则需要重新赋计数初值。 2.定时器的方式寄存器TMOD 特殊功能寄存器TMOD为定时器的方式控制寄存器。TMOD是用来设定定时器的工作方式,其格式如下: 各位功能如下: (1)GATE控制定时器的两种启动方式 当GATE=0时,只要TR0或TR1置1,定时器启动。 当GATE=1时,除TR0或TR1置1外,还必须等待外部脉冲输入端(P3.3)或(P3.2)高电平到,定时器才能启动。若外部输入低电平则定时器关闭,这样可实现由外部控制定时器的启动、停止,故该位被称为门控位。定时器1类同。 (2)定时/计数方式选择位 当该位为0时,T0或T1为定时方式;当该位为1时,T0或T1为计数方式。(3)方式选择位M1、M0 M1、M0两位可组合成4种状态,控制4种工作方式。每种方式的功能如表5-1。 表5-1 M1、M0控制的工作方式 M1 M0 工作方式说明 0 0 0 1 1 0 1 1 0 1 2 3 13位计数器 16位计数器 可再装入8位计数器

嵌入式定时器基本功能(定时器中断)c语言代码

定时器基本功能实验(定时器中断) 1.实验内容 使用定时器0 实现1 秒定时,控制蜂鸣器蜂鸣。采用中断方式实现定时控制。 备注:EasyARM2131实验板上的系统时钟默认为11.0592MHz;系统中已定义了符号常量Fpclk = 11059200 ; 2.实验步骤 ①启动ADS 1.2,使用ARM Executable Image for lpc2131工程模板建立一个工程 TimeOut_C。 ②在user 组中的main.c 中编写主程序代码。 ③主程序中使用IRQEnable( )使能IRQ 中断。 ④选用DebugInExram 生成目标,然后编译连接工程。 ⑤将LPC2131实验板上的Beep跳线短接到P0.7。 ⑥选择【Project】->【Debug】,启动AXD 进行JTAG 仿真调试。 ⑦全速运行程序,蜂鸣器会响一秒,停一秒,然后再响一秒……依次循环。 3.实验参考程序 程序清单错误!文档中没有指定样式的文字。-1 定时器实验参考程序 #include "config.h" #define BEEP 1 << 7 /* P0.7控制BEEP,低电平蜂鸣 */ /***************************************************************************************** ** 函数名称:IRQ_Timer0() ** 函数功能:定时器0中断服务程序,取反LED9控制口。 ** 入口参数:无 ** 出口参数:无 ****************************************************************************************** */ void __irq IRQ_Timer0 (void) { if ((IO0SET & BEEP) == 0) IO0SET = BEEP; /* 关闭BEEP */ else IO0CLR = BEEP; T0IR = 0x01; /* 清除中断标志*/ VICVectAddr = 0x00; /* 通知VIC中断处理结束*/ } /* ***************************************************************************************** ** 函数名称:main()

用定时器计数器设计一个简单的秒表

目录 摘要................................................................................................ 错误!未定义书签。 1 Proteus简介错误!未定义书签。 2 主要相关硬件介绍错误!未定义书签。 AT89C52简介错误!未定义书签。 四位数码管错误!未定义书签。 74LS139芯片介绍错误!未定义书签。 3 设计原理错误!未定义书签。 4 电路设计错误!未定义书签。 电路框图设计错误!未定义书签。 电路模块介绍错误!未定义书签。 控制电路错误!未定义书签。 译码电路错误!未定义书签。 数码管显示电路错误!未定义书签。 仿真电路图错误!未定义书签。 5 设计代码错误!未定义书签。 6 仿真图错误!未定义书签。 7 仿真结果分析错误!未定义书签。 8 实物图错误!未定义书签。 9 心得体会错误!未定义书签。 参考文献错误!未定义书签。

摘要 现在单片机的运用越来越宽泛,大到导弹的导航装置、飞机上各种仪表的控制、计算机的网络通讯与数据传输、工业自动化过程的实时控制和数据处理,小到广泛使用的各种智能IC卡、各种计时和计数器等等。本次课设我们要设计一个能显示计时状态和结果的秒表,它是基于定时器/计数器设计一个简单的秒表。 本次设计的数字电子秒表系统采用AT89C51单片机为中心器件,利用其定时器/计数器定时和记数的原理,结合显示电路、LED数码管以及外部中断电路来设计计时器。将软、硬件有机地结合起来,使得系统能够实现四位LED显示,显示时间为0~秒,计时精度为秒,能正确地进行计时,并显示计时状态和结果。其中软件系统采用汇编或者C语言编写程序,包括显示程序,定时中断服务,外部中断服务程序,延时程序等,并在keil中调试运行,硬件系统利用PROTEUS强大的功能来实现,简单切易于观察,在仿真中就可以观察到实际的工作状态。 关键词:秒表,AT89C51,proteus,C语言

定时器计数器答案

定时器/计数器 6·1 80C51单片机内部有几个定时器/计数器?它们是由哪些专用寄存器组成? 答:80C51单片机内部设有两个16位的可编程定时器/计数器,简称为定时器0(T0)和定时 器l(Tl)。在定时器/计数器中的两个16位的计数器是由两个8位专用寄存器TH0、TL0,THl、TLl组成。 6·2 80C51单片机的定时器/计数器有哪几种工作方式?各有什么特点? 答:80C51单片机的定时器/计数器有4种工作方式。下面介绍4种工作方式的特点。 方式0是一个13位的定时器/计数器。当TL0的低5位溢出时向TH0进位,而TH0溢出时向中断标志TF0进位(称硬件置位TF0),并申请中断。定时器0计数溢出与否,可通过查询TF0是否置位或产生定时器0中断。 在方式1中,定时器/计数器的结构与操作几乎与方式0完全相同,惟一的差别是:定时器是以全16位二进制数参与操作。 方式2是能重置初值的8位定时器/计数器。其具有自动恢复初值(初值自动再装人)功;能,非常适合用做较精确的定时脉冲信号发生器。 方式3 只适用于定时器T0。定时器T0在方式3T被拆成两个独立的8位计数器TL0: 和TH0。其中TL0用原T0的控制位、引脚和中断源,即:C/T、GATE、TR0、TF0和T0 (P3.4)引脚、INTO(P3.2)引脚。除了仅用8位寄存器TL0外,其功能和操作与方式0、方式1 完全相同,可定时亦可计数。此时TH0只可用做简单的内部定时功能。它占用原定时器Tl 的控制位TRl和TFl,同时占用Tl的中断源,其启动和关闭仅受TRl置1和清0控制。6·3 定时器/计数器用做定时方式时,其定时时间与哪些因素有关?作计数时,对外界计数频率有何限制? 答: 定时器/计数器用做定时方式时,其定时时间与时钟周期、计数器的长度(如8位、13位、16位等)、定时初值等因素有关。作计数时,外部事件的最高计数频率为振荡频率(即时钟周期)的1/24。 6·4 当定时器T0用做方式3时,由于TR1位已被T0占用,如何控制定时器T1的开启和关闭? 答:定时器T0用做方式3时,由于TRl位己被T0占用,此时通过控制位C/T切换其定时器或计数器工作方式。当设置好工作方式时,定时器1自动开始运行;若要停止操作,只需送入一个设置定时器1为方式3的方式字。

单片机定时器实验报告

XXXX大学信息工程与自动化学院学生实验报告 (2009 —2010 学年第二学期) 课程名称:单片机开课实验室: 2010年 5月14日 一.实验目的: 掌握定时器T0、T1的方式选择和编程方法,了解中断服务程序的设计方法,学会实时程序的调试技巧。 二.实验原理: MCS-51单片机内设置了两个可编程的16位定时器T0和T1,通过编程,可以设定为定时器和外部计数方式。T1还可以作为其串行口的波特率发生器。 定时器T0由特殊功能寄存器TL0和TH0构成,定时器T1由TH1和TL1构成,特殊功能寄存器TMOD控制定时器的工作方式,TCON控制其运行。定时器的中断由中断允许寄存器IE,中断优先权寄存器IP中的相应位进行控制。定时器T0的中断入口地址为000BH,T1的中断入口地址为001BH。 定时器的编程包括: 1)置工作方式。 2)置计数初值。 3)中断设置。 4)启动定时器。 定时器/计数器由四种工作方式,所用的计数位数不同,因此,定时计数常数也就不同。

在编写中断服务程序时,应该清楚中断响应过程:CPU执行中断服务程序之前,自动将程序计数器PC内容(即断点地址)压入堆栈保护(但不保护状态寄存器PSW,更不保护累加器A和其它寄存器内容),然后将对应的中断矢量装入程序计数器PC使程序转向该中断矢量地址单元中以执行中断服务程序。定时器T0和T1对应的中断矢量地址分别为000BH 和001BH。 中断服务程序从矢量地址开始执行,一直到返回指令“RETI”为止。“RETI”指令的操作一方面告诉中断系统该中断服务程序已经执行完毕,另一方面把原来压入堆栈保护的断点地址从栈顶弹出,装入到程序计数器PC,使程序返回到被到中断的程序断点处,以便继续执行。 因此,我们在编写中断服务程序时注意。 1.在中断矢量地址单元放一条无条件转移指令,使中断服务程序可以灵活地安排在64K 字节程序存储器的任何空间。 2.在中断服务程序中应特别注意用软件保护现场,以免中断返回后,丢失原寄存器、累加器的信息。 3.若要使执行的当前中断程序禁止更高优先级中断,可以先用软件关闭CPU中断,或禁止某中断源中断,在返回前再开放中断。 三.实验内容: 编写并调试一个程序,用AT89C51的T0工作方式1产生1s的定时时间,作为秒计数时间,当1s产生时,秒计数加1;秒计数到60时,自动从0开始。实验电路原理如图1所示。 计算初值公式 定时模式1 th0=(216-定时时间) /256 tl0=(216-定时时间) mod 256

定时器中断程序设计实验

实验一定时器/中断程序设计实验 一、实验目的 1、掌握定时器/中断的工作原理。 2、学习单片机定时器/中断的应用设计和调试 二、实验仪器和设备 1、普中科技单片机开发板 HC6800-EM3V3.0; 2、Keil uVision4 程序开发平台; 3、PZ-ISP 普中自动下载软件。 三、实验原理 805l 单片机内部有两个 16 位可编程定时/计数器,记为 T0 和 Tl。8052 单片机内除了 T0 和 T1 之外,还有第三个16位的定时器/计数器,记为T2。它们的工作方式可以由指令编程来设定,或作定时器用,或作外部脉冲计数器用。定时器T0由特殊功能寄存器TL0和TH0组成,定时器Tl由特殊功能寄存器TLl和TH1组成。定时器的工作方式由特殊功能寄存器TMOD编程决定,定时器的运行控制由特殊功能寄存器TCON编程控制。T0、T1在作为定时器时,规定的定时时间到达,即产生一个定时器中断,CPU转向中断处理程序,从而完成某种定时控制功能。T0、T1用作计数器使用时也可以申请中断。作定时器使用时,时钟由单片机内部系统时钟提供;作计数器使用时,外部计数脉冲由P3口的P3.4(或P3.5)即T0(或T1)引脚输入。 方式控制寄存器TMOD的控制字格式如下: 低4位为T0的控制字,高4位为T1的控制字。GATE为门控位,对定时器/计数器的启动起辅助控制作用。GATE=l时,定时器/计数器的计数受外部引脚输入电平的控制。由由运行控制位TRX(X=0,1)=1和外中断引脚(0INT或1INT)上的高电平共同来启动定时器/计数器运行;GATE=0时。定时器/计数器的运行不受外部输入引脚的控制,仅由TRX(X=0,1)=1来启动定时器/计数器运行。 C/-T 为方式选择位。C/-T=0 为定时器方式,采用单片机内部振荡脉冲的12 分频信号作为时钟计时脉冲,若采用12MHz的振荡器,则定时器的计数频率为1MHZ,从定时器的计数值便可求得定时的时间。C/-T=1为计数器方式。采用外部引脚(T0为P3.4,Tl为P3.5)的输入脉冲作为计数脉冲,当T0(或T1)输入信号发生从高到低的负跳变时,计数器加1。最高计数频率为单片机时钟频率的1/24。M1、M0二位的状态确定了定时器的工作方式,详见表。

PLC程序中定时器和计数器的配合应用

PLC程序中定时器和计数器的配合应用 实际应用中,定时器和计数器,常常有“强强联合”形式的搭配性应用。 一、定时器 1、定时器是位/字复合元件,可以有三个属性: 1)有线圈/触点元件,当满足线圈的驱动(时间)条件时,触点动作; 2)具有时间控制条件,当线圈被驱动时,触点并不是实时做出动作反应,而是当线圈被驱动时间达到预置时间后,触点才做出动作; 3)具有数值/数据处理功能,同时又是“字元件”。 2、可以用两种方法对定时时间进行设置: 1)直接用数字指定。FX编程器用10进制数据指定,如K50,对于100ms 定时器来讲,延时5秒动作。为5秒定时器。对LS编程器,可用10制数或16进制数设定,如50(或h32),对于100ms定时器来讲,延时5秒动作; 2)以数据寄存器D设定定时时间,即定时器的动作时间为D内的寄存数值。 3、由定时器构成的时间控制程序电路: LS编程器中的定时器有多种类型,但FX编程器中的定时器只有“得电延时输出”定时器一种,可以通过编写相应程序电路来实现“另一类型”的定时功能。图1程序电路中,利用M0和T1配合,实现了单稳态输出——断开延时定时器功能,X1接通后,Y0输出;X1断开后,Y0延时10秒才断开;T2、T3、Y2电路则构成了双延时定时器,X4接通时,Y2延时2秒输出;X4断开时,Y2延时3秒断开;Y3延时输出的定时时间,是由T4定时器决定的,T4的定时时间是同D1数据寄存器间接指定的。当X2接通时,T4定时值被设定为10秒;当X3接通时,T4定时值则被设定为20秒。XO提供定时值的清零/复位操作。 单个定时器的定时值由最大设定值所限定(0.1∽3276.7s),换言之,其延时动作时间不能超过1小时。如欲延长定时时间,可以如常规继电控制线路一样,将多只定时器“级联”,总定时值系多只定时器的定时值相加,以扩展定时时间。更好的办法,是常将定时器与计数器配合应用,其定时时间,即变为定时器的定时器与计数器的计数值相乘,更大大拓展了定时范围,甚至可以以月或年为单位

定时器基本功能实验(定时器中断)

实验二、定时器基本功能实验(定时器中断) 班级: 学号: 姓名:

一、实验目的 熟悉LPC2000 系列ARM7 微控制器的定时器0的基本设置及定时中断应用。二、实验设备 硬件:PC 机、LPC2131 教学实验开发平台 软件:Windows98/XP系统,ADS 1.2 集成开发环境 三、实验内容 使用定时器 0 实现1 秒定时,控制蜂鸣器蜂鸣。采用中断方式实现定时控制。备注:EasyARM2131 实验板上的系统时钟默认为11.0592MHz;系统中已定义了符号常量Fpclk = 11059200。 四、实验步骤 1、启动 ADS 1.2,使用ARM Executable Image for lpc2131 工程模板建立一个工程TimeOut_C; 2、在 user 组中的main.c 中编写主程序代码; 3、主程序中使用IRQEnable( )使能IRQ 中断; 4、选用 DebugInExram 生成目标,然后编译连接工程; 5、将 LPC2131 实验板上的Beep 跳线短接到P0.7; 6、选择 -> ,启动AXD 进行JTAG 仿真调试; 7、全速运行程序,蜂鸣器会响一秒,停一秒,依次循环。 五、实验参考程序 #include "config.h" #define BEEP 1 << 7 /* P0.7 控制BEEP,低电平蜂鸣 */ /* ********************************************************************* ** 函数名称:IRQ_Timer0() ** 函数功能:定时器 0 中断服务程序,取反LED9 控制口。 ** 入口参数:无 ** 出口参数:无 ********************************************************************* */ void __irq IRQ_Timer0 (void) { if ((IO0SET & BEEP) == 0) IO0SET = BEEP; /* 关闭BEEP */

PLC中三种计数器和定时器

COUNTER计数器 1.CTD减计数器 当CD收到一个上升沿,CV递减一,收到第2个上升沿,CV再递减一,直到CV递减到0后,Q输出TRUE。 PV-----装入的是计数器的,初始数值,CV从这个初始数值开始递减(一个CD收到的上升沿脉冲让CV减一) LOAD-------当LOAD变为TRUE,减计数器复位,PV变成设置的最大值。 2.CTU加计数器 CU----接受上升沿个数,收到一个脉冲,CV增加1,直到CV=PV后,

Q输出TRUE,RESET复位----如果RESET=TRUE,则计数器被复位成0。--------------CU,Q,RESET都为BOOL变量,CV和PV为WORD 变量。 3.CTUD增减计数器 CU, CD, RESET, LOAD, QU , QD 都是 BOOL变量, PV 和 CV 都是 INT变量. 如果 RESET=TRUE, CV 被赋值为0. If LOAD=TRUE,那么 CV 被设置成PV的数值. 如果 CU收到一个上升沿脉冲信号, CV在不超出范围的前提下增加1。. 如果CD 收到一个上升沿脉冲信号, CV 在不小于0的情况下,会减少1。 当CV = PV时,QU输出TRUE. 当 CV= 0时,QD输出TRUE. 三种定时器的区别

TP定时器 Q由FALSE变成TRUE被IN上升沿促发,(脉冲促发),由TRUE 变成FALSE为达到延迟时间PT后促发。只要TP检测IN有一个上升沿,Q马上变成TRUE。计时开始-----当达到PT设置的时间后,不管IN为什么状态,Q由TRUE变成FALSE。 TON定时器 (延时接通) 当IN为TRUE,并且IN保持为TRUE,当ET的时间=PT以后,Q 促发,由FALSE变为TRUE。而且IN为TRUE不变,只要IN变为FALSE,IN变FALSE的下降沿马上促发Q由TRUE变成FALSE。

51单片机C语言程序 定时 计数器 中断

51单片机C语言程序定时计数器中断51单片机C语言程序定时计数器 中断 程序一 利用定时/计数器T0从P1.0输出周期为1s的方波,让发光二极管以1HZ闪烁, #include reg52.h//52单片机头文件 #include intrins.h//包含有左右循环移位子函数的库 #define uint unsigned int//宏定义 #define uchar unsigned char//宏定义 sbit P1_0=P1^0; uchar tt; void main()//主函数 { TMOD=0x01;//设置定时器0为工作方式1 TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1;//开总中断 ET0=1;//开定时器0中断 TR0=1;//启动定时器0 while(1);//等待中断产生 } void timer0()interrupt 1 { TH0=(65536-50000)/256; TL0=(65536-50000)%256; tt++;

if(tt==20) { tt=0; P1_0=~P1_0; } } 程序二 利用定时/计数器T1产生定时时钟, 由P1口控制8个发光二极管, 使8个指示灯依次一个一个闪动, 闪动频率为10次/秒(8个灯依次亮一遍为一个周期),循环。 #include reg52.h//52单片机头文件 #include intrins.h//包含有左右循环移位子函数的库 #define uint unsigned int//宏定义 #define uchar unsigned char//宏定义 sbit P1_0=P1^0; uchar tt,a; void main()//主函数 { TMOD=0x01;//设置定时器0为工作方式1 TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1;//开总中断 ET0=1;//开定时器0中断 TR0=1;//启动定时器0 a=0xfe; while(1);//等待中断产生 } void timer0()interrupt 1

定时器与计数器

四川工程职业技术学院 单片机应用技术课程电子教案 Copyright ? https://www.doczj.com/doc/fe14975327.html, 第 讲 15 定时器/计数器基础

本讲主要内容: 15-1.实现定时的方法 15-2.定时器/计数器的结构和工作原理15-3.定时器/计数器的控制 15-4.定时器/计数器的工作方式 15-5.定时器/计数器应用

15-1.实现定时的方法 软件定时 ? 软件延时不占用硬件资源,但占用了CPU时间,降低了CPU的利用 率。例如延时程序。 采用时基电路定时 ?例如采用555电路,外接必要的元器件(电阻和电容),即可构成硬 件定时电路。但在硬件连接好以后,定时值与定时范围不能由软件 进行控制和修改,即不可编程,且定时时间容易漂移。 可编程定时器定时 ?最方便的办法是利用单片机内部的定时器/计数器。结合了软件定时 精确和硬件定时电路独立的特点。 定时器/计数器 如何使用呢?

定时器/计数器的结构 定时器/计数器的实质是加1计数器(16位),由高8位和低8位两个寄存器组成。TMOD 是定时器/计数器的工作方式寄存器,确定工作方式和功能;TCON 是控制寄存器,控制T0、T1的启动和停止及设置溢出标志。 G A T E C /T M 1 M 0 G A T E C /T M 1 M 0 TH1TL1TH0TL0 T1方式T0方式 T1引脚 T0引脚 机器周期脉冲 内部总线 TMOD TCON 外部中断相关位 T F 1 T R 1 T F 0 T R 0 T1计数器 T0计数器 控制单元

定时器/计数器的工作原理 ?计数器输入的计数脉冲源 系统的时钟振荡器输出脉冲经12分频后产生; T0或T1引脚输入的外部脉冲源。 ?计数过程 每来一个脉冲计数器加1,当加到计数器为全1(即FFFFH)时,再输入一个脉冲就使计数器回零,且计数器的溢出使TCON中TF0或TF1置1,向CPU发出中断 请求(定时器/计数器中断允许时)。如果定时器/计数器工作于定时模式,则表 示定时时间已到;如果工作于计数模式,则表示计数值已满。

实验七:定时器中断实验

微控制器 综合设计与实训实验名称:实验七定时器中断实验

实验七:定时器中断实验 1 实训任务 (1) 设置定时器时钟,自动重装载值,分频系数和计数方式; (2) 设置定时器中断优先级; (3) 通过编写延时函数实现定时器中断。 1.1 实验说明 STM32的通用定时器是由一个通过可编程预分频器(PSC)驱动的16位自动装载计数器(CNT)构成。STM32的通用定时器的用途:测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较和PWM)等。使用定时器预分频器和RCC时钟控制器预分频器,可以使脉冲长度和波形周期在几个微秒到几个毫秒间调整。 STM32F10x的通用TIMx(TIM2、TIM3、TIM4和TIM5)定时器功能包括: (1)6位向上、向下、向上/向下自动装载计数器(TIMx_CNT)。 (2) 16位可编程(可以实时修改)预分频器(TIMx_PSC),计数器时钟频率的分频系数为1~65535之间的任意数值。 (3) 4个独立通道(TIMx_CH1~4),这些通道可以用来作为: A.输入捕获 B.输出比较 C.PWM生成(边缘或中间对齐模式) D.单脉冲模式输出 (4) 可使用外部信号(TIMx_ETR)控制定时器和定时器互连(可以用1个定时器控制另外一个定时器)的同步电路。 (5) 如下事件发生时产生中断/DMA: A.更新:计数器向上溢出/向下溢出,计数器初始化(通过软件或者内部/外部触发) B.触发事件(计数器启动、停止、初始化或者由内部/外部触发计数) C.输入捕获

D.输出比较 E.支持针对定位的增量(正交)编码器和霍尔传感器电路 F.触发输入作为外部时钟或者按周期的电流管理 定时器的时钟来源有4个: (1)内部时钟(CK_INT) (2) 外部时钟模式1:外部输入脚(TIx) (3)外部时钟模式2:外部触发输入(ETR) (4) 内部触发输入(ITRx):使用A定时器作为B定时器的预分频器(A为B 提供时钟)。 这些时钟,具体选择哪个可以通过TIMx_SMCR寄存器的相关位来设置。这里的CK_INT时钟是从APB1倍频来的,除非APB1的时钟分频数设置为1,否则通用定时器TIMx的时钟是APB1时钟的2倍,当APB1的时钟不分频的时候,通用定时器TIMx的时钟就等于APB1的时钟。这里还要注意的就是高级定时器的时钟不是来自APB1,而是来自APB2。 本实验使用定时器3产生溢出中断,在中断服务函数里面翻转LED上的电平,来指示定时器中断的产生。定时器相关的库函数主要集中在固件库文件stm32f10x_tim.h和stm32f10x_tim.c文件中。 1.2 实验步骤 (1) 在实训平台上将PE4和PE5分别连接LED灯; (2) 复制上一个实验工程修改名称并保存为定时器中断实验; (3) 新建timer.c和timer.h文件,添加至工程中; (4) 编写timer.h文件,声明定时器3初始化函数; (5) 编写timer.c文件,编写定时器3初始化函数,设置分频系数、计数方式、自动重装载计数周期值和时钟分频因子; (6) 编写main函数,程序编译正确;

计数器与定时器概念

计数器与定时器概念 一、计数概念的引入 从选票的统计谈起:画“正”。这就是计数,生活中计数的例子处处可见。例:录音机上的计数器、家里面用的电度表、汽车上的里程表等等,再举一个工业生产中的例子,线缆行业在电线生产出来之后要计米,也就是测量长度,怎么测法呢?用尺量?不现实,太长不说,要一边做一边量呢,怎么办呢?行业中有很巧妙的方法,用一个周长是1米的轮子,将电缆绕在上面一周,由线带轮转,这样轮转一周不就是线长1米嘛,所以只要记下轮转了多少圈,就可以知道走过的线有多长了。 二、计数器的容量 从一个生活中的例子看起:一个水盆在水龙头下,水龙没关紧,水一滴滴地滴入盆中。水滴不断落下,盆的容量是有限的,过一段时间之后,水就会逐渐变满。录音机上的计数器最多只计到999….那么单片机中的计数器有多大的容量呢?8031单片机中有两个计数器,分别称之为T0和T1,这两个计数器分别是由两个8位的RAM单元组成的,即每个计数器都是16位的计数器,最大的计数量是65536。 三、定时 8031中的计数器除了可以作为计数之用外,还可以用作时钟,时钟的用途当然很大,如打铃器,电视机定时关机,空调定时开关等等,那么计数器是如何作为定时器来用的呢? 一个闹钟,我将它定时在1个小时后闹响,换言之,也可以说是秒针走了(3600)次,所以时间就转化为秒针走的次数的,也就是计数的次数了,可见,计数的次数和时间之间的确十分相关。那么它们的关系是什么呢?那就是秒针每一次走动的时间正好是1秒。

图1 结论:只要计数脉冲的间隔相等,则计数值就代表了时间的流逝。 由此,单片机中的定时器和计数器是一个东西,只不过计数器是记录的外界发生的事情,而定时器则是由单片机提供一个非常稳定的计数源。 那么提供组定时器的是计数源是什么呢?看图1,原来就是由单片机的晶振经过12分频后获得的一个脉冲源。晶振的频率当然很准,所以这个计数脉冲的时间间隔也很准。问题:一个12M的晶振,它提供给计数器的脉冲时间间隔是多少呢?当然这很容易,就是12M/12等于1M,也就是1个微秒。 结论:计数脉冲的间隔与晶振有关,12M的晶振,计数脉冲的间隔是1微秒。 四、溢出 让我们再来看水滴的例子,当水不断落下,盆中的水不断变满,最终有一滴水使得盆中的水满了。这时如果再有一滴水落下,就会发生什么现象?水会漫出来,用个术语来讲就是“溢出”。 水溢出是流到地上,而计数器溢出后将使得TF0变为“1”。至于TF0是什么我们稍后再谈。一旦TF0由0变成1,就是产生了变化,产生了变化就会引发事件,就象定时的时间一到,闹钟就会响一样。至于会引发什么事件,我们下次课再介绍,现在我们来研究另一个问题:要有多少个计数脉冲才会使TF0由0变为1。 五、任意定时及计数的方法 刚才已研究过,计数器的容量是16位,也就是最大的计数值到65536,因此计数计到65536就会产生溢出。这个没有问题,问题是我们现实生活中,经常会有

单片机定时器实验

实验三单片机内部定时器应用 实验目的 1、理解单片机内部定时器的工作原理及使用方法 2、了解单片机定时中断程序的编写和调试方法 3、掌握定时器的基本使用方法 实验仪器 单片机开发板、万利仿真机、稳压电源、计算机 实验原理 1、单片机定时器的工原理 MCS-51 单片机内部有两个16 位可编程的定时器/计数器T0 和T1。它们即可用作定时器方式,又可用作计数器方式。其中T0 由TH0 和TL0 计数器构成;T1 由TH1 和TL1 计数器构成。 工作于定时器方式时,通过对机器周期(新型51单片机可以对振荡周期计数)的计数,即每一个机器周期定时器加1,来实现定时。故系统晶振频率直接影响定时时间。如果晶振频率为12MHZ,则定时器每隔(1/12MHZ)×12=1us 加1。 工作于计数器方式时,对P3.4 或P3.5 管脚的负跳变(1→0)计数。它在每个机器周期的S5P2 时采样外部输入,当采样值在这个机器周期为高,在下一个机器周期为低时,计数器加1。因此需要两个机器周期来识别一个有效跳变,故最高计数频率为晶振频率的1/24。 特殊功能寄存器TMOD 用于定时器/计数器的方式控制。高4 位用于设置T1,低4 位用于设置T0。如图4-7所示。 图4-7 定时器模式控制字格式 TCON 寄存器用于定时器的计数控制和中断标志。如图4-8所示。 图4-8 定时控制寄存器数据格式 编写程序控制这两个寄存器就可以控制定时器的运行方式。 单片机内部定时器/计数器的使用,简而概之:(1)如需用中断,则将EA和相关中断控制位置1;(2)根据需要设置工作方式,即对TMOD设置;(3)然后启动计数,即对TR0或TR1置1。(4)如使用中断,则计数溢出后硬件会自动转入中断入口地址;如使用查询,则必须对溢出中断标志位TF0或TF1进行判断。

单片机实验3中断、定时器计数器实验

西南科技大学实验报告 课程名称:单片机原理及应用A 实验名称:中断、定时器/计数器实验姓名: 学号: 班级:生医1401 指导教师:雷华军 西南科技大学信息工程学院制

实验题目 数码管动态扫描显示驱动、键盘动态扫描驱动 一、实验目的 1、熟练巩固单片机开发环境KEIL界面的相关操作和PROTUES仿真软件的操 作,会使用HEX文件进行单片机的仿真。 2、了解定时器的原理和四种工作方式的使用方法,学习定时器的相关应用,包括产生信号和 计数,利用定时器进行延时等。 3、进一步掌握熟练单个数码管以及多位数码管的显示原理,学会将0~1000的数字进行显示。 4、掌握利用单片机产生矩形方脉冲的相关原理。 二、实验原理 1、定时器结构和原理 图① 上图①为定时器T0、T1的结构,其中振荡器经12分频后作为定时器的时钟脉冲,T为外部计数脉冲输入端,通过开关K1选择。反相器,或门,与门共同构成启/停控制信号。TH 和TL为加1计数器,TF为中断标志。每接收到一个脉冲,加1计数器自动加1,当计数器中的数被加为0时产生溢出标志,TF将被置1。计数器工作方式的选择和功能的实现需要配置相应的寄存器TMOD和TCON。 2、定时器工作方式 定时器共有四种工作方式分别为方式0——方式3。 方式0:13位计数器,最大计数值为213个脉冲。 方式1:16位计数器,最大计数值为216个脉冲。 方式2:8位自动重装计数器。该方式下,TL进行计数工作,TH用于存放计数初值,当产生溢出中断请求时会自动将TH中的初值重新装入TL,以使计数器继续工作。 方式3:仅限于T0计数器,在方式3下,T0计数器被分成两个独立的8为计数器TL0和TH0。

相关主题
文本预览
相关文档 最新文档