输出异常

[复制链接]
 楼主| pangb 发表于 2020-9-9 23:04 | 显示全部楼层 |阅读模式
pic, pi, IO, ic
pic12f509iIO输出异常
lium 发表于 2020-9-9 23:10 | 显示全部楼层

什么意思?不是很明白你说的什么,能再解释一下这个现象吗
 楼主| pangb 发表于 2020-9-9 23:14 | 显示全部楼层
前面的正常,最后无法输出GPIO=0x04。
 楼主| pangb 发表于 2020-9-9 23:19 | 显示全部楼层
#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;
    }
   
  }
  
}
zhuww 发表于 2020-9-9 23:19 | 显示全部楼层


会不会是 选项寄存器OPTION=0x07;的问题
 楼主| pangb 发表于 2020-9-9 23:22 | 显示全部楼层
这个寄存器我不会用
 楼主| pangb 发表于 2020-9-9 23:25 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
zwll 发表于 2020-9-9 23:30 | 显示全部楼层
楼主的意思是,5脚/GP2 无法输出高电平?
dingy 发表于 2020-9-9 23:33 | 显示全部楼层
前面这条GPIO = 0x34 执行正确吗?
supernan 发表于 2020-9-9 23:37 | 显示全部楼层

  GPIO=0x34;//0011 0100
  delay(12000);//18秒
  GPIO=0x00;   //启辉电压 0000 0000
  delay(1000); //维持一秒
  GPIO=0x04;   //关闭启辉电压 0000 0100
langgq 发表于 2020-9-9 23:40 | 显示全部楼层
把外围电路贴出来看一下, 避免是IO口的读--修改---写的问题造成的..
 楼主| pangb 发表于 2020-9-9 23:43 | 显示全部楼层
找到原因了:5脚I/O异常:由于复位会使选项寄存器OPTION置1,导致TOCS=1,TOCS为1时T0CKI引脚功能优先级比TRIS高,导致IO控制寄存器TRIS失效,单片机开启了外部时钟输入T0CKI,故IO失去控制。
 楼主| pangb 发表于 2020-9-9 23:48 | 显示全部楼层
但是现在又有了新问题,而外围电路设计本意是复位引脚高电平不工作,给持续低电平正常工作,问一下怎么实现呀!
 楼主| pangb 发表于 2020-9-9 23:52 | 显示全部楼层
现由于复位MCLR低电平有效,现程序插电即开始工作,MCLR持续低电平会持续复位无法正常工作。在找寻解决办法!
langgq 发表于 2020-9-9 23:55 | 显示全部楼层
会不会是没启用MCLR,而是使用的内部看门狗
 楼主| pangb 发表于 2020-9-9 23:58 | 显示全部楼层
要是使用的看门狗,怎么设置!
勇敢的大白菜 发表于 2020-9-10 08:30 | 显示全部楼层
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引脚,低电平有效。
  
}
juventus9554 发表于 2020-9-10 18:55 | 显示全部楼层
加一个电平转换就可以了,高低电平互换
pengf 发表于 2020-9-10 18:58 | 显示全部楼层
加个mos管翻转高低电平
 楼主| pangb 发表于 2020-9-10 19:01 | 显示全部楼层

好的,我明天去单位试一下,多谢各位大侠了哈        
您需要登录后才可以回帖 登录 | 注册

本版积分规则

701

主题

7643

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部