您的当前位置:首页正文

PIC12F508单片机学习l例程

2020-09-17 来源:步旅网


PIC12F508单片机学习之一——定时器

PIC12F508单片机是没有中断的,定时器只能是查询方式。

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

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

// __________________

// 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 = OFF // Watchdog Timer Enable bit (WDT disabled)

#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

uchar count;

//uchar GP3_F;

void Init()

{

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

OPTION=0xC5;//分频器给定时器 64 4MHz x=257-tJ/4F

TMR0=0x63; //10ms x=257-tJ/4F

}

void main()

{

Init();

while(1)

if(TMR0==0xFF)

{

TMR0=0x63; //

if(++count==50)//1s

{

count=0;

GP2=~GP2;//LED闪烁

}

}

}

}

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

uchar count;

//uchar GP3_F;

void Init()

{

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

OPTION=0xCE; //定时器分配看门狗 时间是18Ms*64=1.152S

}

void main()

{

Init();

while(1)

{

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

{

GP2=~GP2;

}

SLEEP();

}

}

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();

}

因篇幅问题不能全部显示,请点此查看更多更全内容