搜索
bottom↓
回复: 10

PIC16F886的RA0的超低功耗唤醒有问题

[复制链接]

出0入90汤圆

发表于 2009-9-10 00:06:00 | 显示全部楼层 |阅读模式
现象是这样的,我想做个实验,PIC16F886的RA0有超低功耗唤醒功能,我想用一个按键接RA0,实现:按第一次进入低功耗,按第2次低功耗唤醒,然后依次循环。RA0接的上拉电阻,按键到地;
现在可以实现进入低功耗,也可以实现低功耗唤醒。但是唤醒之后,RA0的电平似乎被锁定成低电平了,虽然外部仍然为高,但是RA0在单片机里面像怎么都改变不了了,一直为低,搞得我没办法继续下去。有谁知道是怎么回事吗?程序如下:
#include<pic.h>
#define uchar unsigned char
#define uint unsigned int
uchar n=0,time_flag=0,rb_flag=0;
uchar rb0_flag=0,rb1_flag=0,rb2_flag=0,rb3_flag=0;
uchar t_rb0,t_rb1,t_rb2,t_rb3;
uchar run,num;
uchar dis1,dis2,dis3,dis4;
uchar flag_run1=0,flag_run2,flag_run3,flag_run4;//闪烁标志
uchar flag_huanxing=0;//唤醒标志
uchar flag_2;
uchar dat;
__CONFIG(XT&WDTDIS&PWRTEN&MCLREN&UNPROTECT&DUNPROTECT&BORDIS&IESOEN&FCMEN&LVPDIS&DEBUGEN&BORV40);

void delayms(uchar x)
{
    uint y;
    for(;x>0;x--)
        for(y=100;y>0;y--);
}

void ulpwu_init()//超低功耗唤醒初始化
{

    RA0=1;
    TRISA&=0xfe;//RA0输出
    delayms(1);
    ULPWUIF=0;//超低功耗唤醒中断标志位清零
    ULPWUE=1;//超低功耗唤醒使能
    TRISA|=0x01;//RA0输入

    ULPWUIE=1;//超低功耗中断唤醒中断使能
    PEIE=1;//超低功耗中断使能的开关,要开启
    GIE=1;//总中断开启
    SLEEP();//休眠,库函数,在pic.h里
}


void io_init()
{
    ANSEL=0x00;
    TRISA|=0x01;//RA0作为数字输入
    PORTA|=0x01;

    TRISC=0x00;
    PORTC=0xf0;
   
    GIE=1;//总中断开启
}


void interrupt tmr1()
{
    if(ULPWUIF==1)//超低功耗中断唤醒标志位为1
    {
        ULPWUIF=0;//必须手动清零
        ANSEL=0x00;
        TRISA=0x01;
        PORTC=0xf0;
    }
   
}


void main()
{
    uchar i,temp;
    io_init();
    while(1)
    {
        if(RA0==0)
        {
            delayms(10);
            if(RA0==0)
            {
                while(RA0==0);
                PORTC=0xff;
                ulpwu_init();
            }   
        }

    }
}

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入90汤圆

 楼主| 发表于 2009-9-10 00:06:37 | 显示全部楼层
希望用过PIC单片机的超低功耗唤醒功能的朋友,能够发表下意见。

出0入0汤圆

发表于 2009-9-10 12:03:14 | 显示全部楼层
建议参考AN879,是不是你外部硬件电路和规范有不同.

出0入90汤圆

 楼主| 发表于 2009-9-10 12:49:19 | 显示全部楼层
RA0外部用了一个上拉电阻,然后通过一个按钮来实现常高,低电平触发。

出0入0汤圆

发表于 2009-9-10 17:28:29 | 显示全部楼层
加个电容看看,那个笔记上不是要求加电容的么.

出0入0汤圆

发表于 2009-9-11 09:25:32 | 显示全部楼层
一般是用INT来唤醒,RA0可以唤醒?

出0入0汤圆

发表于 2009-9-11 09:35:49 | 显示全部楼层
PIC16F88X和68X具有的功能

出0入0汤圆

发表于 2009-9-16 16:59:06 | 显示全部楼层
我现在用PIC16F7x系列作低功耗;5V是100UA;不知道你现在最低做到多少?

出0入0汤圆

发表于 2009-9-16 16:59:36 | 显示全部楼层
这是我的QQ:147092405;希望我们能够交流一下

出0入0汤圆

发表于 2010-3-24 09:35:56 | 显示全部楼层
88x具有N多特色,请参考PIC16F88x数据手册, 超低功耗唤醒:

(原文件名:RA0超低功耗唤醒.JPG)

出0入0汤圆

发表于 2020-1-14 22:16:51 | 显示全部楼层
楼主这个低功耗问题解决了吗?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-25 09:53

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表