/*
定时器0应用
Study-3 51 单片机开发板
mail me:
zhaoliang0801@gmail.com
zhaoliang_0801@gmail.com
*/
// *******************************************************
// 头文件
#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 = 0x01; //T0 工作在方式1 16位计数器
TH0 = (65536-50000) /256; // 预先 设定定时器 初值
TL0 = (65536-50000) %256;
EA = 1; //开启 总中断
ET0 = 1; //开启定时器 0
TR0 = 1; //定时器 0 的运行标志位
count = 0; // 变量初始化
}
// *******************************************************
// 定时器0中断 子函数
// 产生50ms定时
void time0 (void) interrupt 1
{
TH0 = (65536-50000) /256; //重新设置定时器 初值
TL0 = (65536-50000) %256;
count ++; //50ms太短,闪烁频率太快
if (count == 10) //用变量 count 延长到500ms
{
count = 0; //计数器 清零
led = !led; //led 取反
}
}
// *******************************************************
/*
定时器1应用
Study-3 51 单片机开发板
mail me:
zhaoliang0801@gmail.com
zhaoliang_0801@gmail.com
*/
// *******************************************************
// 头文件
#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 取反
}
}
// *******************************************************
keil 工程文件下载 定时器0 定时器1
文章评论(0条评论)
登录后参与讨论