其他分享
首页 > 其他分享> > C51定时器和计数器 timer and counter

C51定时器和计数器 timer and counter

作者:互联网

代码:

#include <reg52.h>
unsigned char a,num;
sbit LED1=P1^0;

void main()
{
	num=0;
	EA=1;  //开总中断
	ET0=1;  //开定时器 0 分开关
	TMOD=0X01;  //设置为定时器 0  ,方式 1
	TH0=(65536-50000)/256;  //给定时器 0 装初值,12 Mhz晶振定时时间为 50ms
	TL0=(65536-50000)%256;  
	TR0=1;   //启动定时器0
	while(1)
	{
		if(num==20)
		{
			num=0;
			LED1=~LED1;
		}
	}
}


void time0() interrupt 1   //中断程序,1 是定时器0 入口序号
{
	TH0=(65536-50000)/256;  //高八位= 60次  重装初值,12 mhz晶振间隔 50 ms 重装一次
	TL0=(65536-50000)%256;  //低八位=170次  当低八位记满了(256次),高八位才会进一次
	num++;                  //要从15536次开始计数才刚刚好是 50000次 也就是50毫秒
							//20个50ms 就是1s
}

1、51中有两个定时器/计数器
若是对内部震荡源12分频的脉冲信号进行计数(每个机器周期),他就是定时器(T0,T1)
如果是对单片机引脚T0(p3.4)或T1(p3.5) 输入的脉冲信号进行计数,他就是计数器(C0,C1)

2、控制寄存器
在这里插入图片描述

在这里插入图片描述

3、工作方式寄存器
在这里插入图片描述
在这里插入图片描述

4、定时器计数器工作方式设置表
在这里插入图片描述
4种工作方式均通过M1 和 M0 进行设置
方式1 :常用的16为定时器计数器
方式2: 主要用于串行口波特率发生器
方式0 和 方式 3 :几乎不用

参考文献

标签:50000,定时器,C51,counter,timer,计数器,num,65536,256
来源: https://blog.csdn.net/weixin_52668204/article/details/115395394