在好例子网,分享、交流、成长!
您当前所在位置:首页C/C++ 开发实例C/C++语言基础 → PIC16F887 基础实例

PIC16F887 基础实例

C/C++语言基础

下载此实例
  • 开发语言:C/C++
  • 实例大小:0.07M
  • 下载次数:7
  • 浏览次数:83
  • 发布时间:2022-02-17
  • 实例类别:C/C++语言基础
  • 发 布 人:LIAOLIAOGOGO
  • 文件格式:.zip
  • 所需积分:2
 相关标签: PIC16F PIC IC 基础 实例

实例介绍

【实例简介】PIC16F887 基础实例

【实例截图】

from clipboard

【核心代码】/*********************************************************************************************************
** Function name:           static void interrupt isr(void)
** Descriptions:            中断函数处理
** input parameters:        none
** output parameters:       none
** Returned value:          none
*********************************************************************************************************/
static void interrupt isr(void)
{    
    // 定时器1中断执行函数
    if(PIE1bits.TMR1IE & PIR1bits.TMR1IF)   // 判断是否满足定时中断
    {    
      PIR1bits.TMR1IF = 0;    // TMR1 寄存器溢出(必须由软件清零)   
      TMR1 = 0xf63c;         // 初值 = 65536 -(fose/4/分频值)*定时时间  预设定时为10ms
      if ( time_flag == 1) 
      { 
            time_count ;
           if(time_count>=100){time_count = 50;}
      }
      else {time_count = 0;}
   
     }
}
/*********************************************************************************************************
** Function name:           main
** Descriptions:            主函数
** input parameters:        none
** output parameters:       none
** Returned value:          none
*********************************************************************************************************/
void main (void)
{
// 时钟配置    
    OSCCONbits.IRCF = 0x06; // 默认4M主频(内部时钟)
    OSCCONbits.OSTS = 0x00; // 器件依靠内部振荡器 (HFINTOSC 或 LFINTOSC)运行
    OSCCONbits.SCS = 0x01;  // 内部振荡器用作系统时钟
    NOP(); 
    
 //看门狗配置  
    WDTCONbits.SWDTEN = 1;   // 使能看门狗
    WDTCONbits.WDTPS = 0x0B; // 65536/512 *17 =2.176S
    NOP(); 
    
 // 定时器1配置初始化   
    T1CONbits.T1CKPS0 = 0; // 10 = 1:4 预分频比
    T1CONbits.T1CKPS1 = 1;
    T1CONbits.TMR1CS = 0;  // 内部时钟源(FOSC/4)
    TMR1 = 0xf63c;         // 初值 = 65536 -(fose/4/分频值)*定时时间  预设定时为10ms  
    T1CONbits.TMR1ON = 1;  // 使能Timer1
    
    PIR1bits.TMR1IF = 0;   // TMR1 寄存器溢出(必须由软件清零)
    PIE1bits.TMR1IE =1;    // 允许Timer1 溢出中断
    NOP(); 
         
 // 全局中断使能
    INTCONbits.PEIE = 1;   // Enables all unmasked peripheral interrupts   
    INTCONbits.GIE = 1;    //  Enables all unmasked interrupts  
    NOP(); NOP(); NOP();    
       
 // 初始化PORTB端口  
     IOCB = 0x00;          // 初始化禁止PORTB 电平变化中断
     WPUB = 0x00;          // 初始化禁止PORTB 弱上拉
    TRISB = 0X00;          // PORTB 初始化为输出端口 (FET CONTROL) 
    PORTB = 0X00;          // 初始化PORTB,默认输出低电平   
   ANSELH = 0X00;          // 初始化成I/O 端口
   
 // 初始化PORTA端口
 //   TRISA = 0X00;
 //   PORTA = 0X00;
    TRISA0 =0x01; // 设置RA0 是输入
    ANSEL = 0x00; // 初始化成I/O口
    
     EN_OFF;
   time_count = 0x00;      // 初始化定时计数器 
   time_flag = 0;          // 按键按下计数器flag
   time_over = 0;          // 超时flag
    while(1)
    {
        CLRWDT();           // 复位看门狗
        if(RA0 == 0)        // 有按键按下
         {
              __delay_ms(25);
              time_flag = 1;    // 开始计数标识
              
              if(time_count>= 50) // 计数大于500ms 认为已经按下
              {                
                 if(time_over == 0) // 每次必须有松开才开启
                 {  
                   time_over = 1;
                    EN_ON;
                    __delay_ms(27);  
                  }                 
               }
              if( time_over == 1)EN_OFF; // 如果一直按着不开启
        }else {time_flag = 0;EN_OFF; time_over = 0;} // 无按键按下,关闭开关
          
    }
}


.
├── PIC16F887 基础实例
│   ├── Makefile
│   ├── User
│   │   ├── config.h
│   │   └── main.c
│   ├── build
│   │   └── default
│   │       └── production
│   │           └── User
│   │               ├── main.p1
│   │               ├── main.p1.d
│   │               └── main.pre
│   ├── code
│   ├── debug
│   │   └── default
│   ├── dist
│   │   └── default
│   │       └── production
│   │           ├── Burn_In_load.X.production.cmf
│   │           ├── Burn_In_load.X.production.elf
│   │           ├── Burn_In_load.X.production.hex
│   │           ├── Burn_In_load.X.production.hxl
│   │           ├── Burn_In_load.X.production.lst
│   │           ├── Burn_In_load.X.production.map
│   │           ├── Burn_In_load.X.production.mum
│   │           ├── Burn_In_load.X.production.obj
│   │           ├── Burn_In_load.X.production.rlf
│   │           ├── Burn_In_load.X.production.sdb
│   │           ├── Burn_In_load.X.production.sym
│   │           └── memoryfile.xml
│   └── nbproject
│       ├── Makefile-default.mk
│       ├── Makefile-genesis.properties
│       ├── Makefile-impl.mk
│       ├── Makefile-local-default.mk
│       ├── Makefile-variables.mk
│       ├── Package-default.bash
│       ├── configurations.xml
│       ├── private
│       │   ├── configurations.xml
│       │   └── private.xml
│       └── project.xml
└── 好例子网_PIC16F887 基础实例.zip

14 directories, 29 files


标签: PIC16F PIC IC 基础 实例

实例下载地址

PIC16F887 基础实例

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警