ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

C51定时器和计数器 timer and counter

2021-04-02 23:01:49  阅读:228  来源: 互联网

标签:50000 定时器 C51 counter timer 计数器 num 65536 256


代码:

#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 :几乎不用

参考文献

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

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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有