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++;
}
}
展开
 我来答
mrzhanglei1
2013-11-01 · 超过49用户采纳过TA的回答
知道小有建树答主
回答量:101
采纳率:0%
帮助的人:118万
展开全部
1.单片机的IO输入,好像低于0.8V认为=0,高于2.4V认为=1,0.8~2.4V之间保持不变。具体的电压请参看该单片机的手册。
2.LC或555产生的波形,一般情况下不能满足单片机输入的电压检测要求。但你可以在输入脚前加放大电路,或者COMS反相器等器件,使电压满足单片机的要求。
3.软件写错了!
Measure=1;//这才是单片机输入检测的置位!
if(Measure==1)//此条为判断输入点是否为高电压
......
追问
谢谢,回头我试一下加个放大器。

另外,Measure=0;这一句我想的是IO口检测到电平振荡产生高低电压,初始状态为低电平,振荡产生高电平后重新自动清零,思路不对么?
追答
思路不对!
单片机的输入特性为:读-》锁定。
即:当读到输入=0时,IO脚输出=0。
再读的时候,你只能读到0了。
所以,读之前及之后都应该让输入脚=1.
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式