脉冲制作,定时器的问题
一个脉冲分为两段,高电平,低电平,频率从100HZ到10k,占空比可调,因为需要准确到us,我将CPU的频率倍频到4倍88473600 Mhz,单周期0.0113us,但是16位定时器最大时长740us,而需求是2000us-20000us,需要步进设定1us,cpu是c8051f 可以调节ckcon(分频),高低电平长度不同,为了计时精准,两个阶段采用不同分频,问题就在这里,如何自动切换分频,谢谢if(xl==0) //High level pulse width
{ TH0 = m/256;
TL0 = m%256;
pot=1;
xl=1;
}
if(xl==1) //Low level pulse width
{
TH0 = m2/256;
TL0 = m2%256;
pot=0;
xl=0; 16位定时器最大时长740us,但是可以在定时中断里加一个变量,实现软件分频,或将多个定时中断周期组合,实现更长的时长。
若改变分频,怕是会引起抖动。 LcwSwust 发表于 2021-4-18 14:44
16位定时器最大时长740us,但是可以在定时中断里加一个变量,实现软件分频,或将多个定时中断周期组合,实现 ...
按照楼上的办法写的,把最大延时写成标准中断,多的,再去中断
if(xl==0) //High level pulse width
{
if(tt0>741)
{ TH0 = 49/256;
TL0 = 49%256;
js=js+1;
if(js==ht)
{
TH0 = m/256;
TL0 = m%256;
pot=1;
xl=1;
}
xl=0;
}
else{ TH0 = m/256;
TL0 = m%256;
pot=1;
xl=1;}
}
chuandaoxy 发表于 2021-4-19 18:01
按照楼上的办法写的,把最大延时写成标准中断,多的,再去中断
if(xl==0) //High level pulse wi ...
好的,各种条件都试一下。
页:
[1]