打印

输出异常

[复制链接]
339|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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;
    }
   
  }
  
}

使用特权

评论回复
5
zhuww| | 2020-9-9 23:19 | 只看该作者


会不会是 选项寄存器OPTION=0x07;的问题

使用特权

评论回复
6
pangb|  楼主 | 2020-9-9 23:22 | 只看该作者
这个寄存器我不会用

使用特权

评论回复
7
pangb|  楼主 | 2020-9-9 23:25 | 只看该作者

使用特权

评论回复
8
zwll| | 2020-9-9 23:30 | 只看该作者
楼主的意思是,5脚/GP2 无法输出高电平?

使用特权

评论回复
9
dingy| | 2020-9-9 23:33 | 只看该作者
前面这条GPIO = 0x34 执行正确吗?

使用特权

评论回复
10
supernan| | 2020-9-9 23:37 | 只看该作者

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

使用特权

评论回复
11
langgq| | 2020-9-9 23:40 | 只看该作者
把外围电路贴出来看一下, 避免是IO口的读--修改---写的问题造成的..

使用特权

评论回复
12
pangb|  楼主 | 2020-9-9 23:43 | 只看该作者
找到原因了:5脚I/O异常:由于复位会使选项寄存器OPTION置1,导致TOCS=1,TOCS为1时T0CKI引脚功能优先级比TRIS高,导致IO控制寄存器TRIS失效,单片机开启了外部时钟输入T0CKI,故IO失去控制。

使用特权

评论回复
13
pangb|  楼主 | 2020-9-9 23:48 | 只看该作者
但是现在又有了新问题,而外围电路设计本意是复位引脚高电平不工作,给持续低电平正常工作,问一下怎么实现呀!

使用特权

评论回复
14
pangb|  楼主 | 2020-9-9 23:52 | 只看该作者
现由于复位MCLR低电平有效,现程序插电即开始工作,MCLR持续低电平会持续复位无法正常工作。在找寻解决办法!

使用特权

评论回复
15
langgq| | 2020-9-9 23:55 | 只看该作者
会不会是没启用MCLR,而是使用的内部看门狗

使用特权

评论回复
16
pangb|  楼主 | 2020-9-9 23:58 | 只看该作者
要是使用的看门狗,怎么设置!

使用特权

评论回复
17
勇敢的大白菜| | 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引脚,低电平有效。
  
}

使用特权

评论回复
18
juventus9554| | 2020-9-10 18:55 | 只看该作者
加一个电平转换就可以了,高低电平互换

使用特权

评论回复
19
pengf| | 2020-9-10 18:58 | 只看该作者
加个mos管翻转高低电平

使用特权

评论回复
20
pangb|  楼主 | 2020-9-10 19:01 | 只看该作者

好的,我明天去单位试一下,多谢各位大侠了哈        

使用特权

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

本版积分规则

701

主题

7643

帖子

6

粉丝