PIC12F510定时延迟

2019-08-03 19:51发布

小弟想用这款单片机实现一段时间的延迟,具体做法就是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;
                       
                }
        }
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
zhangmangui
1楼-- · 2019-08-03 23:23
延时函数里面这些是干啥的  
if(TMR0>=200)
      TMR0=0
建议你别再延时函数里面配置寄存器  
延时就只用来延时
                        
jdx0606
2楼-- · 2019-08-04 02:24
 精彩回答 2  元偷偷看……

一周热门 更多>