我是菜鸟51单片机求助 10
当输入一个高电平,有30kHZ的脉冲出入,当输入转入低电平后。计算输入脉冲个数是否在两个值之间,如果在则发出一个信号...
当输入一个高电平,有30kHZ的脉冲出入,当输入转入低电平后。计算输入脉冲个数是否在两个值之间,如果在则发出一个信号
展开
展开全部
输入的高电平接P3.2,输入脉冲接P3.4
#include<reg52.h>
sbit INPUT = P3^4;
static i = 0;
unsigned int cnt;
void main()
{
TMOD = 0X05;//计数器0
TH0=0;///计数初值为0
TL0=0;
EA=1;//打开相应中断
EX0=1;
IT0=1;//边沿触发
while(INPUT==0);//等待高电平输入
TR0 = 1;//开始计数
while(1);
}
void isr_INT0 interrupt 0
{
cnt = 65536*i+TH0*256+TL0;//计算所有计数脉冲
if((cnt>xx)&&(cnt<yy))
{
P1=~P1;//如果在某两个值以内发出信号
}
}
void isr_timer interrupt 1
{
i++;//计数溢出,溢出次数加一
TH0=0;//重新载入初值
TL0=0;
}
#include<reg52.h>
sbit INPUT = P3^4;
static i = 0;
unsigned int cnt;
void main()
{
TMOD = 0X05;//计数器0
TH0=0;///计数初值为0
TL0=0;
EA=1;//打开相应中断
EX0=1;
IT0=1;//边沿触发
while(INPUT==0);//等待高电平输入
TR0 = 1;//开始计数
while(1);
}
void isr_INT0 interrupt 0
{
cnt = 65536*i+TH0*256+TL0;//计算所有计数脉冲
if((cnt>xx)&&(cnt<yy))
{
P1=~P1;//如果在某两个值以内发出信号
}
}
void isr_timer interrupt 1
{
i++;//计数溢出,溢出次数加一
TH0=0;//重新载入初值
TL0=0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询