实验课程

THIS NAME

实验课程

当前位置: 首页 >> 实验课程 >> 正文

单片机原理及应用-定时器实验

发布日期:2024-03-04    作者:王娟     来源:     点击:

定时器实验

一、实验目的

1、了解定时器的工作原理。

2、学会设计定时器实现秒计数长时间定时。

二、实验内容

 

编写并调试一个程序,用定时器T0定时中断控制软件计数器计数

 

三、实验原理及说明

使用定时器T0的中断来控制P2引脚LED的闪烁,可设定定时器T0工作方式1,最大可计脉冲次数为65536,对于1.0592MHZ的时钟频率,一个脉冲的宽度为1.085us,则则最大计时长度只有大约71ms。所以要计时1S或更长时间,需要采用一种软件计数方法,设置一个变量Countor来存存储定时器TO的中断次数,即没产生1次中断,使变量Countor 自加1,如果T050ms中断1次,那么当Countor自加20次时,所计时间就是1S

四、实验设备

 

PC

 

五、实验方法

1.Proteus ISIS工作环境中绘制好图1仿真电路图。

         

1 仿真电路图

2..keil软件中编写下列程序。

#include<reg51.h>  //  包含51单片机寄存器定义的头文件

sbit D1=P2^0;  //D1位定义为P2.0引脚

unsigned char Countor; //设置全局变量,储存定时器T0中断次数

void main(void)

{

  EA=1;                  //开总中断

ET0=1;                 //定时器T0中断允许        

TMOD=0x01;             //使用定时器T0的模式2

TH0=(65536-46083)/256; //定时器T0的高8位赋初值

TL0=(65536-46083)%256; //定时器T0的高8位赋初值

TR0=1;                 //启动定时器T0

Countor=0;            //0开始累计中断次数

while(1)//无限循环等待中断

      ;

}

void Time0(void) interrupt 1 using 0

{

  Countor++;   //中断次数自加1

if(Countor==20)  //若累计满20次,即计时满1s

{

   D1=~D1;     //按位取反操作,将P2.0引脚输出电平取反

      Countor=0;  //Countor0,重新从0开始计数

}

    TH0=(65536-46083)/256; //定时器T0的高8位重新赋初值

TL0=(65536-46083)%256; //定时器T0的高8位重新赋初值

}

3.程序经Keil软件编译通过后,就可以利用Proteus软件进行仿真了。

 

上一条:单片机原理及应用-独立式键盘控制步进电动机实验 下一条:计算机程序设计(Pyhton)-运算符和表达式

关闭