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

2007-2-26 21:44 5289 12 12 分类: MCU/ 嵌入式

 


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



PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
12
关闭 站长推荐上一条 /3 下一条