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

pic12f509iIO输出异常,求助!

[复制链接]
827|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
IO, pic, gp, GPIO, ui
前面的正常,最后无法输出GPIO=0x04。

#include<pic.h>
#define uchar unsigned char
#define uint  unsigned int
__CONFIG(0x001A);//启用MCLR功能
void delay(uint x);
void init();
void scan();
void main()
{
  init();
  GPIO=0x34;//0011 0100
  delay(12000);//18秒
  GPIO=0x00;   //启辉电压 0000 0000
  delay(1000); //维持一秒
  GPIO=0x04;   //关闭启辉电压 0000 0100
  while(1)
  {
   scan();
  }
  
  
   return;
}
void delay(uint x)//x为多少,就延迟多少毫秒。
{
  uint a,b;
  for(a=x;a>0;a--)
    for(b=110;b>0;b--);
}
void init()
{
  OPTION=0x07;
  //TRISGPIO=0x00;//4脚做为I/O口,MCLR内部与vdd相连
  TRISGPIO=0x0A;//4脚6脚输入,4脚作为MCLR引脚,低电平有效。
  
}
void scan()
{
if(GP1==1)//6脚反馈高电平,7脚响应高电平。
  {
   delay(10);
   if(GP1==1)
    {
      GP0=1;
    }
   
  }
  
}

使用特权

评论回复
沙发
浅水鲨|  楼主 | 2019-5-21 13:32 | 只看该作者
本帖最后由 浅水鲨 于 2019-5-21 13:34 编辑

会不会是 选项寄存器OPTION=0x07;的问题!这个寄存器我不会用

PIC12f509.png (19.02 KB )

引脚图

引脚图

使用特权

评论回复
板凳
oxygenzz| | 2019-5-21 16:22 | 只看该作者
楼主的意思是,5脚/GP2 无法输出高电平?

前面这条GPIO = 0x34 执行正确吗?

  GPIO=0x34;//0011 0100
  delay(12000);//18秒
  GPIO=0x00;   //启辉电压 0000 0000
  delay(1000); //维持一秒
  GPIO=0x04;   //关闭启辉电压 0000 0100

使用特权

评论回复
地板
CoolSilicon| | 2019-5-22 08:17 | 只看该作者
把外围电路贴出来看一下, 避免是IO口的读--修改---写的问题造成的..

使用特权

评论回复
5
浅水鲨|  楼主 | 2019-5-23 09:26 | 只看该作者
oxygenzz 发表于 2019-5-21 16:22
楼主的意思是,5脚/GP2 无法输出高电平?

前面这条GPIO = 0x34 执行正确吗?

感谢回答,我找到原因了:5脚I/O异常:由于复位会使选项寄存器OPTION置1,导致TOCS=1,TOCS为1时T0CKI引脚功能优先级比TRIS高,导致IO控制寄存器TRIS失效,单片机开启了外部时钟输入T0CKI,故IO失去控制。

使用特权

评论回复
6
浅水鲨|  楼主 | 2019-5-23 09:26 | 只看该作者
CoolSilicon 发表于 2019-5-22 08:17
把外围电路贴出来看一下, 避免是IO口的读--修改---写的问题造成的..

感谢回答,我找到原因了:5脚I/O异常:由于复位会使选项寄存器OPTION置1,导致TOCS=1,TOCS为1时T0CKI引脚功能优先级比TRIS高,导致IO控制寄存器TRIS失效,单片机开启了外部时钟输入T0CKI,故IO失去控制。

使用特权

评论回复
7
浅水鲨|  楼主 | 2019-5-23 09:31 | 只看该作者
oxygenzz 发表于 2019-5-21 16:22
楼主的意思是,5脚/GP2 无法输出高电平?

前面这条GPIO = 0x34 执行正确吗?

但是现在又有了新问题,而外围电路设计本意是复位引脚高电平不工作,给持续低电平正常工作,问一下怎么实现呀!
现由于复位MCLR低电平有效,现程序插电即开始工作,MCLR持续低电平会持续复位无法正常工作。在找寻解决办法!

使用特权

评论回复
8
浅水鲨|  楼主 | 2019-5-23 09:32 | 只看该作者
CoolSilicon 发表于 2019-5-22 08:17
把外围电路贴出来看一下, 避免是IO口的读--修改---写的问题造成的..

但是现在又有了新问题,而外围电路设计本意是复位引脚高电平不工作,给持续低电平正常工作,问一下怎么实现呀!
现由于复位MCLR低电平有效,现程序插电即开始工作,MCLR持续低电平会持续复位无法正常工作。在找寻解决办法!

使用特权

评论回复
9
浅水鲨|  楼主 | 2019-5-23 09:35 | 只看该作者
会不会是没启用MCLR,而是使用的内部看门狗,要是使用的看门狗,怎么设置!

使用特权

评论回复
10
equivalent| | 2019-5-23 14:57 | 只看该作者
加一个电平转换就可以了,高低电平互换

使用特权

评论回复
11
奔波儿熊| | 2019-5-24 16:01 | 只看该作者
加个mos管翻转高低电平

使用特权

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

本版积分规则

1

主题

12

帖子

0

粉丝