2376|0

6892

帖子

0

TA的资源

五彩晶圆(高级)

楼主
 

一简单的频率测量思路 [复制链接]

/*------------------------------------*/
/*用外部中断0和定时器0结合进行频率测量*/
/*由外部中断0对信号进行计数,定时器每隔1秒对计数值进行采样并清0计数值*/
/*------------------------------------*/

#include "iom8v.h"
#include "macros.h"

 

unsigned char CountNum;
unsigned int nTnum;
unsigned int CountF;

 

#pragma interrupt_handler INT0_Ovf:iv_INT0
void INT0_Ovf(void)                 
{  
    CLI();
    CountNum++;
    SEI();                        //恢复中断
}


//---------------------
#pragma interrupt_handler T0_Ovf:iv_TIMER0_OVF
void T0_Ovf(void)                 
{  
    CLI();
 TCNT0=0x06;     
 
    if(!(nTnum--))
    {
  nTnum=500;
  CountF=CountNum;
  CountNum=0x00;
 
 } 
 
    SEI();                        //恢复中断
}

//----------------------------------
void main(void)
{

unsigned char d1,d2;
PORTB=0x00;
DDRB=0xff;

TCCR0=03;               //晶振频率:8MHz,64分频:8us
TCNT0 =0x06;            //定时器每隔(256-6)*8=2000us(2ms)中断一次
TIMSK|=(1<<TOIE0);      //允许TC0中断
nTnum=500;              //采样时间1s=2ms*500


MCUCR|=(1<<ISC01);  //INT0下降沿触发
GICR|=(1<<INT0);    //使能INT0

CountNum=0x00;
SEI();             //使能全局中断

while(1)
{
 /*以下为简单的显示,将采样值进行十进制换后由PORTB接两只8421码LED显示*/
 d1=CountF/10;
 d2=CountF%10;
 d1=(d1<<4)|d2;
 PORTB=d1;
 
}
}

此帖出自单片机论坛
点赞 关注
个人签名一个为理想不懈前进的人,一个永不言败人!
http://shop57496282.taobao.com/
欢迎光临网上店铺!
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表