📄 timer1.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 + -