MCS-51系列单片机C语言编程定时计数器程序模板

发布者:和谐相伴最新更新时间:2025-09-26 来源: bilibili关键字:MCS-51系列  单片机  C语言编程  定时计数器 手机看文章 扫描二维码
随时随地手机看文章

/*********************************************************************************************

函数名:定时/计数器初始化函数

调  用:T_C_init();

参  数:无

返回值:无

结  果:设置SFR中T/C1和(或)T/C0相关参数

备  注:本函数控制T/C1和T/C0,不需要使用的部分可用//屏蔽

/**********************************************************************************************/

void T_C_init (void){

TMOD = 0x11; //高4位控制T/C1 [ GATE,C/T,M1,M0,GATE,C/T,M1,M0 ]

EA = 1; //中断总开关

TH1 = 0xFF; //16位计数寄存器T1高8位(写入初值)

TL1 = 0xFF; //16位计数寄存器T1低8位

ET1 = 1; //T/C1中断开关

TR1 = 1; //T/C1启动开关

//TH0 = 0x3C; //16位计数寄存器T0高8位

//TL0 = 0xB0; //16位计数寄存器T0低8位(0x3CB0 = 50mS延时)

//ET0 = 1; //T/C0中断开关

//TR0 = 1; //T/C0启动开关

}

/**********************************************************************************************/

/*********************************************************************************************

函数名:定时/计数器1中断处理函数

调  用:[T/C1溢出后中断处理]

参  数:无

返回值:无

结  果:重新写入16位计数寄存器初始值,处理用户程序

备  注:必须允许中断并启动T/C本函数方可有效,重新写入初值需和T_C_init函数一致

/**********************************************************************************************/

void T_C1 (void) interrupt 3  using 3{ //切换寄存器组到3

TH1 = 0x3C; //16位计数寄存器T1高8位(重新写入初值)

TL1 = 0xB0; //16位计数寄存器T1低8位(0x3CB0 = 50mS延时)

//函数内容

}

/**********************************************************************************************/

/*********************************************************************************************

函数名:定时/计数器0中断处理函数

调  用:[T/C0溢出后中断处理]

参  数:无

返回值:无

结  果:重新写入16位计数寄存器初始值,处理用户程序

备  注:必须允许中断并启动T/C本函数方可有效,重新写入初值需和T_C_init函数一致

/**********************************************************************************************/

void T_C0 (void) interrupt 1  using 1{ //切换寄存器组到1

TH0 = 0x3C; //16位计数寄存器T0高8位(重新写入初值)

TL0 = 0xB0; //16位计数寄存器T0低8位(0x3CB0 = 50mS延时)

//函数内容

}

/**********************************************************************************************/


关键字:MCS-51系列  单片机  C语言编程  定时计数器 引用地址:MCS-51系列单片机C语言编程定时计数器程序模板

上一篇:51单片机入门项目:多功能电子时钟
下一篇:51单片机软件自动复位下载

推荐阅读最新更新时间:2026-03-25 11:33

MCS-51系列单片机定时器/计数器T0和T1
  MCS-51系列的 单片机 内,共有两个16位可编程的定时器/计数器,分别称为定时器/计数器T0和定时器/计数器T1。      与定时器/计数器有关的特殊功能寄存器有以下几个:      1、TH0、TL0为T0的16位计数器的高8位和低8位。      2、TH1、TL1为T1的16位计数器的高8位和低8位。      3、TMOD为T0、T1的方式寄存器。      4、TCON为T0、T1的状态和控制寄存器,存放T0、T1的运行控制位和溢出中断标志位。      5、中断控制寄存器IE、IP。      通过对TH0、TL0和TH1、TL1的初始化编程来设置T0、T1计数器初值,通过对TCON和TMOD的编程来选择T0
[单片机]
定时计数器_单片机_普中
1 定时/计数器介绍 定时/计数器的实质是加1计数器(16位),由高8位和低8位两个寄存器THX和TLX组成。它随着计数器的输入脉冲进行自加1,也就是每来一个脉冲,计数器就自动加1,当加到计数器为全1时,再输入一个脉冲就使计数器回零,且计数器的溢出使相应的中断标志位置1(产生一个溢出标志),向CPU发出中断请求(定时/计数器中断运行时)。如果定时/计数器工作于定时模式,则表示定时时间已到;如果工作于计数模式,则表示计数值已满。 (1)CPU时序的有关知识 ①时钟周期/振荡周期:时钟周期又叫做振荡周期、节拍周期,定义为时钟晶振频率的倒数。时钟周期是计算机中最基本的、最小的时间单位。在一个时钟周期内,CPU仅完成一个最基本的动作。例如
[单片机]
51单片机定时器和计数器
8051单片机内部有两个定时/计数器T0及T1,具有定时和计数两种功能。T0及T1在计数过程中不需要CPU参与,也不影响CPU的其他工作。当计数溢出后,定时/计数器给出中断信号,申请CPU停止当前的工作,去处理预先设定的中断事件。 一、T1内部结构 定时器工作模式:对内部时钟信号计数。由于时钟频率是定值,所以可根据计数值计算出定时时间。 计数器工作模式:是对加在T1(P3.5)引脚上的外部脉冲进行计数。 二、计数功能 计数器用于统计从TO(P3.4)和Tl(P3.5)两个引脚输入脉冲的负跳变数量。负跳变是指前一个机器周期采样为高电平,后一个机器周期为低电平。每输入一个脉冲负跳变,计数器加1。 输入脉冲的高电平与低电平至少应保持
[单片机]
51<font color='red'>单片机</font><font color='red'>定时</font>器和<font color='red'>计数器</font>
单片机定时器和计数器的概念
前言 有接触过单片机开发的同学可能对定时器和计数器的使用很熟悉,但是定时器和计数器到底是什么东西呢? 文中涉及的模数电概念我都链接了百科知识,不明白的可以直接跳转观看。 正文 其实定时器和计数器底层原理是一个加法器,加法器对于输入的数字脉冲会进行计数,然后输出十六进制的值记录结果。 加法器可以加计数,当然也可以用来减计数,但是加计数用的的比较普遍,在单片机中大多数采用溢出判断。比如一个16位的计数器,最大值是65535,如果要实现100的计数,需要赋值给计数器初始值为65435,经过100个脉冲之后,计数器就会溢出,从而就会引发中断。 比如我们要计算1秒的时间,我们可以提前给加法器装入一个100的值,然后在脉冲输入
[单片机]
51单片机——定时计数器中断
先写IE寄存器中断允许寄存器,再写中断处理函数就行 定时模式下触发一次中断后TH和TL的值会默认复位为0,需要在中断服务函数里重新设定初值。 例 void timer0() interrupt 1 { TH0 = 0x4b; TL0 = 0xfd; } 应用 数码管动态扫描,按键按下也能继续执行扫描
[单片机]
51<font color='red'>单片机</font>——<font color='red'>定时</font><font color='red'>计数器</font>中断
用51单片机定时计数器控制LED1s闪烁一次
#include reg51.h //头文件 sbit LED=P2^0;//位定义LED灯 void Timer0()//使用定时计数器所做的处理函数,用做定时器 { TMOD=0x01;//定时器0,方式1 TH0=0xFC;//定时1ms的初值 TL0=0x18;//定时1ms的初值 ET0=1;//打开定时计数器0使能控制位 EA=1;//打开总中断 TR0=1;//打开定时计数器0的启动控制位 } void main()//主函数 { Timer0();//调用函数 while(1); } void ledxs()interrupt 1//中断执行内容函数,用定时器
[单片机]
51单片机定时器设置方式_51单片机定时器/计数器
8051单片机内部有两个定时/计数器T0及T1,具有定时和计数两种功能。T0及T1在计数过程中不需要CPU参与,也不影响CPU的其他工作。当计数溢出后,定时/计数器给出中断信号,申请CPU停止当前的工作,去处理预先设定的中断事件。 一、T1内部结构 定时器工作模式:对内部时钟信号计数。由于时钟频率是定值,所以可根据计数值计算出定时时间。 计数器工作模式:是对加在T1(P3.5)引脚上的外部脉冲进行计数。 二、计数功能 计数器用于统计从TO(P3.4)和Tl(P3.5)两个引脚输入脉冲的负跳变数量。负跳变是指前一个机器周期采样为高电平,后一个机器周期为低电平。每输入一个脉冲负跳变,计数器加1。 输入脉冲的高电平与
[单片机]
51<font color='red'>单片机</font><font color='red'>定时</font>器设置方式_51<font color='red'>单片机</font><font color='red'>定时</font>器/<font color='red'>计数器</font>
C51/C52单片机定时计数器与中断(内附代码)
一、定时器/计数器简介 设置等待时间,到达等待时间之后执行指定的硬件操作。 定时器最基本的功能就是定时,比如说定时发送串口数据,定时采集AD数据,如果将定时器和IO结合起来就可以实现非常丰富的功能,可以测量输入信号的脉冲宽度,可以产生PWM方波,定时器产生PWM控制电机状态是工业控制的普通。 二、定时器/计数器相关寄存器介绍 1、计数寄存器TH和HL T/C是16位的,计数寄存器由TH高8位和TL低8位构成 对应T/C0为TH0和TL0, 对应T/C1为TH1和TL1,定时器/计数器的初始值通过TH0/TL0和TH1/TL1设置 2、定时器/计数器控制寄存器TCON
[单片机]
C51/C52<font color='red'>单片机</font>的<font color='red'>定时</font>器<font color='red'>计数器</font>与中断(内附代码)
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved