3626|1

23

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

PIC12F508单片机学习三个实例,请批评指正。 [复制链接]

本帖最后由 hujuan 于 2014-6-21 10:47 编辑


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

最新回复

学习了,学习了  详情 回复 发表于 2014-6-22 16:12
点赞 关注
 

回复
举报

3

帖子

2

TA的资源

一粒金砂(初级)

沙发
 
学习了,学习了
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表