因项目需要,想利用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的输出也不改变为低电平。
请大家指点迷津,非常感谢! |