标题:
STC15F2K60S2做数字频率计,单片机的定时器和外部中断不会用
[打印本页]
作者:
renlei97
时间:
2018-5-30 15:11
标题:
STC15F2K60S2做数字频率计,单片机的定时器和外部中断不会用
用STC15F2K60S2做一款数字频率计,频率0-20MHZ,电路已经设计完了,单片机的定时器和外部中断不会用,求大神给个实例程序或者加QQ1240073943分享下经验,谢谢。
作者:
大玉米
时间:
2018-6-13 14:52
谢谢,谢谢
作者:
jzzgb
时间:
2020-5-11 22:18
你好!STC官网有详细的例程可以下载,参考。另外STC单片机烧写软件中有各个功能的标准源码和各个寄存器设置值,很有用的!
作者:
adject
时间:
2020-5-12 00:26
unsigned int cnt = 0,Meter_cnt=0,Meter_f =0;
void EXT0_INIT()
{
INT0 = 1; //外部诊断允许
IT0 = 1; //设置INT0的中断类型 (1:仅下降沿 0:上升沿和下降沿)
EX0 = 1; //使能INT0中断
EA = 1;
}
//中断服务程序
void exint0() interrupt 0 //INT0中断入口
{
cnt++;
}
void Timer0Init(void) //10毫秒@12.000MHz
{
AUXR &= 0x7F; //定时器时钟12T模式
TMOD &= 0xF0; //设置定时器为模式16位自动重装载
TL0 = 0xF0; //设置定时初值
TH0 = 0xD8; //设置定时初值
TF0 = 0; //清除TF0标志
ET0 = 1; //使能定时器0中断
TR0 = 1; //定时器0开始计时
}
void tm0_isr() interrupt 1 //定时器 10ms 溢出中断
{
static char t=0;
t++;cnt++;
if(t==200) //每2秒读取外部中断的次数
{
Meter_cnt = cnt;
cnt = 0;
Meter_f = Meter_cnt/2; //计算1秒的次数,就是频率
}
}
main()
{
EXT0_INIT();
Timer0Init();
while(1);
}
大概思路就是读取单位时间内外部中断的个数,在求出频率
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1