标题:
单片机实验 定时器的应用实验
[打印本页]
作者:
xuelongxl
时间:
2016-11-5 20:54
标题:
单片机实验 定时器的应用实验
之前做过的实验
通过P3.4和P3.5来调节发生频率
#include "reg52.h"
sbit BeepPin =P2^5; //定义蜂鸣器引脚
sbit IncKey =P3^4; //定义按键引脚
sbit DecKey =P3^5;
#define FOSC (11059200L) //Hz
#define WANTTIME (10) //ms
#define VTHX (65536-WANTTIME*FOSC/12000)/256 //计算定时初值
#define VTLX (65536-WANTTIME*FOSC/12000)%256
#define BEEPON (0) //使蜂鸣器发声的电平
#define BEEPOFF (1) //使蜂鸣器不发声的电平
#define INCKEY (1) //定义键值
#define DECKEY (2)
#define NOKEY (3)
#define TRUE (1) //定义真常量
#define FALSE (0) //定义假常量
//定义延时运行值变量和设置值变量
unsigned int DelayTime_Run,DelayTime_Set;
unsigned char TimeIsUpFlag; //定义时间到标志变量
bit BeepOutValue; //控制蜂鸣器的输出变量,用于刷新到BeepPin
//初始化函数
void Init(void)
{
DelayTime_Set=100; //为各变量赋初值
TimeIsUpFlag=TRUE;
BeepOutValue=BEEPOFF;
IncKey=1; //关闭按键口线内部的锁存器
DecKey=1;
TMOD=0x01; //初始化定时器T0
TL0=VTLX;
TH0=VTHX;
ET0=1; //使用T0中断
EA=1;
TR0=1; //启动T0
}
//清除时间到标志变量
void ClearTimeUpFlag(void)
{
TimeIsUpFlag=FALSE;
}
//读取时间到标志变量的值
unsigned char GetTimeUpFlag(void)
{
return(TimeIsUpFlag);
}
//设置延时时间
//xTime为延时时间,范围1~65535
void SetDelayTime(unsigned int xTime)
{
DelayTime_Run=xTime;
}
//按键函数
//返回为值为相应键的键值或NOKEY
unsigned char Key(void)
{
unsigned char RetValue=NOKEY;
if(IncKey==0) RetValue=INCKEY;
if(DecKey==0) RetValue=DECKEY;
while((IncKey==0)||(DecKey==0));
return(RetValue);
}
//主函数
void main(void)
{
unsigned char Temp; //声明局部变量
Init(); //调用初始化函数
while(1){
Temp=Key(); //调用按键函数
switch(Temp){ //处理按键
case INCKEY:
DelayTime_Set+=10;
break;
case DECKEY:
if(DelayTime_Set>0)
DelayTime_Set-=10;
break;
default: ;
}
BeepOutValue^=1; //蜂鸣器输出变量状态取反
BeepPin=BeepOutValue; //刷新蜂鸣器
ClearTimeUpFlag(); //清除时间到标志
SetDelayTime(DelayTime_Set); //设置延时时间
while(GetTimeUpFlag()==FALSE); //等待时间到
//此处的循环会导致对按键的响应速度变慢!
//解决办法:多按一会再放手
}
}
//T0的中断服务函数
void T0Int(void) interrupt 1
{
TL0=VTLX; //恢复定时初值
TH0=VTHX;
if(DelayTime_Run>0) //操作延时运行值变量,其到0时时间到
{DelayTime_Run--; TimeIsUpFlag=FALSE;}
else
TimeIsUpFlag=TRUE; //时间到,设置时间到标志
}
复制代码
03实验三 定时器.zip
2016-11-5 20:54 上传
点击文件名下载附件
下载积分: 黑币 -5
20.82 KB, 下载次数: 3, 下载积分: 黑币 -5
作者:
不住的MI
时间:
2017-12-11 20:11
很不错,解决了我的难题
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1