求助如何在PIC16F877A中使用睡眠和唤醒功能

2019-07-16 05:42发布

以下是我的主程序,应该在什么位置使用睡眠和唤醒,当K1和中断产生时可以唤醒
#include"pic.h"
#include"myfuncs.h"
#include"seg74.h"
#define  TMR0_RELOAD  (0-1)           //此处是脉冲次数宏定义
#define  k1  RB1
int   iData=0;        //定义数码管显示
void interrupt ISR(void)             //主程序函数,没有返回值空类型
{
  if(T0IE && T0IF)                   //每中断一次,说明记录了一次
  {
    T0IF=0;                          //清空标志,使CPU能正确响应下次中断
   TMR0=TMR0_RELOAD;                 //TMR0的值等于预设值,如果没有预设值就不能加数
   
        iData++;                  //当TMR0记录一次脉冲后两位数码管自动加一
     }
      
     }

void main(void)
{

  TRISB1=1;
  T0CS=1;                         //当T0CS等于选择的是外部RA4/T0CKI信号时钟
  PSA=1;                          //不用分频,预分频器给tiMER0用
  TMR0=TMR0_RELOAD;              //TMR0初始值  ,如果没有预设值就不能加数
  
  T0IF=0;                         //TIMER0中断标志为清空,没有溢出发生
  T0IE=1;                         //TIMER0允许中断发生
  GIE=1;                          //总中断打开
  

  
  SEG_BITSEL_PORT_DIR=0X00;       //D口和C口做输出用
  SEG_FONT_PORT_DIR=0X00;
  while(1)
  {
   
   if(k1==0)
     {
       iData=0;
     }
     else
          {
    DisplayData(iData); //主循环负责显示,
   
    }
  
   }
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。