日志档案

发表于 2007-2-26 21:44:29

5

标签: 单片机  定时器  

Study-3__51__单片机实验二__定时器

 

/*
 定时器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

rar


系统分类: 单片机   |   用户分类: 电子技术   |   来源: 原创   |   【推荐给朋友】

    阅读(785)    回复(0)  

投一票您将和博主都有获奖机会!