实验三定时器实验

实验三定时器实验
实验三定时器实验

篇章计划

第五章80C51的中断系统及定时/计数器

(共6次课)

教学目标及基本要求:

1、理解中断的基本概念;

2、理解80C51中断系统的结构;

3、理解80C51定时/计数器的结构。

各节(单元)教学内容及学时分配:

§5.1 80C51的中断系统2学时

§5.2 80C51中断处理过程2学时

§5.3 80C51的定时/计数器4学时

教学内容的重点、难点及处理方法:

重点:1、中断的概念;

2、掌握80C51中断系统的使用方法;

3、掌握80C51定时/计数器的使用方法。

处理方法:举例讲解。

难点:80C51中断系统、定时/计数器的使用方法。

处理方法:举例讲解。

教学内容的深化和拓展:

教学方式(手段)及教学过程中应注意的问题:

教学方式:讲授与多媒体相结合

教学过程中应注意的问题:结合实际进行讲解

主要参考书目及网络资源:

1、《单片机原理与应用》中国机械教育协会组编

2、《单片机应用新技术教材》朱宇光主编

3、《单片机应用技术》刘守义主编

4、《单片机原理与控制技术》及习题集张志良主编

实践教学安排:

实验二中断实验2学时

实验三定时器实验2学时

第20 次课

一、教学简要说明:

1、本单元教学重点、难点及处理方法:

重点:中断的概念、中断系统的结构、中断源和中断优先级。

处理方法:举例讲解。

难点:中断的控制。

处理方法:举例讲解。

2、本单元教学方式(手段)或教学内容要点与时间分配:

1)复习10分

2)讲授70分

3)小结5分

4)自行消化5分

3、本单元师生活动设计:提问。

二、授课内容:

1、新课引出:

中断是CPU与I/O设备间数据交换的一种控制方式。80C51单片机有5个中断源、2个优先级,具备完善的中断系统。

2、本单元教学内容(具体到知识点)

掌握中断的概念、中断系统的结构、中断源和中断优先级。

3、本单元的讲课提纲、板书设计(或多媒体教学)

§5.1 80C51单片机的中断系统

一.中断概述

⒈什么叫中断?

CPU暂时中止其正在执行的程序,转去执行请求中断的那个外设或事件的服务程序,等处理完毕后再返回执行原来中止的程序, 叫做中断。

⒉为什么要设置中断?

⑴提高CPU工作效率⑵具有实时处理功能

⑶具有故障处理功能⑷实现分时操作

二. 中断源和中断控制寄存器

⒈中断源

中断源是指能发出中断请求,引起中断的装置或事件。80C51单片机的中断源共有5个,其中2个为外部中断源,3个为内部中断源:

⑴ INT0:外部中断0,中断请求信号由P3.2输入。

⑵ INT1:外部中断1,中断请求信号由P3.3输入。

⑶ T0:定时/计数器0溢出中断,对外部脉冲计数由P3.4输入。

⑷ T1:定时/计数器1溢出中断,对外部脉冲计数由P3.5输入。

⑸串行中断:包括串行接收中断RI和串行发送中断TI。

⒉中断控制寄存器

80C51单片机中涉及中断控制的有3个方面4个特殊功能寄存器:

①中断请求:定时和外中断控制寄存器TCON;串行控制寄存器SCON;

中断允许控制寄存器IE;

③中断优先级控制寄存器IP。

⑴中断请求控制寄存器

INT0、INT1、T0、T1中断请求标志放在TCON中串行中断请求标志放在SCON中。

① TF1 —— T1溢出中断请求标志,T1计数溢出后,TF1=1 ② TF0 —— T0溢出中断请求标志 T0计数溢出后,TF0=1 ③ IE1 —— 外中断中断请求标志

当P3.3引脚信号有效时,IE1=1 ④ IE0 —— 外中断中断请求标志

当P3.2引脚信号有效时,IE0=1 ⑤ IT1 —— 外中断触发方式控制位 IT1=1,边沿触发方式; IT1=0,电平触发方式。 ⑥ IT0 —— 外中断触发方式控制位 其意义和功能与IT1相似。 串行控制寄存器SCON

⑵ 中断允许控制寄存器IE

80C51对中断源的开放或关闭由中断允许控制寄存器IE 控制。 EA=1,CPU 开中;

EA=0,CPU 关中,且屏蔽所有5个中断源。 ② EX0 —— 外中断INT0中断允许控制位

EX0=1,INT0开中;EX0=0,INT0关中。 ③ EX1 —— 外中断INT1中断允许控制位

EX1=1,INT1开中;EX1=0,INT1关中。 ④ ET0 —— 定时/计数器T0中断允许控制位 ET0=1,T0开中;ET0=0,T0关中。 ⑤ ET1 —— 定时/计数器T1中断允许控制位

ET1=1,T1开中;ET1=0,T1关中。

⑥ ES ——串行口中断(包括串发、串收)允许控制位

ES=1,串行口开中;ES=0,串行口关中。

说明: 80C51对中断实行两级控制,总控制位是EA,每一中断源还有各自的控制位。首先要EA=1,其次还要自身的控制位置“1”。

4、本单元的作业布置:

5、小结:

中断概念、中断源及中断优先级。

第22 次课

一、教学简要说明:

1、本单元教学重点、难点及处理方法:

重点:中断的处理过程。

处理方法:举例讲解。

难点:中断系统的使用方法。

处理方法:举例讲解。

2、本单元教学方式(手段)或教学内容要点与时间分配:

1)复习10分

2)讲授70分

3)小结5分

4)自行消化5分

3、本单元师生活动设计:提问。

二、授课内容:

1、复习:

中断概念、中断源及自然优先级。

2、本单元教学内容(具体到知识点)

掌握中断的使用方法。

3、本单元的讲课提纲、板书设计(或多媒体教学)

§5.2 80C51单片机中断处理过程

一、中断处理过程

中断处理过程大致可分为四步:中断请求、中断响应、中断服务、中断返回。

1.中断请求

中断源发出中断请求信号,相应的中断请求标志位(在中断允许控制寄存器IE中)置“1”。

2.中断响应

CPU查询(检测)到某中断标志为“1”,在满足中断响应条件下,响应中断。

(1)中断响应条件:

①该中断已经“开中”;

② CPU此时没有响应同级或更高级的中断;

③当前正处于所执行指令的最后一个机器周期;

④正在执行的指令不是RETI或者是访向IE、IP的指令,

否则必须再另外执行一条指令后才能响应。

(2)中断响应操作

CPU响应中断后,进行下列操作:

①保护断点地址;②撤除该中断源的中断请求标志;

③关闭同级中断;④将相应中断的入口地址送入PC;

80C51五个中断入口地址:INT0:0003H;

T0:000BH;INT1:0013H

T1:001BH;串行口:0023H

3.执行中断服务程序

中断服务程序应包含以下几部分:

⑴保护现场⑵执行中断服务程序主体,完成相应操作

⑶恢复现场

⒋中断返回

在中断服务程序最后,必须安排一条中断返回指令RETI,当CPU执行RETI指令后,自动完成下列操作:

⑴恢复断点地址。

⑵开放同级中断,以便允许同级中断源请求中断。

二、中断响应等待时间

若排除CPU正在响应同级或更高级的中断情况,中断响应等待时间为:3~8个机器周期

三、中断请求的撤除

中断源发出中断请求,相应中断请求标志置“1”。 CPU响应中断后,必须清除中断请求“1”标志。否则中断响应返回后,将再次进入该中断,引起死循环出错。

⑴对定时/计数器T0、T1中断,外中断边沿触发方式,CPU响应中断时就用硬件自动清除了相应的中

断请求标志。

⑵对外中断电平触发方式,需要采取软硬结合的方法消除后果。

⑶对串行口中断,用户应在串行中断服务程序中用软件清除TI或RI。

四、中断优先控制和中断嵌套

⒈中断优先控制

80C51中断优先控制首先根据中断优先级,此外还规定了同一中断优先级之间的中断优先权。其从高到低的顺序为:INT0、INT1、T0、T1、串行口。

中断优先级是可编程的,而中断优先权是固定的,不能设置,仅用于同级中断源同时请求中断时的优先次序。

80C51中断优先控制的基本原则:

①高优先级中断可以中断正在响应的低优先级中断,反之则不能。

②同优先级中断不能互相中断。

③同一中断优先级中,若有多个中断源同时请求中断,CPU将先响应优先权高的中断,后响应优先权低的中断。

⒉中断嵌套

当CPU正在执行某个中断服务程序时,如果发生更高一级的中断源请求中断,CPU可以“中断”正在执行的低优先级中断,转而响应更高一级的中断,这就是中断嵌套。中断嵌套只能高优先级“中断”低优先级,低优先级不能“中断”高优先级,同一优先级也不能相互“中断”。

中断嵌套结构类似与调用子程序嵌套,不同的是:

①子程序嵌套是在程序中事先按排好的;中断嵌套是随机发生的。

②子程序嵌套无次序限制,中断嵌套只允许高优先级“中断”低优先级。

五、中断系统的应用

⒈中断初始化

⑴设置堆栈指针SP ⑵定义中断优先级

⑶定义外中断触发方式⑷开放中断

⑸安排好等待中断或中断发生前主程序应完成的操作内容。

⒉中断服务主程序

中断服务子程序内容要求:

⑴在中断服务入口地址设置一条跳转指令,转移到中断服务程序的实际入口处。

⑵根据需要保护现场。

⑶中断源请求中断服务要求的操作。

⑷恢复现场。与保护现场相对应,注意先进后出、后进先出操作原则。

⑸中断返回,最后一条指令必须是RETI。

⒊中断系统应用举例(见教材)

4、本单元的作业布置:

5、小结:

中断的响应过程。

第23 次课

一、教学简要说明:

1、本单元教学重点、难点及处理方法:

重点:熟练掌握汇编语言建立、运行的上机操作方法。

处理方法:上机操作。

难点:同上。

2、本单元教学方式(手段)或教学内容要点与时间分配:

实验二中断实验90分

3、本单元师生活动设计:

二、授课内容:

1、复习:

2、本单元教学内容(具体到知识点)

1、学习外部中断技术的基本使用方法。

2、学习中断处理程序的编程方法。

3、本单元的讲课提纲、板书设计(或多媒体教学)

实验二中断实验

一、实验内容

P1口做输出口,接八只发光二极管,通过程序控制发光二极管循环点亮,P3口的P3.0,P3.1,P3.4,P4.5与另外四个发光二极管相接,当单片机的INT0端出现负脉冲时,进入相应的中断服务程序,在中断服务程序中,使P3口所接的四个发光二极管快速闪烁大约20次,然后返回主程序,使P1口所接的八只二极管继续循环显示。

二、实验目的

1、学习外部中断技术的基本使用方法。

2、学习中断处理程序的编程方法。

三、实验简述

本实验中断处理程序的应用,最主要的地方是如何保护进入中断前的状态,使得中断程序执行完毕后能回到交通灯中断前的状态。要保护的地方,除了累加器ACC、标志寄存器PSW外,还要注意。一是主程序中的延时程序和中断处理程序中的延时程序不能混用,本实验中,主程序延时用的寄存器和中断延时用的寄存器应不相同。

四、实验电路

五、接线方式

P1.0—P1.7接发光二极管的L1—L8,P3.0、P3.1、P3.4、P3.5接发光二极管的L9—L12;单脉冲输出端“”接INI0,即接8031的第12号管脚。

六、参考程序

ST_ADDR EQU 4000H

ORG ST_ADDR

LJMP START

ORG ST_ADDR+03H ;中断入口地址

JMP INTI

ORG ST_ADDR+200H

START: SETB EX0

SETB E A

SETB IT0

CLR P3.0

CLR P3.1

CLR P3.4

CLR P3.5

MOV A,#01H

LOOP: MOV P1,A

MOV R0,#10

DEL1: MOV R1,#200

DEL2: MOV R2,#126

DEL3: DJNZ R2,DEL3

DJNZ R1,DEL2

DJNZ R0,DEL1

RL A

JMP LOOP

INTI: PUSH ACC ;中断服务程序

PUSH PSW

MOV R3,#20 ; 闪烁周期约为:100ms,共闪20次

DEL11: MOV R4,#100

DEL22: MOV R5,#126

DEL33: DJNZ R5,DEL33

DJNZ R4,DEL22

CPL P3.0

CPL P3.1

CPL P3.4

CPL P3.5

DJNZ R3, DEL11

CLR P3.0

CLR P3.1

CLR P3.4

CLR P3.5

POP PSW

POP ACC

SETB EX0

RETI

END

4、本单元的作业布置:

独立撰写实验报告。

5、小结:

P1口做输出口,接八只发光二极管,通过程序控制发光二极管循环点亮,P3口的P3.0,P3.1,P3.4,P4.5与另外四个发光二极管相接,当单片机的INT0端出现负脉冲时,进入相应的中断服务程序,在中断服务程序中,使P3口所接的四个发光二极管快速闪烁大约20次,然后返回主程序,使P1口所接的八只二极管继续循环显示。

第24、25 次课

一、教学简要说明:

1、本单元教学重点、难点及处理方法:

重点:80C51定时/计数器的结构、工作原理及工作方式。

处理方法:图示讲解。

难点:80C51定时/计数器的使用方法。

处理方法:举例讲解。

2、本单元教学方式(手段)或教学内容要点与时间分配:

1)复习20分

2)讲授140分

3)小结10分

4)自行消化10分

3、本单元师生活动设计:提问。 二、授课内容: 1、复习:

中断的响应过程。

2、本单元教学内容(具体到知识点)

1) 理解80C51定时/计数器的结构、工作原理; 2) 掌握80C51定时/计数器的工作方式。 3、本单元的讲课提纲、板书设计(或多媒体教学)

§5.3 80C51的定时/计数器

定时/计数器是单片机系统一个重要的部件,其工作方式灵活、编程简单、使用方便,可用来实现定时控制、延时、频率测量、脉宽测量、信号发生、信号检测等。此外,定时/计数器还可作为串行通信中波特率发生器。

一. 定时/计数器的结构和工作原理: 1.定时/计数器的结构:见图5.6

1)80C51单片机内部有两个定时/计数器T0和T1,其核心是计数器,基本功能是加1。 2)对外部事件脉冲(下降沿)计数,是计数器;对片内机周脉冲计数,是定时器。 3)计数器由二个8位计数器组成。 2.定时/计数器的工作原理:

1)定时时间和计数值可以编程设定,其方法是在计数器内设置一个初值,然后加1计满后溢出。调整计数器初值,可调整从初值到计满溢出的数值,即调整了定时时间和计数值。

2)定时/计数器作为计数器时,外部事件脉冲必须从规定的引脚输入。且外部脉冲的最高频率不能超过时钟频率的1/24。

二. 定时/计数器的控制寄存器 ⒈ 定时/计数器控制寄存器TCON

高4位与定时/计数器T0、T1有关。 ⑴ TF1:定时/计数器T1溢出标志。 ⑵ TF0:定时/计数器T0溢出标志。 ⑶ TR1:定时/计数器T1运行控制位。TR1=1,T1运行;TR1=0,T1停。⑷ TR0:定时/计数器T0运行控制位。TR0=1,T0运行;TR0=0,T0停。

TCON 的字节地址为88H ,每一位有位地址,均可位操作。 ⒉ 定时/计数器工作方式控制寄存器TMOD TMOD 用于设定定时/计数器的工作方式

C/T=1,计数工作方式,对外部事件脉冲计数,用作计数器。

C/T=0,定时工作方式,对片内机周脉冲计数,用作定时器。

⑶ GATE ——门控位

GATE=0,运行只受TCON中运行控制位TR0/TR1的控制。

GATE=1,运行同时受TR0/TR1和外中断输入信号的双重控制。

只有当INT0/INT1=1且TR0/TR1=1,T0/T1才能运行。

TMOD字节地址89H,不能位操作,设置TMOD须用字节操作指令。

三. 定时/计数器工作方式

⒈工作方式0

13位计数器,由TL0低5位和TH0 8位组成,TL0低5位计数满时不向TL0第6位进位,而是向TH0进位,13位计满溢出,TF0置“1”。最大计数值213 = 8192。

⒉工作方式1

16位计数器,最大计数值为216 = 65536。

⒊工作方式2

8位计数器,仅用TL0计数,最大计数值为28= 256,计满溢出后,一方面进位TF0,使溢出标志TF0 = 1;另一方面,使原来装在TH0中的初值装入TL0。

优点:定时初值可自动恢复;缺点:计数范围小。

适用于需要重复定时,而定时范围不大的应用场合。

⒋工作方式3

方式3仅适用于T0,T1无方式3。

⑴ T0方式3

在方式3情况下,T0被拆成二个独立的8位计数器TH0、TL0。

① TL0使用T0原有的控制寄存器资源:TF0,TR0,GATE,C/T,INT0,组成一个8位的定时/计数器;

② TH0借用T1的中断溢出标志TF1,运行控制开关TR1,只能对片内机周脉冲计数,组成另一个8位定

时器(不能用作计数器)。

⑵ T0方式3情况下的T1

T1由于其TF1、TR1被T0的TH0占用,计数器溢出时,只能将输出信号送至串行口,即用作串行口波特率发生器。

四. 定时/计数器的应用

⒈计算定时/计数初值

80C51定时/计数初值计算公式:

其中: N与工作方式有关: 方式0时,N=13;

方式1时,N=16;

方式2、3时,N=8。

机周时间与主振频率有关:机周时间=12/fosc;fosc=12MHZ时,1机周=1μS; fosc=6MHZ 时,1机周=2μS。

【例】已知晶振6MHz,要求定时0.5mS,试分别求出T0工作于方式0、方式1、方式2、方式3时的定时初值。

解:⑴工作方式0:

213–500μS/2μS=8192-250=7942=1F06H

1F06H化成二进制:1F06H=0001 1111 0000 0110B

其中:低5位00110前添加3位000送入TL0, TL0=000 00110B=06H;

高8位11111000B送入TH0

TH0=11111000B=F8H。

⑵工作方式1:

T0初值 =216-500μs/2μs=65536–250=65286=FF06H

TH0=FFH;TL0=06H。

⑶工作方式2:

T0初值 =28-500μs/2μs=256-250=6

TH0=06H;TL0=06H。

⑷工作方式3:

T0方式3时,被拆成两个8位定时器,定时初值可分别计算,计算方法同方式2。两个定时初值一个装入TL0,另一个装入TH0。因此:

TH0=06H;TL0=06H。

从上例中看到,方式0时计算定时初值比较麻烦,根据公式计算出数值后,还要变换一下,容易出错,不如直接用方式1,且方式0计数范围比方式1小,方式0完全可以用方式1代替,方式0与方式1相比,无任何优点。

⒉定时/计数器应用步骤

⑴合理选择定时/计数器工作方式

⑵计算定时/计数器定时初值(按上述公式计算)

⑶编制应用程序

①定时/计数器的初始化

包括定义TMOD、写入定时初值、设置中断系统、启动定时/计数器运行等。

②正确编制定时/计数器中断服务程序

注意是否需要重装定时初值,若需要连续反复使用原定时时间,且未工作在方式2,则应在中断服务程序中重装定时初值。

【例】试用T1方式2编制程序,在P1.0引脚输出周期为400μS的脉冲方波,已知fosc=12MHZ。

解:①计算定时初值

T1初值=28-200μs/1μs=256–200=56=38H

TH1=38H;TL1=38H

②设置TMOD:

0 0 10 0000 B=20H

T0控制位,与T1无关

T1方式2

T1定时器

T1启动与无关

③编制程序如下:

ORG 0000H ;复位地址

LJMP MAIN ;转主程序

ORG 001BH ;T1中断入口地址

LJMP IT1 ;转T1中断服务程序

ORG 0100H ;主程序首地址

MAIN: MOV TMOD,#20H ;置T1定时器方式2 MOV TL1,#38H ;置定时初值

MOV TH1,#38H ;置定时初值备份

MOV IP,#00001000B;置T1高优先级

MOV IE,#0FFH ;全部开中

SETB TR1 ;T1运行

SJMP $ ;等待T1中断

ORG 0200H ;T1中断服务程序首地址

IT1: CPL P1.0 ;输出波形取反首地址

RETI ;中断返回

4、本单元的作业布置:

P

5、9

110

5、小结:

定时/计数器的结构、工作原理及工作方式。

第26 次课

一、教学简要说明:

1、本单元教学重点、难点及处理方法:

重点:熟练掌握汇编语言建立、运行的上机操作方法。

处理方法:上机操作。

难点:同上。

2、本单元教学方式(手段)或教学内容要点与时间分配:

实验三定时器实验90分

3、本单元师生活动设计:

二、授课内容:

1、复习:

2、本单元教学内容(具体到知识点)

1、学习8031内部计数器的使用和编程方法。

2、进一步掌握中断处理程序的编程方法。

3、本单元的讲课提纲、板书设计(或多媒体教学)

实验三定时器实验

一、实验内容

由8031内部定时器1,按方式1工作、即作为十六位定时器使用每0.l秒钟T1溢出中断一次。P1口的P1.0—P1.7分别接八个发光二极管。要求编写程序模拟一时序控制装置。开机后第一秒钟L1、L3亮,第二秒钟L2、L4亮,第三秒钟L5、L7亮,第四秒钟L6、L8亮,第五秒钟L1、L3、L5、L7亮,第六秒钟L2、L4、L6、L8亮,第七秒钟八个二极管全亮,第八秒钟全灭,以后又从头开始,L1、L3亮,然后L2、L4亮;一直循环下去。

二、实验目的

1、学习8031内部计数器的使用和编程方法。

2、进一步掌握中断处理程序的编程方法。

三、实验原理

1、定时常数的确定

定时器/计数器的输入脉冲周期与机器周期一样,为振荡器频率的1/l2。本实验中时钟频率为6.144MHZ,现要采用中断方法来实现1秒延时,要在定时器1中设置一个时间常数,使其每隔0.1S产生一次中断,CPU响应中断后将R0中计数值减一,令(R0)=0AH,即可实现1s延时。

时间常数可按下法确定:

机器周期=12÷晶振频率=12÷6.144×106=1.9531×10-6S

需设初值为X,则(216-X)×1.9531×10-6=0.1

216-X=51200 X=65536-51200=14336

化为十六进制:X=3800H,故初始值为了TH1=38H,TL1=00H

2、初始化程序

包括定时器初始化和中断系统初始化,主要是对IP、IE、TCON、TMOD的相应位进行正确的设置,并将时间常数送入定时器中、由于只有定时器中断,IP便不必设置。

注意一点,定时器1初始化时建议用下述指令:

ANL TMOD,#0FH

ORL TMOD,#10H

而不要用如下指令:

MOV TMOD,#10H

否则定时器0被屏蔽,可能会影响串行口波特率,使程序不能执行。

3、设计中断服务程序和主程序

中断服务程序要将时间常数重新送入定时器中,为下一次中断做准备。主程序则用来控制发光二极管按要求顺序亮灭。

四、实验电路及连线

P1.0-P1.7分别接发光二极管L1-L8即可。

五、参考程序

ST_ADDR EQU 4000H

ORG ST_ADDR

LJMP START

ORG ST_ADDR+200H

START: MOV DPTR,#IT11 ;设置中断入口地址

MOV R1,DPL

MOV R2,DPH

MOV DPTR,#1BH

MOV A,#02

MOVX @DPTR,A

INC DPTR

MOV A,R2

MOVX @DPTR,A

INC DPTR

MOV A,R1

MOVX @DPTR,A

MOV A,#05H

MOV R1,#03

MOV R0,#0AH

ANL TMOD,#0FH

ORL TMOD,#10H

MOV TL1,#00H

MOV TH1,#38H

ORL IE,#88H

SETB TR1

LOOP1: CJNE R0,#00,DISP

MOV R0,#0AH

INC R1

CJNE R1,#0BH,LOOP2

MOV R1,#03

LOOP2: MOV A,R1

MOVC A,@A+PC

LJMP DISP

DB 05H 0AH 50H

DB 0A0H 55H 0AAH

DB 0FFH 00H

DISP: MOV P1,A

JMP LOOP1

IT11: CLR TR1

DEC R0

MOV TL1,#00H

MOV TH1,#38H

SETB TR1

RETI

END

注:设置中断入口地址时,也可以按实验五的方法设置。

4、本单元的作业布置:

独立撰写实验报告。

5、小结:

由8031内部定时器1,按方式1工作、即作为十六位定时器使用每0.l秒钟T1溢出中断一次。P1口的P1.0—P1.7分别接八个发光二极管。要求编写程序模拟一时序控制装置。开机后第一秒钟L1、L3亮,第二秒钟L2、L4亮,第三秒钟L5、L7亮,第四秒钟L6、L8亮,第五秒钟L1、L3、L5、L7亮,第六秒钟L2、L4、L6、L8亮,第七秒钟八个二极管全亮,第八秒钟全灭,以后又从头开始,L1、L3亮,然后L2、L4亮;一直循环下去。

实验三单片机定时计数器实验

实验三单片机定时/计数器实验 1、实验目的 1、学习计数器的使用方法。 2、学习计数器程序的编写。 3、学习定时器的使用方法。 4、学习定时器程序的编写。 5、熟悉汇编语言 2、实验说明 1、8051内部定时计数器T0,按计数器模式和方式1工作,对P3.4(T0)引脚进行计数。将其数值按二进制数在P1口驱动LED灯上显示出来。 2、用CPU内部定时器中断方式计时,实现每一秒钟输出状态发生一次反转 3、实验仪器和条件 计算机 伟福实验箱(lab2000P) 4、实验内容 1、8051内部定时计数器T0,按计数器模式和方式1工作,对P3.4(T0)引脚进行计数。将其数值按二进制数在P1口驱动LED灯上显示出来。 2、外部事件计数脉冲由P3.4引入定时器T0。单片机在每个机器周期采样一次输入波形,因此单片机至少需要两个机器周期才能检测到一次跳变。这就要求被采样电平至少维持一个完整的机器周期,以保证电平在变化之前即被采样。同时这就决定了输入波形的频率不能超过机器周期频率。 3、用CPU内部定时器中断方式计时,实现每一秒钟输出状态发生一次反转 4、定时器有关的寄存器有工作方式寄存器TMOD和控制寄存器TCON。TMOD

用于设置定时器/计数器的工作方式0-3,并确定用于定时还是用于计数。TCON 主要功能是为定时器在溢出时设定标志位,并控制定时器的运行或停止等。 5、在例程的中断服务程序中,因为中断定时常数的设置对中断程序的运行起到关键作用,所以在置数前要先关对应的中断,置数完之后再打开相应的中断。 五、思考题 1、使用其他方式实现本实验功能; 2、改为门控方式外部启动计数; 3、如果改为定时间隔为200us,如何改动程序; 4、使用其他方式实现本实验功能,例如使用方式1,定时间隔为10ms,如何改动程序。 六、源程序修改原理及其仿真结果 思考题一:使用其他方式实现本实验功能 方法一: movTMOD, #00000100b;方式0,记数器 movTH0, #0 movTL0, #0 setbTR0;开始记数;由于方式0的特点是计数时使用TL0的低五位和八位 TH0,故用加法器a用“与”(ANL)取TL0的低五位,再用yiwei子程序实现TH0的低三位变为高三位与TL0相加,这样赋给P1时就是八位计数的结果。 Loop: mova,TL0 anla,#1fh

实验三-定时器、计数器应用实验二

实验三-定时器、计数器应用实验二

定时器/计数器应用实验二 设计性试验 2012年11月21日星期三第三四节课 一、实验目的 1、掌握定时器/计数器计数功能的使用方法。 2、掌握定时器/计数器的中断、查询使用方法。 3、掌握Proteus软件与Keil软件的使用方法。 4、掌握单片机系统的硬件和软件设计方法。 二、设计要求 1、用Proteus软件画出电路原理图,单片机的定时器/计数器以查询方式工作,设定计数功能,对外部连续周期性脉冲信号进行计数,每计满100个脉冲,则取反P1.0口线状态,在P 1.0口线上接示波器观察波形。 2、用Proteus软件画出电路原理图,单片机的定时器/计数器以中断方式工作,设定计数功能,对外部连续周期性脉冲信号进行计数,每计满200个脉冲,则取反P1.0口线状态,在P 1.0口线上接示波器观察波形。 三、电路原理图

开始 系统初始化装计数初值并 启动定时器 定时? 时间到 输出取反 结束 清除溢出标志N Y 四、实验程序流程框图和程序清单及实验结果 /********* 设计要求:(1)单片机的定时器/计数器以查询方式工作,设定计数功能, 对外部连续周期性脉冲信号进行计数,每计满100个脉冲,则取反P1.0 口线状态,在P1.0口线上接示波器观察波形 编写:吕小洋 时间:2012年11月16日18:09:40 ***************/ ORG 0000H START: LJMP MAIN ORG 0100H MAIN: MOV SP, #2FH CLR EA ;关总中断 CLR ET1 ;禁止定时器1中断 MOV TMOD, #01100000B ;设置计数器1为工作方式2 MOV TH1, #9CH ;设置计数初值 MOV TL1, #9CH SETB TR1 ;启动计数器 LOOP: JNB TF1, LOOP ;查询计数是否溢出 CPL P1.0 ;输出取反 CLR TF1 ;清除计数溢出标志 LJMP LOOP ;重复取反 END

定时器实验报告

电子信息工程学系实验报告 课程名称:单片机原理及接口应用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

单片机实验之定时器计数器应用实验二

一、实验目的 1、掌握定时器/计数器计数功能的使用方法。 2、掌握定时器/计数器的中断、查询使用方法。 3、掌握Proteus软件与Keil软件的使用方法。 4、掌握单片机系统的硬件和软件设计方法。 二、设计要求 1、用Proteus软件画出电路原理图,单片机的定时器/计数器以查询方式工作,设定计数功能,对外部连续周期性脉冲信号进行计数,每计满100个脉冲,则取反P1.0口线状态,在P 1.0口线上接示波器观察波形。 2、用Proteus软件画出电路原理图,单片机的定时器/计数器以中断方式工作,设定计数功能,对外部连续周期性脉冲信号进行计数,每计满200个脉冲,则取反P1.0口线状态,在P 1.0口线上接示波器观察波形。 三、电路原理图 六、实验总结 通过本实验弄清楚了定时/计数器计数功能的初始化设定(TMOD,初值的计算,被计数信号的输入点等等),掌握了查询和中断工作方式的应用。 七、思考题 1、利用定时器0,在P1.0口线上产生周期为200微秒的连续方波,利用定时器1,对 P1.0口线上波形进行计数,满50个,则取反P1.1口线状态,在P 1.1口线上接示波器观察波形。 答:程序见程序清单。

四、实验程序流程框图和程序清单。 1、定时器/计数器以查询方式工作,对外部连续周期性脉冲信号进行计数,每计满100个脉冲,则取反P1.0口线状态。 汇编程序: ORG 0000H START: LJMP MAIN ORG 0100H MAIN: MOV IE, #00H MOV TMOD, #60H MOV TH1, #9CH MOV TL1, #9CH SETB TR1 LOOP: JNB TF1, LOOP CLR TF1 CPL P1.0 AJMP LOOP END C语言程序: #include sbit Y=P1^0; void main() { EA=0; ET1=0; TMOD=0x60; TH1=0x9C; TL1=0x9C; while(1) { TR1=1; while(!TF1); TF1=0; Y=!Y; } } 开始 TMOD初始化 计数初值初始化 中断初始化 启动定时器 计数溢出 清计数溢出标志 Y N P1.0口线取反

实验三 8253定时器

实验三8253定时器/计数器实验 姓名:张朗学号:11121535 一、实验目的 1. 学会8255芯片与微机接口的原理和方法。 2. 掌握8255定时器/计数器的工作原理和编程方法。 二、实验内容 编写程序,将8253的计数器0设置为方式2(频率发生器),计数器1设置为方式3(方波频率发生器),计数器0的输出作为计数器1的输入,计数器1的输出接在一个LED上,运行后可观察到该LED在不停地闪烁。 1.编程时用程序框图中的二个计数初值,计算OUT1的输出频率,用表观察LED,进行核对。 2.修改程序中的二个计数初值,使OUT1的输出频率为1Hz,用手表观察LED,进行核对。 3.上面计数方式选用的是16进制,现若改用BCD码,试修改程序中的二个计数初值,使LED的闪亮频率仍为1Hz。 三、实验区域电路连接图

CS3→0040H;JX8→JX0;IOWR→IOWR;IORD→IORD;A0→A0;A1→A1; GATE0→+5V;GATE1→+5V;OUT0→CLK1;OUT1→L1;CLK0→0.5MHz;(单脉冲与时钟单元) 四、程序框图 五、编程

1.T=1.48s CODE SEGMENT ASSUME CS:CODE ORG 1200H START: CLI MOV DX, 0043H MOV AL, 34H OUT DX, AL MOV DX, 0040H MOV AL, 0EEH OUT DX, AL MOV AL, 02H OUT DX, AL MOV DX, 0043H MOV AL, 76H ;01110110设置计数器1,方式3,16位二进制计数OUT DX, AL MOV DX, 0041H MOV AL, 0E8H OUT DX, AL MOV AL, 03H OUT DX, AL JMP $ ;8253自行控制led灯 CODE ENDS END START

单片机定时器实验报告

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

实验3 定时器0

实验3 定时器0和定时器1 一、实验目的 1、学会用C语言进行定时器应用程序的设计。 二、实验内容 1、在同一个程序中实现:用定时器0的方式1实现第一个LED灯以1000ms间隔闪烁,用定时器1的方式1实现数码管前两位59秒循环计时。 三、实验步骤 1、硬件连接 (1)使用MicroUSB数据线,将实验开发板与微型计算 机连接起来; (2)在实验开发板上,用数据线将相应接口连接起来; 2、程序烧入软件的使用 使用普中ISP软件将HEX文件下载至单片机芯片内。 查看结果是否正确。 四、实验结果——源代码 #include typedef unsigned int u16; typedef unsigned char u8; sbit led = P2^0; sbit LSA=P2^2; sbit LSB=P2^3; sbit LSC=P2^4; u16 t1; u16 t2; u8 sec; u8 DisplayData[2]; u8 code smgduan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

void Time0Init() { TMOD |= 0x01; TH0=0xFc; TL0=0x18; EA=1; ET0=1; TR0=1; } void Time1Init() { TMOD |= 0x10; TH1=0Xd8; TL1=0Xf0; EA=1; ET1=1; TR1=1; } void delay(u16 i) { while(i--); } void datapros() { DisplayData[0]=smgduan[sec%10]; DisplayData[1]=smgduan[sec/10]; } void DigDisplay() { u8 i;

8253定时器计数器实验

洛阳理工学院实验报告

(1)、连接实验电路 连线: 8253 CS ------ 端口地址 300CS PACK IMS ----- 393 1A 393 1QD ------ 8253 CLK1 8253 OUT1 ---- 8253 CLK2 8253 OUT2 ---- 发光二极管 L15 8253 GATE1 -- (A10)+5V 8253 GATE2 -- (A10)+5V 结果如下图所示: (2)、实验程序如下所示: CS8253 EQU 0303H COUNT0 EQU 0300H COUNT1 EQU 0301H COUNT2 EQU 0302H CODE SEGMENT ASSUME CS:CODE START PROC NEAR MOV DX,CS8253 MOV AL,01110110B OUT DX,AL

MOV DX,COUNT1 MOV AX,307 OUT DX,AL MOV AL,AH OUT DX,AL MOV DX,CS8253 MOV AL,10110110B OUT DX,AL MOV DX,COUNT2 MOV AX,1000 OUT DX,AL MOV AL,AH OUT DX,AL JMP $ START ENDP CODE ENDS (3)、经编译、链接无语法错误后装载到实验系统,全速运行程序,观察发光二极管L15,应有周期为1s的点亮、熄灭。结果如下图所示: 一秒后又熄灭,如此往复。 (4)、做完实验后,应按暂停命令中止程序的运行。 二、8253计数器实验 验证8253的工作方式3,CLK1每输入5个单脉冲信号,改变一次OUT1状态。 实验电路: DATA BUS D7~D0 D0 8 OUT0 10 D1 7 GATE0 11 D2 6 CLK0 9 D3 5 D4 4 D5 3 D6 2 OUT1 13 D7 1 GATE1 14 CLK1 15 CS 21 RD 22 WR 23 OUT2 17 A0 19 GATE2 16 A1 20 CLK2 18 8253 /CS 300CS IOR IOW A0 A1 VCC 1.8432MHz OUT0 GATE1 CLK1 OUT1 OUT2 CLK2 GATE2 +5V SP单次正脉冲 L15发光二极管显示

单片机实验三-定时器实验

实验三 定时器实验 ——循环彩灯实验 1、 实验目的 1. 学习8051内部计数器的使用和编程方法。 2. 进一步掌握中断处理程序的编写方法。 2、 实验原理 1. 定时常数的确定 定时器/计数器的输入脉冲周期与机器周期一样,为振荡频率的 1/12。比如实验中时钟频率为12MHZ,现要采用中断方法来实现 0.5秒延时,要在定时器1中设置一个时间常数,使其每隔0.05秒 产生一次中断,CPU响应中断后将RO中计数值减一,令RO=0AH,即 可实现0.5秒延时。 初值=65536-50000 2. 初始化程序 包括定时器初始化和中断系统初始化,主要是对IP、IE、TCON、TMOD的相应位进行正确的设置,并将时间常数送 入定时器中。 3. 设计中断服务程序和主程序 中断服务程序除了要完成计数减一工作外,还要将时间常数重新 送入定时器中,为下一次中断做准备。主程序则用来控制发光二 极管按要求顺序燃灭。 3、 实验要求 由8051内部定时器1按方式1工作,即作为16位定时器使用,每0.05秒钟T1溢出中断一次。P1口的P1.0~P1.7分别接发 光二极管的L1~L8。要求编写程序模拟一循环彩灯。彩灯变化 花样可自行设计。建议变化花样为:L1、L2、…L8依次点亮; L1、L2、…L8依次熄灭;L1、L2、…L8全亮、全灭。各时序间 隔为0.5秒。让发光二极管按以上规律循环显示下去。 4、 实验连线 P1.0~P1.7分别接发光二极管L1~L8即可。 5、 程序 org 0000h Ljmp main org 000Bh Ljmp INTT org 0100h

main: mov sp,#60h /*设置堆栈指针 mov TMOD,#01h /*设置TMOD,仅由TRx控制中断,定时器 模式,工作方式1 mov TH0,#3CH MOV TL0,#0B0H /*设置初值x=65536-50000 (12M晶振) SETB EA /*开中断 SETB ET0 /*开定时器中断T0 SETB TR0 /*启动定时器 MOV R1,#8 /*中断子程序工作方式1的工作次数 MOV R2,#8 /*中断子程序工作方式2的工作次数 MOV R3,#1 /*中断子程序工作方式3的工作次数 MOV R0,#0AH /*延时次数(产生中断的次数) MOV A,#0FFH WAIT1:AJMP WAIT1 INTT: MOV TH0,#3CH MOV TL0,#0B0H /*计数器赋初值 DJNZ R0,RETT /*R0减1后判断延时的次数是否足够,足够顺序执 行,不足够跳中断返回 CJNE R1,#0,INTT1 /*判断彩灯工作方式1工作是否完毕,完毕顺序执行 下一种方式,未完毕跳转继续执行此种方式 CJNE R2,#0,INTT2 /*判断彩灯工作方式2工作是否完毕,完毕顺序执行 下一种方式,未完毕跳转继续执行此种方式 CJNE R3,#0,INTT3 /*判断彩灯工作方式3工作是否完毕,完毕顺序执行 下一种方式,未完毕跳转继续执行此种方式 JMP INTT4 /*跳转执行第4种方式 INTT1:MOV R0,#0AH /*重新向延时次数计数器赋初值 CLR C /*C清零 RLC A /*带进位左循环移位,低位移入0,即LED 相继点亮(低电平亮) DEC R1 /*工作次数减1 JMP RETT /*跳中断返回 INTT2:MOV R0,#0AH SETB C /*C置1 RRC A /*带进位右循环移位,高位移入1,即LED

实验三定时器计数器应用实验一

定时器/计数器应用实验一 设计性试验 2012年11月14日星期三第三四节课 一、实验目的 1、掌握定时器/计数器定时功能的使用方法。 2、掌握定时器/计数器的中断、查询使用方法。 3、掌握Proteus软件与Keil软件的使用方法。 4、掌握单片机系统的硬件和软件设计方法。 二、设计要求 1、用Proteus软件画出电路原理图,单片机的定时器/计数器以查询方式工作,在P1.0口线上产生周期为200μS的连续方波,在P 1.0口线上接示波器观察波形。 2、用Proteus软件画出电路原理图,单片机的定时器/计数器以中断方式工作,在P1.1口线上产生周期为240μS的连续方波,在P 1.1口线上接示波器观察波形。 三、电路原理图

四、实验程序流程框图和程序清单及实验结果 /********* 设计要求:(a)单片机的定时器/计数器以查询方式工作, 在P1.0口线上产生周期为200us的连续方波 编写:吕小洋 说明:用定时器1的方式1以查询方式工作 时间:2012年11月10日 ***************/ ORG 0000H 开始 系统初始化

START: LJMP MAIN ORG 0100H MAIN: MOV SP, #2FH CLR EA ;关总中断 CLR ET1 ;禁止定时器1中断 MOV TMOD, #00010000B ;设置定时器1为工作方式1 MOV TH1, #0FFH ;设置计数初值 MOV TL1, #9CH SETB TR1 ;启动定时器 LOOP: JNB TF1, LOOP ;查询计数是否溢出 MOV TH1, #0FFH ;重置计数初值 MOV TL1, #9CH CLR TF1 ;清除计数溢出标志 CPL P1.0 ;输出取反 LJMP LOOP ;重复取反 END

单片机实验三_中断与定时器实验

a b c d e f g 实验三 中断、定时器实验 信息学院 10通信A 柳东旭 1015231030 一、实验目的 1. 学习外部中断和定时器的工作原理及使用方法。 2. 学习外部中断和定时器的初始化程序、应用程序的编写和调试。 二、实验仪器和设备 PC 机、W A VE 软件、仿真器+仿真头、实验板、电源等。 三、实验说明 本实验1通过开关向单片机提出中断请求,单片机响应中断进行计数,并通过LED 数码管指示出计数值,从而观察中断的请求、响应的过程。实验2通过单片机的定时器产生延时,模拟交通灯控制的方法。通过本实验学生可以掌握单片机中断和定时器的工作原理及使用方法以及中断和定时器的初始化程序、应用程序的编写和调试。 四、实验内容 1、开关S0—S1连接P3口做输入,P0输出接LED 数码管,通过S2产生外部中断请求(/INT0)信号,在中断服务程序中完成十进制递增计数,并将计数值显示在LED 数码管上,要求分别采用电平触发和边沿触发。按上述要求完成S3产生外部中断请求。编写初始化程序和中断服务程序。(注意开关抖动处理) 2、P1.0--P1.7作输入口接拨动开关S0--S7;P0.0--P0.7作输出口,接发光二极管L1—L8,编写程序读取开关状态,将此状态在对应的发光二极管上显示出来,要求发光二极管(LED )按亮0.5秒、暗0.5秒闪烁,LED 亮的同时,从P2.0送出1kHz 的音频信号到音频驱动电路发声(持续0.5秒),将开关编号(0—7)显示在LED 数码管上。要求延时采用内部定时器T0,音频的产生采用内部定时器T1。编写初始化程序和中断服务程序。 五、实验电路连线 P0.0 ---- LED0 P3.2(/INT0)----- S2 P0.1 ---- LED1 P3.3(/INT1)----- S3 P0.2 ---- LED2 P0.3 ---- LED3 P0.4 ---- LED4 P0.5 ---- LED5 P0.6 ---- LED6 P0.7 ---- LED7 LED 连接 外部中断请求输入 a b c d e f g h(dp) P2.0 P2.1 P2.2 P2.3 P2.4 P2.5 P2.6 P2.7

定时器实验报告

定时器实验报告 自动化1003 徐磊 201003120325 1.实验目的 1、掌握定时器的工作原理。 2、学习单片机定时器的应用设计和调试。 2.实验原理 系统8051中有三个16 位定时器/计数器:定时器0、定时器1 和定时器2。每一个包含两个8 位寄存器,THx和TLx(这里,x=0、1 或2)。所有这些操作既可配置为定时器或事件记数器。定时器功能,TLx 寄存器每12 个时钟周期或1个周期加1,通过软件来选择。因此可认为为计数器时钟周期。每记12个时钟周期,计数速率达1/12 的晶振频率。 计数器功能,下降沿时寄存器加1,根据外部输入引脚T0、T1 或T2。在这些功能中,每个时钟周期对外部输入信号(T0 引脚和T1 引脚)进行采样,每12个时钟周期对T2 引脚采样。当采样信号出现一个高电平接着一个低电平,计数加1。当检测到跳变时新计数值出现在寄存器中。对定时器0 和定时器1 来说,需要用两个时钟周期来识别下降沿跳变,最大的计数速率为1/2 的晶振频率;对于定时器2,需要用24个时钟周期来识别下降沿跳变,最大计数速率为1/24的晶振频率。外部输入信号没有严格的周期限制,但是要确保在电平改变前至少有一次采样,对定时器0 和定时器1来说信号应该至少保持一个时钟,定时器2 需要12 个时钟周期。 对定时器0 和定时器2 来说,除了标准8051 定时器的功能之外,添加了一些新的特征。 3.实验系统的原理图如下: 4.示例程序如下: ;做实验前请将对应“Digital LED Power”位置的红色拨码开关打到ON 的位置 ORG 0000H SJMP MAIN ORG 0030H ;将数码管所要显示的数据保存在30H~35H之中

单片机定时器实验

实验三单片机内部定时器应用 实验目的 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进行判断。

实验三 定时器实验

实验三 定时器实验 一、实验目的 1、掌握单片机系统定时器断的原理及使用方法。 二、实验原理 (一)、单片机定时器/计数器的结构 1.定时器/计数器组成框图 8051单片机内部有两个16位的可编程定时器/计数器,称为定时器0(T0)和定时器1(T1),可编程选择其作为定时器用或作为计数器用。此外,工作方式、定时时间、计数值、启动、中断请求等都可以由程序设定,其逻辑结构如图所示。 _____INT1(P3.3)_____INT0(P3.2) T1(P3.5)T0(P3.4) 图 8051定时器/计数器逻辑结构图 由图可知,8051定时器/计数器由定时器 T0、定时器T1、定时器方式寄存器TMOD 和定时器控制寄存器TCON 组成。 2.定时/计数器的方式寄存器和控制寄存器 定时/计数器的初始化通过定时/计数器的方式寄存器TMOD 和控制寄存器TCON 完成。 1)定时/计数器方式寄存器TMOD TMOD 为T1、T2的工作方式寄存器,其格式如下: TMOD D7 D6 D5 D4 D3 D2 D1 D0 (89H) TMOD 的低 (1

(2)T /C :功能选择位。0T /C =时,设置为定时器工作方式;1T /C =时,设置为计数器工作方式。 (3)GATE :门控位。当GA TE=0时,软件控制位TR0或TR1置1即可启动定时器;当GATE=1时,软件控制位TR0或TR1须置1,同时还须0INT (P3.2)或1INT (P3.3)为高电平方可启动定时器,即允许外中断0INT 、1INT 启动定时器。 TMOD 不能位寻址,只能用字节指令设置定时器工作方式,高4位定义T1,低4位定义T0。复位时,TMOD 所有位均置0。 2)定时器/计数器控制寄存器TCON TCON 的作用是控制定时器的启动、停止,标志定时器的溢出和中断情况。定时器控制字TCON 的格式如下: TCON (88H ) 8FH 8EH 8DH 8CH 8BH 8AH 89H 88H (1) TCON.7 TF1:定时器1溢出标志位。当定时器1计数满产生溢出时,由硬件自动置TF1=1。在中断允许时,向CPU 发出定时器1的中断请求,进入中断服务程序后,由硬件自动清0。在中断屏蔽时,TF1可作查询测试用,此时只能由软件清0。 (2)TCON.6 TR1:定时器1运行控制位。由软件置1或清0来启动或关闭定时器1。当GATE=1,且1INT 为高电平时,TR1置1启动定时器1;当GATE=0时,TR1置1即可启动定时器1。 (3)TCON.5 TF0:定时器0溢出标志位。其功能及操作情况同TF1。 (4)TCON.4 TR0:定时器0运行控制位。其功能及操作情况同TR1。 (5)TCON.3 IE1:外部中断1(1INT )请求标志位。 (6)TCON.2 IT1:外部中断1触发方式选择位。 (7)TCON.1 IE0:外部中断0(0INT )请求标志位。 (8)TCON.0 IT0:外部中断0触发方式选择位。 TCON 中的低4位用于控制外部中断,与定时器/计数器无关。 TCON 的字节地址为88H ,可以位寻址,清溢出标志位或启动定时器都可以用位操作指令。 3、定时器/计数器的初始化 由于定时器/计数器的功能是由软件编程确定的,所以,一般在使用定时器/计数器前都要对其进行初始化。初始化步骤如下: (1)确定工作方式——对TMOD 赋值。 (2)预置定时或计数的初值——直接将初值写入TH0、TL0或TH1、TL1。 定时器/计数器的初值因工作方式的不同而不同。设最大计数值为M ,则各种工作方式下的M 值如下: 方式0:81922M 13== 方式1:655362M 16== 方式2:2562M 8== 因定时器/计数器工作的实质是做“加1”计数,所以,当最大计数值M 值已知时,初值X 可计算如下: X = M -计数值 4、启动定时器/计数器工作——将TR0或TR1置“1”。 GA TE = 0时,直接由软件置位启动;GATE = 1时,除软件置位外,还必须在外中断引脚处加上相应的电平值才能启动。

接口 定时器与计数器实验(8253)-- 8253定时器实验

同组同学学号: 同组同学姓名: 实验日期:2012 年 3月 26日交报告日期:2012 年 5月 30日实验(No. 1_1 )题目:定时器与计数器实验(8253)-- 8253定时器实验 实验目的及要求: 实验目的: 1、学习8253可编程定时器/计数器定时方法。 2、学习8253多级串联实现大时间常数的定时方法。 3、学习8088/86控制8253可编程定时器的方法。 实验要求: 用8253对标准脉冲信号进行计数,就可以实现定时功能。用板上的1MHz做为标准信号,将8253可编程计数器/定时器的时间常数设在1000000次,就可以在定时器的管脚上输出1秒钟高/1秒钟低的脉冲信号。因为8253每个计数器只有十六位,要用两个计数器才能实现一百万次的计数,实现每一秒钟输出状态发生一次反转。 实验电路及连线: 连线连接孔1 连接孔2 1 8253_CS CS4 2 8253_OUT0L0 3 8253_GATE0VCC 4 8253_CLK08253_OUT1 5 8253_GATE1VCC 6 8253_CLK1F/4(1M) 7 4MHz Fin 实验说明: 1、本实验工作方式0,计数值减完后输出一个脉冲宽度的高电平。而本实验在计数值减完后,管脚状态产生变化(从高到低或从低到高)。直到下一次计数值减完。这样输出的波形为方波。 2、由于定时常数过大,就要用多级串联方式。本实验采用两级计数器。定时常数分别为100和10000。将计数器的输出接到计数器0输入。计数器0 的输出接到LED0。

实验框图: 主程序框图 源程序及分析: CONTROL equ 0c003h ;设置命令寄存器 COUNT0 equ 0c000h ;设置计数器0 COUNT1 equ 0c001h ;设置计数器1 COUNT2 equ 0c002h ;设置计数器2 code segment assume cs:code start proc near ;第一次定时器设定: mov al, 36h; ; 计数器0,16位,方式3,二进制(00110110B=36h) mov dx, CONTROL out dx, al mov ax, 1000 mov dx, COUNT0

单片机实验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。

实验三_8253定时器计数器实器

实验三 8253定时器/计数器实验 一、实验目的 1. 学会8253 芯片与微机接口的原理和方法。 2. 掌握8253 定时器/计数器的工作原理和编程方法。 二、实验内容 编写程序,将8253的计数器0设置为方式2 (频率发生器),计数器1设置为方式3 (方 波频率发生器),计数器0的输出作为计数器1的输入,计数器1的输出接在一个LED上,运行后可观察到该LED在不停地闪烁。 1.编程时用程序框图中的二个计数初值,计算OUT1的输出频率,用表观察LED,进行核对。 2.修改程序中的二个计数初值,使OUT1的输出频率为1Hz,用手表观察LED,进行核对。 3.上面计数方式选用的是 16 进制,现若改用 BCD 码,试修改程序中的二个计数初值,使 LED 的闪亮频率仍为1Hz。 三、电路图

CS3→0040H;JX8→JX0;IOWR→IOWR;IORD→IORD;A0→A0;A1→A1; GATE0→+5V;GATE1→+5V;OUT0→CLK1;OUT1→L1;CLK0→0.5MHz; 四、流程图及编程指南 8253 是一种可编程定时/计数器,有三个十六位计数器,其计数频率范围为0-2MHz用+5V 单电源供电。8253 的六种工作方式: ⑴方式0:计数结束中断⑷方式3:方波频率发生器 ⑵方式l:可编程频率发生⑸方式4:软件触发的选通信号 ⑶方式2:频率发生器⑹方式5:硬件触发的选通信号8253 初始化编程 1. 8253 初始化编程 8253 的控制寄存器和 3 个计数器分别具有独立的编程地址,由控制字的内容确定使用的是哪个计数器以及执行什么操作。因此8255 在初始化编程时,并没有严格的顺序规定,但在编程时,必须遵守两条原则: ①在对某个计数器设置初值之前,必须先写入控制字; ②在设置计数器初始值时,要符合控制字的规定,即只写低位字节,还是只写高位字节,还是高、低位字节都写(分两次写,先低字节后高字节)。

实验4 定时器实验

实验四定时器实验 班级::学号: 一、实验目的: 1、掌握定时器初始化的步骤; 2、掌握定时器控制寄存器(TCR)的含义和使用; 3、掌握定时器工作原理,学习定时器中断的设计方法,掌握1S间隔的定时器的处理。 4、熟悉ARM的中断原理,并产生中断。 二、实验设备: 1.硬件PC机 2.软件ADS1.2、PROTUES 三、实验容及原理: 实验容:本实验要求编写一个简单的定时器中断程序,设置一定的周期控制(1S)与某一个引脚(P0.0)相连的LED指示灯。当定时器中断产生时可以观察到LED周期性闪烁。 实验原理:定时器控制(中断方式)。 采用11.0592MHz晶振,使用PLL部件,cclk=Fosc*4=11.0592MHz*4=442368MHz,外围时钟使用复位默认的Fpclk=fcclk/4=44.2368MHz/4=11.0592MHz,定时器0进行100分频(即PR=99,MR0=110592),实现1S定时控制LED点亮或熄灭。另外,使用VIC的向量IRQ功能。 首先设置定时器为向量IRQ中断,分配优先级并使能向量,然后设置相关向量地址寄存器VICVectAddr0及中断使能,在中断服务程序里完成LED的亮灭,在处理完毕后写向量地址寄存器为0,通知VIC中断处理结束。 四、实验步骤 1、在PROTUES里搭建好硬件电路平台,处理器采用LPC2106,如下图所示。

D1 LED-YELLOW XTAL111XTAL2 12 DBGSEL 27 RTCK 26 P0.0/TxD0/PWM113P0.1/RxD0/PWM314P0.2/SCL/CAP0.018P0.3/SDA/MAT0.021P0.4/SCK/CAP0.122P0.5/MISO/MAT0.123P0.6/MOSI/CAP0.224P0.7/SSEL/PWM228P0.8/TxD1/PWM429P0.9/RxD1/PWM630P0.10/RTS1/CAP1.035P0.11/CTS1/CAP1.136P0.12/DSR1/MAT1.037P0.13/DTR1/MAT1.141P0.14/DCD1/EINT144P0.15/RI1/EINT245P0.16/EINT0/MAT0.246P0.17/CAP1.2/TRST 47P0.18/CAP1.3/TMS 48P0.19/MAT1.2/TCK 1P0.20/MAT1.3/TDI 2P0.21/PWM5/TDO 3P0.22/TRACECLK 32P0.23/PIPESTAT033P0.24/PIPESTAT134P0.25/PIPESTAT238P0.26/TRACESYNC 39P0.27/TRACEPKT0/TRST 8P0.28/TRACEPKT0/TMS 9P0.29/TRACEPKT2/TCK 10P0.30/TRACEPKT3/TDI 15P0.31/EXTIN0/TDO 16 V185RST 6 VSS 7 VSS 19VSS 31VSS 43V317 V340U1 LPC2106 +1.8v +3v 2、打开ADS1.2的CodeWarrior 编译环境,新建一个工程(ARM Executable Image )工程,工程名为Time0。在新建一个文件Time0.c ,添加到工程里。 3、在工程空白处右击,添加工程所需的文件(config.h, target.h, LPC2106.h, Startup.s, IRQ.s, target.c)。如下图所示。 4、编写Time0.c,实现定时器1s 定时,LED 灯闪烁。 5、配置DebugRel Seteings , 打开Target Settings ,设置如下图所示。

相关文档
最新文档