pic12f1823单片机入门_PIC12F508单片机学习之三—按键唤醒

PIC12F508单片机是没有中断的,按键中断只能是查询方式。

编译器用的XC8,编译环境IDE用的是MPLAB X IDE。

下载器是PICKIT3.

//***************************************************

//           __________________

//       VDD-| 1            8 |-VSS

//       GP5-| 2           27 |-GP0/DAT

//       GP4-| 3           26 |-GP1/CLK

//GP3/RMCLR--| 4           25 |-GP2

//           |________________|

//               12F508

//***************************************************

//看门狗 休眠唤醒

//按键唤醒

#include

#include

// #pragma config statements should precede project file includes.

// Use project enums instead of #define for ON and OFF.

// CONFIG

#pragma config OSC = IntRC      // Oscillator Selection bits (internal RC oscillator)

#pragma config WDT = ON        // Watchdog Timer Enable bit (WDT Enable )

#pragma config CP = OFF         // Code Protection bit (Code protection off)

#pragma config MCLRE = OFF      // GP3/MCLR Pin Function Select bit (GP3/MCLR pin function is digital input, MCLR internally tied to VDD)

#define uchar unsigned char

#define uint unsigned int

#define LED1 GP5

#define LED2 GP4

#define KEY  GP3

bit   KEY_F;

uchar  count;

//uchar  GP3_F;

void Init()

{

TRIS=~0x3F;  //GP3输入,其它输出

// OPTION=0x07; //这个寄存器上电复位均为1

//  OPTION=nGPWU|nGPPU|PSA|PS1|PS2; //引脚中断唤醒禁止 弱上拉禁止 定时器分配看门狗时间是18Ms*64=1.152S

OPTION=0x1E; // 引脚中断唤醒使能 弱上拉使能  定时器分配看门狗时间是18Ms*64=1.152S

// TMR0=0x63;   //10ms

}

void  main()

{

Init();

while(1)

{

if((GPWUF==1)&&(KEY==0))   //引脚引起的中断唤醒

{

LED2=~LED2;

}

if(nTO==0)      //看门狗引起的复位

{

LED1=~LED1;

}

KEY_F=KEY;   //读出休眠前的按键状态。

SLEEP();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值