想把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;
}
此帖出自
小平头技术问答
既然只有这8种频率,而且是已知的固定频率,那要什么倍频?直接由ARM给一个指令,然后单片机输出指定的频率不就行了?
一周热门 更多>