单片机的定时器的工作原理是利用了寄存器的溢出来触发中断的,所以在写定时器的时候就要去算计数的增量,再根据单片机的晶振的频率就可以算出确定的时间了.
附件中有一计算器是用来计算初值的,十分方便
定时器主要用到了2个寄存器,一个为TCON,另一个为TMOD.TCON是用来控制定时器的启动与停止的.TMOD是用来设置定时器的模式的.她们的具体的位说明,下面有一张图片,一看便清楚了.
下面我们写一个单片机定时器的例子,产生的效果是:4个数码管每秒会增1,当增加到最大值时,重新从0开始递增.
先说说写单片机定时器的步骤:1,对TMOD赋值,以确定T0和T1的工作方式。2,计算初值,并将其写入TH0、TL0或TH1、TL1。3,中断方式时,则对IE赋值,开放中断。4,使TR0或TR1置位,启动定时/计数器定时或计数。
下面有一个定时器的完整的例子,我在STC80C52单片机上成功通过了,也能看到效果.
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit sda=P1^0;
sbit clk=P1^1;
sbit dig1=P1^2;
sbit dig2=P1^3;
sbit dig3=P1^4;
sbit dig4=P1^5;
uchar i,temp,num,times;
uchar code table[]={0x7e,0x0c,0xb6};
void write164(uchar);//申明锁存器写入函数
void main()
{
dig4=0;
dig1=0;
dig2=0;
dig3=0; //打开四个数码管
//times = 0;//发生的中断次数
num = 0;//table下标
TMOD=0x01;//设置定时器0的工作模式为工作模式1
TH0=(65536-50000)/256;//初始化计数器的高八位
TL0=(65536-50000)%256;//初始化低8位
EA = 1; //打开CPU中断
ET0 = 1;//打开0号定时器中断
TR0 = 1;//启动定时器0,开始定时
write164(table[0]);
while(1)
{
if(times==20) //发生20次中断刚好是一秒钟
{
num ++ ; //table下标右移一个
if(num==3)
num = 0;
write164(table[num]);
times=0;//此步必不可少,我刚开始就是少了这一步,导致整个程序没调试成功!!!!!
}
}
}
void write164(uchar u)
{
temp = u;
for(i=0;i<8;i++)
{
clk=1;
sda=temp & 0x80;
clk=0;
temp = temp<<1;
}
}
//中断函数
void fun_interrupt() interrupt 1
{
TH0=(65536-50000)/256;//重置计数器的高八位
TL0=(65536-50000)%256;//重置低8位
times ++ ;//产生一次中断,num值加1
}
- 大小: 82.9 KB
分享到:
相关推荐
STC单片机定时器是微控制器编程中的关键组成部分,主要负责执行周期性的任务或产生精确的时间间隔。在STC系列单片机中,定时器的运作模式有1T和12T两种,它们的不同之处在于时钟周期的计算方式。 1T模式,即1-Tick...
根据给定的文件信息,我们可以总结出以下关于“51单片机定时器C语言程序”的相关知识点: ### 一、51单片机简介 51单片机是一种广泛应用于电子设备中的微控制器,其核心是8位的中央处理器(CPU)。51单片机因其...
单片机定时器计数器是微控制器中重要的硬件资源,广泛应用于各种实时控制和定时任务。8051单片机内置了两个定时计数器,T0和T1,它们既可以作为定时器工作,也可以作为计数器工作。在本次实验中,主要涉及到以下几个...
**msp430g2553单片机定时器中断例程详解** 在嵌入式系统设计中,定时器是不可或缺的组件,用于执行周期性任务、计时或者实现软件定时。MSP430系列单片机,特别是MSP430G2553,因其低功耗、高性能而广泛应用于各种...
以proteus仿真为例简单讲解定时器赋初值单片机定时器赋初值的方法解析用proteus搭建的电路图如下,晶振为12M,P2.0每10ms翻转一次,即P2.0输出的频率为100HZ。这里使用16位的定时器,那单片机定时器0的最大计数就是...
在深入探讨51单片机定时器设计实验之前,我们首先需要理解51单片机的基本概念及其定时器的工作原理。51单片机是一种广泛应用于各种电子设备中的微控制器,因其成本低廉、功能强大而受到青睐。它由美国Atmel公司基于...
总结,这个89C51单片机定时器产生脉冲的汇编程序涉及了定时器工作模式选择、初始化设置、中断处理及循环检测等多个关键环节。学习这个程序有助于理解89C51单片机的定时器功能和汇编语言编程,对于嵌入式系统的开发...
51单片机定时器计算工具是一款专为51系列单片机设计的辅助软件,旨在帮助用户精确地计算和设定定时任务。51单片机是广泛应用在电子设备中的微控制器,其内部包含了定时器模块,对于控制系统的运行时间和执行特定任务...
这个"51单片机定时器初值计算器"工具,可以帮助开发者更方便地设置和计算定时器的初始值,以达到所需的定时效果。 51单片机有4个定时器/计数器:Timer0、Timer1、Timer2和Timer3(某些型号的51单片机可能不包含...
单片机定时器是单片机系统中非常重要的硬件资源,它主要用于实现各种时间间隔的控制和计数功能。在51/52系列单片机中,定时器的使用非常广泛,涉及到数字电路、嵌入式系统以及物联网等多个领域。下面我们将详细探讨...
《基于51单片机定时器的智能交通灯系统详解》 51单片机,以其高性价比和广泛的应用范围,成为了许多初学者和工程师的首选。本项目以8951型号的51单片机为核心,设计了一个基于定时器的智能交通灯系统,并包含了仿真...
这个东东能很方便的生成单片机定时器模块的代码,省去了大量的计算,很方便
51单片机定时器产生1Hz信号 本实验报告的主要目的是掌握单片机中断系统的结构、单片机的5个中断源、中断过程及中断源编号,并掌握C51中断服务函数的编写。实验内容包括使用软件延时方法产生5S延时,使LED0实现5S亮/...
以下将详细介绍STC15单片机定时器的工作原理、配置方法以及常见应用。 1. **工作原理** 单片机定时器基于内部振荡器提供的时钟信号,通过计数器对时钟脉冲进行计数。当计数值达到预设值时,定时器产生中断,通知...
在这个场景中,"51单片机定时器初值计算"是一款针对51单片机定时器初值设置的小软件,旨在帮助初学者简化计算过程,提高编程效率。 51单片机内有两个16位的定时器/计数器(Timer0和Timer1),它们都可以工作在定时...
PIC单片机定时器详细介绍 PIC单片机定时器是PIC微控制器内部的一种重要模块,它具有计数器和时钟信号触发的功能。不同的PIC系列单片机配置了不同的定时器/计数器模块,例如PIC17CX系列和PIC18CX系列都配置了44个...
单片机定时器是单片机系统中一个非常重要的组成部分,它主要用于实现时间间隔的控制、脉冲产生、波特率发生以及其他与时间相关的功能。在本主题中,我们将深入探讨单片机定时器的工作原理、常见类型、以及如何通过...
本文是关于52单片机定时器计数器2做为串行口波特率发生器使用的例子,类似于定时器1作为波特率发生器工作在模式1下,但是不同的是:定时器2作为波特率发生器是16位自动重装的,位数比定时器1作为波特率发生器要高...
51单片机定时器是微控制器编程中的一个重要组成部分,主要功能是提供精确的时间间隔,用于实现各种时间相关的任务,如脉冲发生、延时、波特率生成等。51系列单片机由Intel公司开发,因其丰富的资源和易于学习的特点...
总的来说,这个压缩包提供的STC12C5A60S2单片机定时器实验程序是一个很好的学习资源,可以帮助初学者快速掌握单片机定时器的工作原理和应用,为后续的项目开发打下坚实基础。通过实际操作和调试,你将能够深入理解...