小弟想用这款单片机实现一段时间的延迟,具体做法就是GP1端口检测到高电平并且持续3分钟后GPO输出高电平,但是小弟试了一下,如果DELAY的时间长点,GPO端口电平不变化,DELAY短了倒是有变化,但是一直跳变,不延迟倒是可以,不知道问题出在哪地方了。有哪位用过这款芯片的可以给点指导吗?
#include <pic.h>
__CONFIG(0x0FCA); //采用内部4MHz RC,
void DELAY(unsigned int n);
unsigned char value;
unsigned int i=0,j=0;
void main(void)
{
ADCON0=0b00000000; //最高二位为0,引脚均为数字口
TRIS=0b00000010; //GP3只能作为输入脚
CM1CON0=0; //关闭比较器
GPIO=0b00000000;
value=GPIO;
while(1)
{
value=GP1;
if(value!=0)
{
// for(i=0;i<1000;i++)
// {for(j=0;j<108;j++);}
DELAY(100);
if(value!=0)
GP0=1;
}
}
}
//======延时(n)s
void DELAY(unsigned int n)
{
OPTION=0x01;
TMR0=0;
for(i=0;i<n;i++)
{
for(j=0;j<50;j++)
{
if(TMR0>=200)
TMR0=0;
}
}
} |