[PIC®/AVR®/dsPIC®产品] pic12f509iIO输出异常,求助!

[复制链接]
1026|10
 楼主| 浅水鲨 发表于 2019-5-21 13:22 | 显示全部楼层 |阅读模式
IO, pic, gp, GPIO, ui
前面的正常,最后无法输出GPIO=0x04。

  1. #include<pic.h>
  2. #define uchar unsigned char
  3. #define uint  unsigned int
  4. __CONFIG(0x001A);//启用MCLR功能
  5. void delay(uint x);
  6. void init();
  7. void scan();
  8. void main()
  9. {
  10.   init();
  11.   GPIO=0x34;//0011 0100
  12.   delay(12000);//18秒
  13.   GPIO=0x00;   //启辉电压 0000 0000
  14.   delay(1000); //维持一秒
  15.   GPIO=0x04;   //关闭启辉电压 0000 0100
  16.   while(1)
  17.   {
  18.    scan();
  19.   }
  20.   
  21.   
  22.    return;
  23. }
  24. void delay(uint x)//x为多少,就延迟多少毫秒。
  25. {
  26.   uint a,b;
  27.   for(a=x;a>0;a--)
  28.     for(b=110;b>0;b--);
  29. }
  30. void init()
  31. {
  32.   OPTION=0x07;
  33.   //TRISGPIO=0x00;//4脚做为I/O口,MCLR内部与vdd相连
  34.   TRISGPIO=0x0A;//4脚6脚输入,4脚作为MCLR引脚,低电平有效。
  35.   
  36. }
  37. void scan()
  38. {
  39. if(GP1==1)//6脚反馈高电平,7脚响应高电平。
  40.   {
  41.    delay(10);
  42.    if(GP1==1)
  43.     {
  44.       GP0=1;
  45.     }
  46.    
  47.   }
  48.   
  49. }
 楼主| 浅水鲨 发表于 2019-5-21 13:32 | 显示全部楼层
本帖最后由 浅水鲨 于 2019-5-21 13:34 编辑

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

本帖子中包含更多资源

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

×
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口的读--修改---写的问题造成的..
 楼主| 浅水鲨 发表于 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失去控制。
 楼主| 浅水鲨 发表于 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失去控制。
 楼主| 浅水鲨 发表于 2019-5-23 09:31 | 显示全部楼层
oxygenzz 发表于 2019-5-21 16:22
楼主的意思是,5脚/GP2 无法输出高电平?

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

但是现在又有了新问题,而外围电路设计本意是复位引脚高电平不工作,给持续低电平正常工作,问一下怎么实现呀!
现由于复位MCLR低电平有效,现程序插电即开始工作,MCLR持续低电平会持续复位无法正常工作。在找寻解决办法!
 楼主| 浅水鲨 发表于 2019-5-23 09:32 | 显示全部楼层
CoolSilicon 发表于 2019-5-22 08:17
把外围电路贴出来看一下, 避免是IO口的读--修改---写的问题造成的..

但是现在又有了新问题,而外围电路设计本意是复位引脚高电平不工作,给持续低电平正常工作,问一下怎么实现呀!
现由于复位MCLR低电平有效,现程序插电即开始工作,MCLR持续低电平会持续复位无法正常工作。在找寻解决办法!
 楼主| 浅水鲨 发表于 2019-5-23 09:35 | 显示全部楼层
会不会是没启用MCLR,而是使用的内部看门狗,要是使用的看门狗,怎么设置!
equivalent 发表于 2019-5-23 14:57 | 显示全部楼层
加一个电平转换就可以了,高低电平互换
奔波儿熊 发表于 2019-5-24 16:01 | 显示全部楼层
加个mos管翻转高低电平
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

12

帖子

0

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