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

PIC12F510延时问题

[复制链接]
1063|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jdx0606|  楼主 | 2014-7-18 11:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
小弟想用这款单片机实现一段时间的延迟,具体做法就是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;
                        
                }
        }
}
沙发
NE5532| | 2014-7-18 13:51 | 只看该作者
楼主的问题不在于“这个芯片”,在于思路混乱,value=GPIO;这个动作只执行了一次,以后永远不用再读端口状态了??写程序前要先画流程图,不要空对空乱整。

使用特权

评论回复
板凳
jdx0606|  楼主 | 2014-7-18 16:14 | 只看该作者
大循环里面有啊
value=GP1;  

使用特权

评论回复
地板
wangch_sh| | 2014-7-19 17:39 | 只看该作者
延时后还要再读一次。

使用特权

评论回复
5
jdx0606|  楼主 | 2014-7-21 08:09 | 只看该作者
在 DELAY(100);后加入value=GP1;再读一次也没有用, DELAY(10);时端口不停地闪,再加大一点延迟时间就不行了

使用特权

评论回复
6
ayb_ice| | 2014-7-21 17:06 | 只看该作者
幸好不是延时一天,否则不可想象

使用特权

评论回复
7
jdx0606|  楼主 | 2014-7-25 20:28 | 只看该作者
晕死,是PROTEUS的问题,烧到板子上就正常了

使用特权

评论回复
8
xlsf1048| | 2014-8-6 11:39 | 只看该作者
为何用delay呢

使用特权

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

本版积分规则

6

主题

45

帖子

1

粉丝