⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 单片机c语言程序设计100例--基于PIC+PROTEUS
💻 C
字号:
//-----------------------------------------------------------------
//  名称: 睡眠模式及看门狗应用测试
//-----------------------------------------------------------------
//  说明: 系统启动时即进入睡眠,LED1点亮,按下S1时唤醒,LED1熄灭,
//        LED2开始闪烁,看门狗溢出时间为2304ms,定时器TMR1每隔1500ms喂狗
//        如果按下S1则停止喂狗,引起系统复位.
//        由于TIMER1中断用于喂狗,且在睡眠之前启用了TIMER1中断,即使
//        不按下S1,当前TIMER1的溢出中断发生时同样会唤醒.
//
//-----------------------------------------------------------------
#include <pic.h>
__CONFIG(WDTEN & XT & UNPROTECT);  //启用看门狗
#define INT8U   unsigned char
#define INT16U  unsigned int
#define _XTAL_FREQ 4000000UL       //4MHz
//按键定义
#define KEY_DN()     !RD0          //停止喂狗
//分别定义LED1开/关,LED闪烁
#define LED1_ON()     RB3 = 1
#define LED1_OFF()    RB3 = 0
#define LED2_OFF()    RB6 = 0
#define LED2_BLINK()  RB6 = ~RB6
//------------------------------------------------------------------
// 主程序
//------------------------------------------------------------------
void main() 
{ 
    TRISB0 = 1; RBPU = 0;                   //RB0按键输入,RB端口内部上拉
    TRISB3 = TRISB6 = 0;                    //LED1,LED2输出引脚
    TRISD0 = 1;                             //停止喂狗按键输入引脚
    LED1_ON(); LED2_OFF();                  //初始时LED1点亮,LED2关闭   









} 

//-----------------------------------------------------------------
// RB0/INT中断服务程序唤醒主程序继续运行,定时器1中断程序负责喂狗
//-----------------------------------------------------------------
void interrupt TMR1_AND_RB0_INT_ISR()
{
    static INT8U T0_Count = 0, T1_Count = 0; //用于延时累加的变量
    if (INTF) INTF = 0;                      //按键触发RB0/INT中断(手动唤醒)
    if (TMR1IF)                              //TIMER1每隔1500ms喂狗
    {  




    }
    if (T0IF)                                //TIMER0溢出中断控制LED2正常闪烁
    {





    } 
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -