⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 timer1.c

📁 AT89S51单片机试验及实践教程
💻 C
字号:
/*
	定时器1应用

  Study-3 51 单片机开发板 

试验现象:
	P20对应的管脚LED,会闪烁,
	修改定时器1延时变量,可以改变闪动的频率

mail me:
zhaoliang0801@gmail.com 
zhaoliang_0801@dl.cn
*/

// *******************************************************	
// 头文件
#include "my51.h"

// *******************************************************	
// 管脚定义
sbit led = P2^0;	
	
// *******************************************************	
// 变量定义
unsigned char count;	// 定时器 定时时间延长变量 

// *******************************************************	
// 函数声明
void init_mcu (void);

// *******************************************************
// 主函数
// TRUE 在头文件中应用

void main (void)
{   
  	init_mcu ();
  	
	while (TRUE)	//死循环
	{					
					//程序是在 定时器中断中完成的
	}
}

// *******************************************************
// 单片机初始化 子函数 
// 设定 寄存器、变量初值

void init_mcu (void)
{
	TMOD = 0x10;				//T1 工作在方式1 16位计数器
	TH1 = (65536-50000) /256;  // 预先 设定定时器 初值
	TL1 = (65536-50000) %256;
	EA = 1;					//开启 总中断
	ET1 = 1;				//开启定时器 1 
	TR1 = 1;				//定时器 1 的运行标志位	
	
	count = 0;		// 变量初始化
}

// *******************************************************
// 定时器0中断 子函数 
// 产生50ms定时
	
void time1 (void)  interrupt 3  //产生50ms定时
{  
	TH1 = (65536-50000) /256;	//重新设置定时器 初值
	TL1 = (65536-50000) %256; 
	count ++;				//50ms太短,闪烁频率太快
	
	if (count == 10)		//用变量 count 延长到500ms
	{
		count = 0;		//计数器 清零
		led = !led;		//led 取反 
	}
}

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

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -