首页资源分类编程语言其他 > PIC12F508例程

PIC12F508例程

已有 445019个资源

下载专区

上传者其他资源

文档信息举报收藏

标    签:PIC12F508单片机学习实例.

分    享:

文档简介

PIC 8脚单片机学习实例

文档预览

PIC12F508单片机学习三个实例,请批评指正。 已有 3480 次阅读2014-6-20 15:09 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=0xF5;//分频器给定时器 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=0xFE; //定时器分配看门狗 时间是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();     }

Top_arrow
回到顶部
EEWORLD下载中心所有资源均来自网友分享,如有侵权,请发送举报邮件到客服邮箱bbs_service@eeworld.com.cn 或通过站内短信息或QQ:273568022联系管理员 高员外,我们会尽快处理。