输入波形按比例输出程序问题

[复制链接]
2424|9
 楼主| 2001myp 发表于 2009-4-21 08:59 | 显示全部楼层 |阅读模式
我用外中断口输入一个方波,输出一个周期比例是6点几比10的波形,我用了两个定时器(51单片机),一个定时器计时,另外一个定时器计算比例后输出,但出来波形比例不稳,比如周期是5MS,比例是1.2,而周期是50MS时,比例变成了1.8,我在想能不能优化一下算法,用一个定时器可以么,高手提供一下思路好么,谢谢
 楼主| 2001myp 发表于 2009-4-21 09:34 | 显示全部楼层

顶一下

 顶一下
 楼主| 2001myp 发表于 2009-4-21 10:09 | 显示全部楼层

再顶一下,有没高手指教一下

红心j 发表于 2009-4-21 10:37 | 显示全部楼层

即时输出还是延后输出

 楼主| 2001myp 发表于 2009-4-21 11:49 | 显示全部楼层

即时输出啊,楼上老师介绍下思路啊

红心j 发表于 2009-4-21 12:02 | 显示全部楼层

如果是倒过来的关系,10:6才可以

前半周期必须是延后结束才行
 楼主| 2001myp 发表于 2009-4-21 13:00 | 显示全部楼层

呵呵,那现在怎么办

即时延后一个周期也没问题啊,反正毫秒级的,改怎么办呢
红心j 发表于 2009-4-21 13:48 | 显示全部楼层

至少延时一个可能的最大周期时间

两个定时器,一个用来记录输入信号高/低电平的时间,并计算出输出高低电平的时间所需装载的时间常数,排队存入记录指针指向的RAM;一个记录控制输出信号高/低电平的时间,排队取出输出指针指向的RAM。
 楼主| 2001myp 发表于 2009-4-21 14:11 | 显示全部楼层

下面程序好像不准确,高手指教

#include <REG51.H>    
#define uchar unsigned char
#define uint unsigned int
uint cnt=0;ls=0;
uchar bitflag=0;            
/****************************/
void initial(void)        
{P0=0x00;
bitflag=0;
EX0=1;                    
IT0=1;                    
TMOD=0x11;            
TH0=0xef;            
TL0=0xef;            
ET0=1;                
TR0=1;
TH1=0xf0;                
TL1=0xf0;
ET1=1;
TR1=1;        
EA=1;                    
}
/*************************************************/    
void main(void)            
{    
    initial();
           for(;;)                                
      {   if(bitflag==1) 
        {ls=cnt;cnt=0;bitflag=0;}

         
          }                
}    
/******************************************/
void time0(void) interrupt 1                             
          {TH0=0xef;            
TL0=0xef;
       cnt++;
     
}
/******************************************/
  void time1(void) interrupt 3         
{
  TH1=-((ls*9)/256);                
  TL1=-((ls*9)%256);   
P0=~P0;
 }  
/************************************************/
void extern_int0(void) interrupt 0 using 0    
{                                
bitflag=1;
}
 楼主| 2001myp 发表于 2009-4-22 13:15 | 显示全部楼层

上面程序输出比例好像不准确

上面程序输出比例不能准确把握,比如频率20的时候,比例1.2,但频率60的时候就变成1.4,另外频率高到80的时候,频率就开始变化,时快时慢,请高手指教
您需要登录后才可以回帖 登录 | 注册

本版积分规则

59

主题

210

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部