打印

PIC10F200程序问题,检测GP1和GP2是否为高来控制GP0输出时序问题,求助!!

[复制链接]
3251|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
慕落城|  楼主 | 2012-12-24 23:49 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
主要功能:1、检测GP1和GP2是否为高来控制GP0的高低,从而输出一段时序。
问题:1、GP1 GP2配置为输入后,硬件上给高电平,但是if仍然判断不到GP1==1,不能继续执行if里面的语句。
2、无论GP1  是否为高,一直在执行if里面语句,即IF判断失效。
3、用NOP()可以正常延时,但是用自己写得delay函数就不跑不过去了。编译无错误。
程序如下,望各位多多指点错误之处,必细心修改,比较急,在线等!
#include<pic.h>

//__CONFIG(RC & WDTEN & UNPROTECT);
__CONFIG(0x08);
#define uchar unsigned char
#define uint unsigned int
#define Trigger GP0
#define Status  GP1
#define Reset   GP2


void delaytime(uchar i)
{
   uint j;
    for(;i>0;i--)
        for(j=0;j<400;j++)asm("clrwdt");
}

void init(void)
{
        TRIS = 0B00000110;        //GP0配置为输出,GP1、GP2为输入
        OPTION = 0X00;                        //GP0、GP1、GP2配置为IO口
        FOSC4=0;                                                
        Reset  = 0;
  Status = 1;       
  Trigger= 0;
}

void main()
{
  init();
/****检测延时用
  while(1)
  {
          NOP();NOP();
          delaytime(138);//1秒
          Trigger = 1;  
          delaytime(138);//1秒
          Trigger = 0;  
          delaytime(138);//1秒
          Trigger = 1;  
          delaytime(138);//1秒
          Trigger = 0;
          delaytime(138);//1秒               
  }  
******/         
  while(1)
  {
          if(Reset==1)
          {
                  delaytime(138);//1秒
                  Trigger = 1;
                  delaytime(690);//5秒
                  Trigger = 0;
                  delaytime(414);//3秒
                  Trigger = 1;
                  delaytime(69);//500毫秒
                  Trigger = 0;
                  if(Status!=1)
                  {
                          delaytime(138);//1秒
                          Trigger = 1;
                          delaytime(69);//500毫秒
                          Trigger = 0;
                  }                                 
          }
   // asm("clrwdt");      
  }        
}
我QQ136314885,希望大家能指点!
沙发
慕落城|  楼主 | 2012-12-25 00:02 | 只看该作者
附电路图如下:

未命名_副本.jpg (91.25 KB )

未命名_副本.jpg

使用特权

评论回复
板凳
慕落城|  楼主 | 2012-12-25 09:11 | 只看该作者
本人新手,希望大家能指点下。

使用特权

评论回复
地板
yewuyi| | 2012-12-25 11:00 | 只看该作者
请不要写delaytime这样的函数,请使用定时器。

使用特权

评论回复
5
victor07033| | 2016-1-9 13:34 | 只看该作者
yewuyi 发表于 2012-12-25 11:00
请不要写delaytime这样的函数,请使用定时器。

这款芯片,定时器怎么使用啊?拜托指教下,万分感谢!

使用特权

评论回复
6
JY-DX-JY| | 2016-1-9 14:22 | 只看该作者
你怎么把喂狗指令屏蔽了?

使用特权

评论回复
7
kfhzy| | 2016-1-11 09:19 | 只看该作者
JY-DX-JY 发表于 2016-1-9 14:22
你怎么把喂狗指令屏蔽了?

好象是把喂狗指令当作延时指令用了

使用特权

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

本版积分规则

0

主题

0

帖子

0

粉丝