找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1681|回复: 0
打印 上一主题 下一主题
收起左侧

九齐单片机睡眠模式和按键唤醒程序

[复制链接]
跳转到指定楼层
楼主
ID:1125252 发表于 2024-6-19 19:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#define K1 PA1
#define LED1 PA2
unsigned char K1_num=0;
void main(void)
{
     DISI();
     AWUCON = 0X02; //开启IO唤醒功能
     TMR0=0;              //初始定时器寄存器   
     T0MD=0X01;      //时钟分频
      INTE=0x03;      //使能定时器0中断和IO口状态变化中断
      PCON=0X01;    //开启TIMER0
      ENI();            //开启总中断
      while(1)
     {
         CLRWDT();
         if(K1_num==0)
         {
              LED1=1;                                    // 睡眠模式不亮
              WDTEN=0;                                // 关闭看门狗   
              AWUCON = 0XA0;                     //1010 0000
              T0MD   = 0X01;                       
             PCON1  = 0X80;                          // 关闭定时器0中断
             INTE   = 0X02;                          // 打开io变化中断            while( K1 && IO_CHARGE_IN==0)
             {            
                  SLEEP();                           // 进入睡眠状态   
              }                          T0MD   = 0X01;
             PCON1  = 0X81;                        //开启总中断和定时器0中断
              INTE   = 0X01;                          // 关闭外部中断打开定时器0中断
              WDTEN=1;                              //打开看门狗
              CLRWDT();         }
         else
          {
               LED1=0;               //唤醒点亮LED
               delay(3000);         //延时
               K1_num=0;           //返回休眠模式
          }
     }
}



void isr(void) __interrupt(0)
{
     if(INTFbits.T0IF)
      {
        
           if(K1==0){K1_num=1;}
      }
}



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶2 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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