c51单片机定时器t0,t1的常用基本设置-64体育

×
单片机 > 单片机程序设计 > 详情

c51单片机定时器t0,t1的常用基本设置

发布时间:2024-08-01 发布时间:
|

有时候带手机不方便,可以又想知道时间,这时候可以用蜂鸣器做一个音频的时间提醒器,每60秒发一声提醒


提醒器计时可以使用单片机的定时器t0、t1来做,计时的定时器用t1来做,工作在方式2(8位自动装载),系统运行提示的定时器用t0来做,工作在方式1(16位定时)


代码如下


#include "reg52.h"

 

#define uint unsigned int

#define uchar unsigned char

 

#define time_set0 5000//设置定时器0的计时长度

 

#define th0 (65536-time_set0)/256//计算定时器高8位装入值

 

#define tl0 (65536-time_set0)%6 //计算定时器低8位装入值

#define time_set1 256-200//设置定时器1的计时长度

 

sbit p1_1=p1^1;//系统运行指示灯管脚

 

sbit beep=p1^7;//蜂鸣器管脚

 

uint cnt=0;//计数器

uint cnt2=0;//计数器

uint cnt3=0;//计数器

 

void delay(uint i)//延时函数

{

uchar k;

for(;i>0;i--)

for(k=0;k<200;k );

}

 

timer0()interrupt 1 using 1//定时器0设置

{

    cnt ;//每次中断增加一

if(cnt>100)//计数时间5ms*100=500ms

{

cnt=0;

}

 

    th0=th0;//重装定时器

    tl0=tl0;

}

 

timer1()interrupt 3 using 2//定时器1设置

{

    cnt2 ;

if(cnt2>=5000)//计数时间0.2ms*5000=1s

{

cnt2=0;

cnt3 ;//秒计数器增加一

p1_1=!p1_1;//指示灯每秒翻转一次

}

}

 

void main()

{

    tmod=0x21;//设置定时器1方式2(高4位0010,自动重装th->tl,计满255),定时器0方式1(低4位0001,16位定时器,可计满65535)

    th0=th0;//装载定时器初始值

    tl0=tl0;

    th1=time_set1;

    tl1=time_set1;

    ea=1;//开总中断

    et0=1;//开定时器0中断

    et1=1;//开定时器1中断

    tr0=1;//打开定时器0

    tr1=1;//打开定时器1

while(1)

{

  if(cnt3>=60)//计时60秒

  {

  cnt3=0;//计时清零

beep=0;//打开蜂鸣器

delay(100);//延时100

beep=1;//关闭蜂鸣器

  }

}

}



『本文转载自网络,64体育的版权归原作者所有,如有侵权请联系删除』

热门文章 更多
stm32问题记录:这回keil编译器背锅
网站地图