定时器中断—频率计程序

定时器中断—频率计程序

ID:9266615

大小:29.50 KB

页数:6页

时间:2018-04-25

定时器中断—频率计程序_第1页
定时器中断—频率计程序_第2页
定时器中断—频率计程序_第3页
定时器中断—频率计程序_第4页
定时器中断—频率计程序_第5页
资源描述:

《定时器中断—频率计程序》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、/*注:定时器中断的例子,简单的频率计,初学者留意各引脚电 压极性和电压值,不可超出5V,我们只是做学习实验,不要 超出51hei单片机学习板的承受范围,否则要求对电子非常熟悉,不然会烧坏芯片, 版权:www.51hei.com,注意:P1.3与P1.7要相连接如果是测量外部频率要共地.*/#include//头文件#include#defineucharunsignedchar//宏定义#defineuint unsignedintsbitFin=P1^3; //测量频率管脚sbitFout=P1

2、^7; //发生频率管脚ucharcodetable[]={0x3f,0x06,0x5b,//数码管显示的数值0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,};voiddisplay(uchar*lp,ucharlc); //显示子函数voiddelay();//延时子函数voidmee_F();//测频率子函数voidmee_T();//测周期子函数voidFry_mee();//测频测周选择的子函数ucharl_tmpdata[8];//程序显示的缓冲区bitint_flag;//中断事件相应的标志uintfr

3、y;  //保存的频率值voidinit();voidmain()//主函数{init();//调用初始化函数}voidinit()  //初始化函数{uinttmp;//数据转换缓冲区uinti=2000;//显示延时,提高亮度EA=1;//打开总中断TMOD=0x11;//工作方式3TH0=256-(50000/256);//装入初值TL0=256-(50000%256);TH1=256-500/256;TL0=256-500%256;ET0=1; //定时器0开ET1=1; //定时器1开TR1=1; //启动定时器1    whi

4、le(1)    { Fry_mee();//开始测量 l_tmpdata[0]=tmp/10000; //测量完后将整数分离出来 tmp=tmp%10000;  //进行显示  l_tmpdata[1]=tmp/1000; tmp=tmp%1000; l_tmpdata[2]=tmp/100; tmp=tmp%100; l_tmpdata[3]=tmp/10; l_tmpdata[4]=tmp%10; while(i--) //显示延时,提高亮度 {  display(l_tmpdata,5);//用数字显示频率 }  i=2000; 

5、//从新装入初值    }}voidtime0()interrupt1//定时器0的中断函数{ int_flag=1;   //中断标志}voidtime1()interrupt3  //定时器1的中断函数,用来产生频率{ TH1=(65536-1000)/256;//从新赋值 TL1=(65536-1000)%256; Fout=!Fout; //?反,产生频率,即频率发生器}voidFry_mee(){ if(fry<2000)  //?于2k的,侧周   mee_T(); elseif(fry>=2000)//大于2k的,测频 me

6、e_F();}//测频原理:用一个标准的50ms计数中断,对被测信号计数voidmee_F() //测频子函数{ bitlhj_old=1,lhj_new=1; //定义起始状态 uintf_count=0;//计数变量 int_flag=0; TH0=(65536-50000)/256;//定时器,初值50ms TL0=(65536-50000)%256; TR0=1;   //启动定时器0    while(1)  //死循环,测频    { lhj_new=Fin;//?现在频率引脚的状态 if(lhj_old!=lhj_new)/

7、/与前一刻的值比较 f_count++; lhj_old=lhj_new;//将新值赋给旧值 if(int_flag)//如果到了定时时间  {  TR0=0;//关闭定时器0  fry=f_count*10;//计算频率,f_count=f_count*20/2  //一个周期有2个跳变,20个周期为1s  return;    //返回  }    }}//测周原理:以被测信号的一个周期为中断源,对单片机及其//周期进行计数读?定时器的值为计数值voidmee_T()//测周子函数{ bitlhj_old=0,lhj_new=0;//

8、定义初始状态 uchartemp_flag=0; uintt_count; //计数变量 TH0=0;  //赋初始值 TL0=0; while(1)//死循环,测周 { lhj_new=Fi

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。