打印
[PIC®/AVR®/dsPIC®产品]

pic10f200的输入管脚问题

[复制链接]
3900|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhoujianyong|  楼主 | 2014-12-26 17:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
因项目需要,想利用pic10f200实现一个简单的功能如下:
1. gp0配置为输入(弱上拉), gp2配置为输出.
2. gp2上电的时候输出高电平.
3. 当gp0接收到低电平信号输入的时候,gp2改变为输出低电平.

代码比较简单,如下:
#include<pic10f200.h>
#include <pic.h>
#include <xc.h>

// configs
#pragma config WDTE=OFF
#pragma config MCLRE=OFF
#pragma config CP=ON

void initio()
{
    TRISGPIO=0B0011; // gp0/gp1 as input, gp2 as output
    FOSC4=0;                // disable fosc4 function for gp2
    OPTION=0x87;        // pullup, no wake
}

void main()
{
    //CMCON0=0XF7; // pic10f204 only
    initio();

    GP2=1;
    while(1)
    {
        if(GP0==0) GP2=0;
    }
}

实际运行之后,发现:
1. GP2=1或者GP2=0这种改变输出电平的代码是能够起作用的,
  用万用表可以看到电压的变化。
2. 但是if(GP0==0) GP2=0不起作用,也就是if(GP0==0)这个判断条件不起作用。
  在把GP0直接连接到地之后,GP2的输出也不改变为低电平。

请大家指点迷津,非常感谢!
沙发
baoshi_libo| | 2014-12-27 20:46 | 只看该作者
除了头文件,别的没看出问题
mplab中指定芯片,头文件,只包括一个pic.h即可
如果故障依旧,关下若上拉功能,再试

使用特权

评论回复
板凳
zhoujianyong|  楼主 | 2014-12-29 10:30 | 只看该作者
baoshi_libo 发表于 2014-12-27 20:46
除了头文件,别的没看出问题
mplab中指定芯片,头文件,只包括一个pic.h即可
如果故障依旧,关下若上拉功能 ...

to baoshi_libo兄,多谢回复!

我重新用示波器检测了,发现输入管脚实际上是起作用的。但是感觉不对,现象如下。

    GP2=1;
    while(1)
    {
        if(GP0==0)
        {
            GP2=0;
        }
    }
    以上代码的意思:一旦检测到GP0为0,GP2就一直输出为0;即使以后GP0再变为1,GP2也输出0。
  但是在实际运行的时候,用示波器发现,只有GP0被连接到地的时候,GP2输出为0;接着后面当GP0重新悬空或接高的时候,GP2马上变成了1。为什么当GP0不接地的时候,GP2会从0变回成为1?

使用特权

评论回复
地板
baoshi_libo| | 2014-12-30 21:50 | 只看该作者
我觉得可能是看门狗没关的问题
配置字,在编程器编程时设置下

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

7

帖子

3

粉丝