文档详情

定时器计数器应用实验定时器计数器应用实验.doc

发布:2017-01-03约4.66千字共6页下载文档
文本预览下载声明
单片机原理及应用实验报告 实验五 定时器/计数器应用实验 一、实验目的 学习8051内部定时器/计数器的使用方法和编程方法 掌握定时器0作为中断源时的中断处理程序的编程方法 二、实验原理 8051单片机内部有两个16为可编程定时器/计数器:T0和T1。16为是指它们都是有16个触发器构成,故最大计数模值为216-1。可编程是指它们的工作方式由指令来设定,或者当计数器用,或者当定时器用,并且计数(定时)的范围也可以由指令来设置。这种控制功能是通过定时器方式控制寄存器TMOD来完成的。工作在定时方式时,时钟由单片机内部提供,即系统时钟经过12分频后作为定时器的时钟;工作在计数方式时,时钟脉冲(计数脉冲)由T0和T1(即P3.4和P3.5)输入。 定时器在计到规定的定时值时可以向CPU发出中断申请,从而完成某种定时的控制功能。定时器控制寄存器TCON用来负责定时器的启动、停止以及中断管理。 程序一:定时器/计数器0按定时模式和方式2工作,产生周期为1秒的方波,方波由P1.0口输出。此程序用中断方式。弄清IE寄存器的作用及矢量地址000BH的含义。 1、内部计数器用作定时器时,是对机器周期计数。每个机器周期的长度是12个振荡器周期。因为实验系统的晶振是6MHZ,本程序工作于方式2,即8位自动重装方式定时器, 定时器100us中断一次, 所以定时常数的设置可按以下方法计算: 机器周期=12÷6MHZ=2uS (256-定时常数)×2uS=100us 定时常数=206. 然后对100us中断次数计数10000次,就是1秒钟。 2、在中断服务程序中,因为中断定时常数的设置对中断程序的运行起到关键作用,所以在置数前要先关对应的中断,置数完之后再打开相应的中断。 3、实验电路及连线 4、实验框图 Y 主程序框图 定时中断子程序框图 5、汇编语言源程序: Tick equ 10000 ; 10000 x 100us = 1s T100us equ 256-50 ; 100us时间常数(6M) C100us equ 30h ; 100us记数单元 LEDBuf equ 0 LED equ P1.0 ljmp Start org 000bh ;中断程序入口 T0Int: push PSW mov a, C100us+1 jnz Goon dec C100us Goon: dec C100us+1 mov a, C100us orl a, C100us+1 jnz Exit ; C100us 记数器不为0, 返回 mov C100us, #high(Tick) mov C100us+1, #low(Tick) cpl LEDBuf ; C100us 记数器为0, 重置记数器 ; 取反LED Exit: pop PSW reti Start: ; 主程序入口 mov TMOD, #02h ; 方式2, 定时器0 mov TH0, #t100us ; 计算T/C的计数初值,并装载到TH和TL mov TL0, #t100us mov IE, ; EA=1, IT0 = 1 setb TR0 ; 开始定时 clr LEDBuf clr LED
显示全部
相似文档