这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » 郁闷,这个管脚电平怎么读不了

共2条 1/1 1 跳转至

郁闷,这个管脚电平怎么读不了

院士
2006-09-17 18:14:16     打赏
郁闷,这个管脚电平怎么读不了



关键词: 郁闷     这个     管脚     电平     怎么     不了    

院士
2006-12-22 22:43:00     打赏
2楼
问 代码如下:

if((P2&0x80)==0x80)                    
     level_cnt3=(level_cnt3<<1)|0x01;
else
     level_cnt3<<=1;

说明,89c51cpu,p2口外上拉10k电阻。
很奇怪,当p27电平有变化时(有意为之),levle_cnt3却没有变化。
如果将程序改为用p07,即

if((P0&0x80)==0x80)                    
     level_cnt3=(level_cnt3<<1)|0x01;
else
     level_cnt3<<=1;
却有效。

各位帮我分析一哈问题在哪里?谢谢先。


1: 检查P2口初始化是否正确。 2: p2口p0口初始化一样。另外,89c51的管脚初始化会象其他非51需要定义其输入输出?
好像没听说过。
实际证明:初始化时p2=0xff与p2=0x7f没有差别。

3: re:1、头文件中定义的特殊功能寄存器地址错了,查看一下头文件,或用KEIL软件仿真一下。
2、或者是你看错管脚了,把P0和P2口看错了!
3、单片机坏了! 4: 还有,在读一个管脚状态前,先将其写1 5: to 阿南“读一个管脚状态前,先将其写1”
是何道理?多谢指教。
但我这里为何p0行,p2不行?

我也怀疑单片机坏了。所以将p27引到没有用的p07。
但客户换了几片,也一样。
在没有找到原因而时间又急时,我现在暂时如下编程解决问题。真正郁闷。

#DEFINE TempratureIN 0X80

if(((P0&TempratureIN)==0x80)||((P2&TempratureIN)==0x80))                    
     level_cnt3=(level_cnt3<<1)|0x01;
else
     level_cnt3<<=1;
6: 你可以找一本单片机的基础书,参考一下I/O口部分这是和单片机I/O口的内部结构有关,内部原理相当于一个晶体管(或者说是三极管)!如果你将这个I/O口写为0,无论你这个管脚输入如何变化,读进来的值总是0。
我建议你用KEIL软件仿真一下你的程序,如果软件都通不过,那肯定与实际的单片机无关啦 7: P2口为什么你也上拉? 8: 现在只有怀疑单片机坏了 聂金华 发表于 2005-5-20 15:07 侃单片机 ←返回版面    

P2口为什么你也上拉?
--------------
这个硬件不是我做的,不过,P2口上拉也没错。

我现在只有怀疑单片机坏了。
但手里没更多的片子,客户在异地又不大关心。暂无法确认。
9: 不一定是单片机坏了P2口不用上拉也是可以的,但如果有上拉电阻就必须确保该上拉电阻
没有被烧坏,可以检查一下P2口的上拉电阻,这样才能确保检测信号
的正确性。 10: 已经确认:芯片脚坏了。谢谢楼上各位热心交流 11: 测管脚坏简单可发55和AA两次得到正确结果在编程器能烧写但不能正确使用时.这种方法非常有效.
最好嵌入到系统中进行实时检测.

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]