当前位置:   article > 正文

C51单片机实验——定时器实验_c51定时器实验

c51定时器实验

实验名称:单片机定时器实验

实验环境:普中实验系统;Keil μVision 4软件;
实验目的:
(1)掌握单片机定时器的原理和控制方法。
(2)通过编程利用定时器实现定时功能,并利用该定时功能实现时钟分、秒的功能。
硬件连线:
P2^1口连接led1
P2^3 口连接led3
P2^5 口连接led5
P2^7 口连接led7

实验主要代码:
/**************************************************************************************

  •                 定时器0实验											
    
    • 1

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

#include "reg52.h"			 //此文件中定义了单片机的一些特殊功能寄存器

typedef unsigned int u16;	  //对数据类型进行声明定义
typedef unsigned char u8;

sbit led1=P2^1;	 //定义P2^1口是led1
sbit led3=P2^3;	 //定义P2^3口是led3
sbit led5=P2^5;	 //定义P2^5口是led5
sbit led7=P2^7;	 //定义P2^7口是led7

/*******************************************************************************
* 函 数 名         : Timer0Init
* 函数功能		   : 定时器0初始化
* 输    入         : 无
* 输    出         : 无
*******************************************************************************/
void Timer0Init()
{
	TMOD|=0X01;//选择为定时器0模式,工作方式1,仅用TR0打开启动。

	TH0=0XE6;	//给定时器赋初值,定时7ms	高位
	TL0=0XCC;				  //低位,计算初值  方式0,16位计数2^16=65535us
	ET0=1;//打开定时器0中断允许
	EA=1;//打开总中断
	TR0=1;//打开定时器			
}

/*******************************************************************************
* 函 数 名       : main
* 函数功能		 : 主函数
* 输    入       : 无
* 输    出    	 : 无
*******************************************************************************/
void main()
{	
	Timer0Init();  //定时器0初始化
	while(1);		
}

/*******************************************************************************
* 函 数 名         : void Timer0() interrupt 1
* 函数功能		   : 定时器0中断函数
* 输    入         : 无
* 输    出         : 无
*******************************************************************************/
void Timer0() interrupt 1			 //中断号1,定时器1
{
	static u16 i;
	TH0=0XE6;	//给定时器赋初值,定时1ms
	TL0=0XCC;
	i++;
	if(i==1000)
	{
		i=0;
		led1=~led1;	
		led3=~led3;
		led5=~led5;
		led7=~led7;
	}	
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60

实验结果与心得:
实验结果:定时7s,小灯1,3,5,7实现闪烁的效果

心得:1.采用定时器T0的方式1的定时中断方式时,需要先设置TOMD寄存器,定时器T0工作在方式1,M1,M0=01,C/T=0为定时器工作模式,GATE=0.所以TMOD初始化值为00x01.
2.计算定时器T0的计数初值
计算过程:7ms=7000us
7000=(2^16-计数初值)*12/11.0592
得计数初值X为59084.8
转换十六进制E6CCH
TH0=0XE6H
TL0=0XCCH
3.毫秒与秒的转换,进制1000
7ms循环1000次为定时7s
4.定时器模式是对单片机系统时钟信号经片内12分频后的内部脉冲信号(脉冲信号周期=机器周期)计数。由于系统时钟频率是定值,所以可根据计数值计算出准确的定时时间。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/577589
推荐阅读
相关标签
  

闽ICP备14008679号