如何利用单片机有效地测量占空比
看看一些带捕获功能的单片机,外部信号触发后定时器的值会锁存,将几个电平跳变时的值相减,再相比就可得到占空比
我用的是stc12c5a60s2 这个的捕获功能不是很理解,你能详细的说说吗
oid pca_init() //捕获模块初始化
{
CCON=0x00;
CMOD = 0x01;
CCAPM0=0x21; //CCAP上升沿捕获, 允许中断
CL=0; //清空PCA基本计数器
CH=0;
CCAP0L = 0x00;
CCAP0H = 0x00;
CR=1; //启动PCA
EA=1;
}
void DigDisplay();
void main()
{
uint i;
pca_init();
if(flag==1)
{
t4=TABLE[1]-TABLE[0];
for(i=0;i<8;i++)
{
DisplayData=DIG_CODE[t4%10];
t4=t4/10;
}
while(1)
{
DigDisplay();
}
while(1);
}
}
void PCA_Int(void) interrupt 7
{
if(CCF0==1&&I<5)
{
CCF0=0;
CCAPM0=0x11;
TABLE[I]= CCAP0H*256 + CCAP0L;
I++;
}
if(I>=5) flag=1;
我感觉也可以测出脉宽,载测占空比
需要对上下沿都能捕获才行,毕竟占空比是上下沿都有的,不行的话就加一个过零比较
请问这个程序怎么写