51单片机的普通io口是否可以计数由LC振荡器产生的频率?在线等,求解答!!
#include<reg52.h>#defineucharunsignedchar#defineuintunsignedintuintfreq=0;sbitMeasure...
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uint freq=0;
sbit Measure=P3^5;
void main(void)
{
while(1)
{
Measure=0;
if(Measure==1) //这里的测试引脚为LC振荡频率或555振荡产生频率输出脚,能不能这样写程序计数??
freq++;
}
} 展开
#define uchar unsigned char
#define uint unsigned int
uint freq=0;
sbit Measure=P3^5;
void main(void)
{
while(1)
{
Measure=0;
if(Measure==1) //这里的测试引脚为LC振荡频率或555振荡产生频率输出脚,能不能这样写程序计数??
freq++;
}
} 展开
展开全部
1.单片机的IO输入,好像低于0.8V认为=0,高于2.4V认为=1,0.8~2.4V之间保持不变。具体的电压请参看该单片机的手册。
2.LC或555产生的波形,一般情况下不能满足单片机输入的电压检测要求。但你可以在输入脚前加放大电路,或者COMS反相器等器件,使电压满足单片机的要求。
3.软件写错了!
Measure=1;//这才是单片机输入检测的置位!
if(Measure==1)//此条为判断输入点是否为高电压
......
2.LC或555产生的波形,一般情况下不能满足单片机输入的电压检测要求。但你可以在输入脚前加放大电路,或者COMS反相器等器件,使电压满足单片机的要求。
3.软件写错了!
Measure=1;//这才是单片机输入检测的置位!
if(Measure==1)//此条为判断输入点是否为高电压
......
追问
谢谢,回头我试一下加个放大器。
另外,Measure=0;这一句我想的是IO口检测到电平振荡产生高低电压,初始状态为低电平,振荡产生高电平后重新自动清零,思路不对么?
追答
思路不对!
单片机的输入特性为:读-》锁定。
即:当读到输入=0时,IO脚输出=0。
再读的时候,你只能读到0了。
所以,读之前及之后都应该让输入脚=1.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询