单片机倍频问题

2019-03-24 17:02发布

想把50Hz的脉冲信号经51单片机后变为500Hz输出,写了一个程序却实现不了,望大神指点一下,谢谢!对输入信号的检测时间是0.5S,检测完后输出500Hz。输出部分没什么问题,就是检测输入信号想不明白怎么处理
#include"reg52.h"
sbit PWM_out=P1^0;  //定义输出脚
sbit PWM_in=P1^5;  //定义输入脚
unsigned int  count=0;         //计脉冲个数
void main()
{
        TMOD=0x01;                                 //定时器0工作方式1
        TH0=(65536-1000)/256;         //12M晶振1ms计时常数
        TL0=(65536-1000)%256;
        EA=1;                                         //开总中断
        ET0=1;                                         //开定时器0中断
        TR0=0;                                         //暂不启动定时器0         
            while(1);   
       if ((P1^5==1)&&(P1^5==0))
                {
                 count++;
                 
                 if((count >= 45)&&(count <= 55))
                 {   
                         TR0=1;
                 }
                 else
                 {
                  TR0=0;
                 }
       
        }
        }

void T0_time(void) interrupt 1          //中断函数,启动后每1ms进入一次中断
{
        TH0=(65536-1000)/256;             //12M晶振1ms计时常数
        TL0=(65536-1000)%256;
                 if(PWM_out)
                                 PWM_out=0;      //输出脚取反
                 else
                                 PWM_out=1;
                                 
}

此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
7条回答
gmchen
2019-03-25 20:18
HT001 发表于 2018-5-13 06:04
你好大神又见面了。之前想用纯硬件解决倍频问题,可后来发现难度重重,虽然有大神提供的资料做辅助但还是 ...

既然只有这8种频率,而且是已知的固定频率,那要什么倍频?直接由ARM给一个指令,然后单片机输出指定的频率不就行了?

一周热门 更多>