以下是我的主程序,应该在什么位置使用睡眠和唤醒,当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); //主循环负责显示,
}
}
}
一周热门 更多>