8H8K64U 用定时4做外部计数,如何算出外部频率 | 用专业的PWM7
如题:现在我想用定时器4 外部取比如18K的频率,
我用定时器4计数模式 开启中断 ,是不是默认下降沿中断,
一次我现在频率为22.1184频率,
这样定时器4可以最高取样到多少频率的范围?
我现在想取样外部信号计算出频率,单纯用定时器4的外部计数器模式是否可以做到,
是否还需要开启其他定时器配合,或者外部中断配合啥的,
求教大神们指点。
我现在系统频率为22.1184M,不知道定时器4可以取的频率范围为多少,定时器4对外部频率的宽度有要求么 最高输入频率是主时钟频率的一半
要两个定时器,一个用来计数,另一个用来测量时间
9年前做的频率计:
#include"reg51.h"
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
sbit ww=P2^0;//万位
sbit qw=P2^1;//千位
sbit bw=P2^2;//百位
sbit sw=P2^3;//十位
sbit gw=P2^4;//个位
uchar wan,qian,bai,shi,ge,a;
ulong count,b;
uint code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共阳极数码管不带小数点代码表
void delay(uint i)//延时i*100微秒
{
uint j,k;
for(j=i;j>0;j--)
for(k=9;k>0;k--);
}
void init()//初始化函数
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
PX0=0;
PT0=1;
IT0=1;
EA=1;
ET0=1;
EX0=1;
TR0=1;
a=0;
count=0;
}
void display()//显示函数
{
wan=count/10000;
qian=count%10000/1000;
bai=count%1000/100;
shi=count%100/10;
ge=count%10;
P0=table;
ww=1;
delay(5);
ww=0;
P0=table;
qw=1;
delay(5);
qw=0;
P0=table;
bw=1;
delay(5);
bw=0;
P0=table;
sw=1;
delay(5);
sw=0;
P0=table;
gw=1;
delay(5);
gw=0;
}
void main()//主函数
{
init();
while(1)
{
display();
if(a>=20)
{
a=0;
count=b;
b=0;
}
}
}
void add() interrupt 0
{
b++;
}
void time() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
a++;
}
这个型号的 T4管脚在 P0.2 / P0.6 可设置
P0.2 有 PWM7_3
【新提醒】视频教学《USB型 1T 8051 单片机原理及应用-8H8K64U》,山东大学陈桂友教授 - 视频教学,《单片机原理及应用》教学改革及实战技术交流会,本版限制发帖 国芯人工智能技术交流网站 - AI32位8051交流社区
【新提醒】高级16位PWM,输入捕获测量低频率信号,可低至0.014Hz,8H/STC32G/AI8051U 通用 - BLDC/144MHz-PWM-硬件移相/45路PWM+3路CCP/7组不同周期的PWM/DAC 国芯人工智能技术交流网站 - AI32位8051交流社区
页:
[1]