源码基于  PIC16F15355开发板,想了解详情,请点 PIC16F15355开发板

PIC16F15355 内部晶振框图如下,从框图中我们知道MCU时钟来源有3个:外部时钟,内部时钟,Timer1

内部时钟源(INTERNAL CLOCK SOURCES)HFINTOSC:内部高速时钟,最大32MHz。
MFINTOSC:内部中速时钟,500 kHz频率
LFINTOSC:内部低速时钟,只有31 kHz频率

下面我们以内部时钟为例,时钟最高可以跑到32MHz,可以通过OSCFRQ 1MHz,2MHz,4MHz,8MHz,12MHz,16MHz,32MHz,那程序如何来切换呢?

时钟源的选择

通过OSCCON1寄存器,选择系统所需的时钟源

NOSC 选择时钟源,000---111 有8种模式;NDIV 设置时钟分频比,如果分频值为1,那PIC16F15355 最大频率就可以跑到32MHz,最后通过OSCFRQ来选择内部时钟频率

OSCCON1 = 0x60;     // NOSC HFINTOSC; NDIV 1;
OSCCON3 = 0x00;     // CSWHOLD may proceed; SOSCPWR Low power;
OSCEN = 0x00;       // MFOEN disabled; LFOEN disabled; ADOEN disabled; SOSCEN disabled; EXTOEN disabled; HFOEN disabled;
OSCFRQ = 0x06;      // HFFRQ 32_MHz;
OSCSTAT = 0x00;     // MFOR not ready;
OSCTUNE = 0x00;     // HFTUN 0; 

那如何实现时钟切换呢?其实,也是通过设置OSCFRQ的值设置,但有一个注意点就是,切换时钟后,要等待时钟切换完成。

//等待时钟切换成功,要不然还是以原时钟运行
while(OSCSTATbits.HFOR != 0x01);    //HFINTOSC Oscillator Ready bit

 OSCCON1bits.NDIV = 0x00;     //Clock divider 1:1OSCCON1bits.NOSC = 0x60;     //复位时钟1MHzOSCFRQbits.HFFRQ = clock_freq;    switch(clock_freq){case OSC_1M_HF:case OSC_2M_HF:case OSC_4M_HF:case OSC_8M_HF:case OSC_16M_HF:   case OSC_32M_HF: //等待时钟切换成功,要不然还是以原时钟运行while(OSCSTATbits.HFOR != 0x01);    //HFINTOSC Oscillator Ready bit break;default:break;}

好了,本章节就到这里,谢谢大家的关注。

PIC单片机应用开发实践教程(七):PIC16F153xx——时钟使用相关推荐

  1. PIC单片机应用开发实践教程(六): 代码配置器(MCC)

    源码基于  PIC16F15355开发板,想了解详情,请点 PIC16F15355开发板  1.简介 MPLAB 代码配置器(MPLAB Code Configurator,MCC)通过图形用户界面( ...

  2. 20189200余超 2018-2019-2 移动平台应用开发实践第七周作业

    20189200余超 2018-2019-2 移动平台应用开发实践第七周作业 布局 在这一节中首先学习了java的页面布局,在此基础之上来进行了编程. 图片如下: 代码如下: *** 使用代码进行登录 ...

  3. 做游戏,学编程(C语言)教材《C语言课程设计与游戏开发实践教程》出版了...

    经过半年多的写作.修改.校样.印制,我们的实践教材<C语言课程设计与游戏开发实践教程>终于出版了.这本书可以看成是"做游戏,学编程(C语言)专栏"的详细版本,以下为书中 ...

  4. python web开发项目 源码_Python + Flask 项目开发实践系列七

    对于 Python + Flask 这种灵活的web开发框架,在前面的六个系列文章中详细的进行了说明,主要讲到了页面的首页加载时的页面渲染,增加功能,删除功能,修改功能,查询功能,查询详情功能等一些页 ...

  5. 51单片机c语言实践教程,51单片机C语言实验与实践教程.pdf

    第一章 AT89S51 单片机实验及实践系统板简介 AT89S51单片机实验及实践系统板(以后简介系统板)集成多个硬件资源模块,每个模块各自可以成 为独立的单元,也可以相互组合,因此,可以为不同阶层的 ...

  6. python开发实践教程_Python开发实践教程

    前言第一章 通过求三角形面积步入Python程序世界 案例1-1 求三角形面积 导读 知识梳理与扩展 小结 练习一第二章 常用运算.使用自定义函数 案例2-1 用函数的方法计算三角形面积 导读 案例2 ...

  7. python开发实践教程 于京_《Python开发实践教程》于京、宋伟 著著【摘要 书评 在线阅读】-苏宁易购图书...

    前言 第一章 通过求三角形面积步入Python程序世界 案例1-1 求三角形面积 导读 知识梳理与扩展 小结 练习一 第二章 常用运算.使用自定义函数 案例2-1 用函数的方法计算三角形面积 导读 案 ...

  8. STM32应用开发实践教程:基于 CAN 总线的多机通信应用开发

    5.2.1 任务分析 本任务要求设计一个基于 CAN 总线的多机通信系统,该系统须具备交互多种类型数据(如 环境温度.环境湿度和光照强度等)的能力. 发送单元对待发数据进行编码,组建 CAN 数据帧, ...

  9. STM32应用开发实践教程:智能小车电机调速模块的应用开发

    3.3.1 任务分析 本任务要求设计一个可实现智能小车电机调速的应用程序,具体要点说明如下. ① 电机驱动部分选用德州仪器(Texas Instruments,TI)公司的 DRV8848 芯片(也可 ...

最新文章

  1. json数据交互与@RequestBody
  2. ASP.NET Core 6 Minimal API
  3. Lines(HDU-5124)
  4. html静态网页模板cs4,Adobe Dreamweaver CS4 精简版
  5. win10 Java JDK环境变量配置
  6. 【java】log4j2核弹级漏洞原理和分析
  7. win10 linux开发环境搭建,win10子系统linux.ubuntu开发环境搭建
  8. Castle ActiveRecord学习笔记四:各种映射
  9. 从运维和SRE角度看监控分析平台建设
  10. 10月21日Ajax培训日记
  11. intel 傲腾内存与SSD HDD的对比
  12. 【计算机考研408强化-操作系统】1. 操作系统的基本概念
  13. SSS1700设计方案|SSS1700中文说明书
  14. 推荐模型-序列推荐-2018:SHAN
  15. 零售行业新渠道,效率居然这么高?
  16. u盘重装系统详细教程
  17. SN74HC165驱动
  18. ijkplayer 录像 截图功能,支持rtsp rtmp http 流媒体
  19. PRN(20210426):Online Continual Learning with Maximally Interfered Retrieval
  20. Python3的基本数据类型

热门文章

  1. 年后玩玩php,顺便发发牢骚
  2. 数影周报:美联邦机构被曝数据泄露丑闻,嘀嗒狗完成数千万元融资
  3. list和dic区别
  4. 腾讯云与联想达成战略合作,共建智慧云生态
  5. 正则数字、字母、字符密码组合校验
  6. css中为伪元素增加点击事件和hover
  7. Linux下mysql操作命令大全
  8. Spring MVC学习指南(11-12章总结)
  9. linux TCP连接失败(不回复SYN,ACK)问题分析
  10. python emit_PyQT5 emit 和 connect的用法详解