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、控制寄存器
C51定时器和计数器 timer and counter

C51定时器和计数器 timer and counter

3、工作方式寄存器
C51定时器和计数器 timer and counter
C51定时器和计数器 timer and counter

4、定时器计数器工作方式设置表
C51定时器和计数器 timer and counter
4种工作方式均通过M1 和 M0 进行设置
方式1 :常用的16为定时器计数器
方式2: 主要用于串行口波特率发生器
方式0 和 方式 3 :几乎不用

参考文献

  • [1]王云. 51单片机C语言程序设计教程. 北京:人名邮电出版社,2018.11
  • [2]C语言从入门到精通/明日科技编著. -4版. -北京:清华大学出版社,2019
上一篇:HJ10 字符个数统计


下一篇:3.3比特币大饼下午行情思路!突破50000会继续上涨吗