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

article/2025/10/24 11:12:36

源码基于  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;}

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


http://chatgpt.dhexx.cn/article/5vrvCrGJ.shtml

相关文章

PIC单片机入门教程(二)—— 安装集成开发环境(MPLAB X IDE)

PIC单片机入门教程(二)—— 安装集成开发环境(MPLAB X IDE) 教程中使用的电脑运行Windows 10 专业版 64位系统 1、下载 MPLAB X IDE v4.05 历史版本:http://www.microchip.com/development-tools/pic-and-dspic-downl…

PIC单片机-Mplab的使用与PIC单片机介绍

内容包括Mplab IDE与Mplab X IDE的使用,触摸功能实践,PIC单片机C与汇编混合编程,PIC单片机介绍等。紫色文字是超链接,点击自动跳转至相关博文。持续更新,原创不易! 目录: 一、Mplab IDE的使用…

PIC16F887 实战编程 单片机编程 基础实验教程

文章目录 2 PIC工程建立与仿真3 单片机基础寄存器操作:3.1 IO3.2 模拟输入电压读取3.3 外部中断3.4 定时器中断3.5 串口UART3.6 IIC通信 4 实际项目5 如何阅读代码6 如何把代码放到MPLAB V5.0xc8 v2.0上工作?6.1 短暂的回顾6.2 xc8 v2.0程序结构6.3 移植…

通俗易懂讲PIC单片机:从一窍不通到入门进步

单片机入门不难------谈PIC系列(转自矿石收音机论坛---崂山)十年前的老帖子,讲得通俗易懂,分享之。 请看图1 这个8条腿的小螃蟹就是我们的第一顿饭,只要把它吃下去,以后的大餐就好办了。第1、8条腿接电源 …

PIC单片机应用开发实践教程(五): 烧录器简介

源码基于 PIC16F15355开发板,想了解详情,请点 PIC16F15355开发板 ​​​​​​​ PIC单片机,无论是8位的10/12/16/18系列,还是16位PIC24/dsPIC33系列,常用的烧录器如下:PICkit3,PICkit4&#…

PIC单片机入门_C语言编程技术

1.为什么也是C语言? 用C 语言来开发单片机系统软件最大的好处是编写代码效率高、软件调试直观、维护升级方便、代码的重复利用率高等,因此C 语言编程在单片机系统设计中越来越广泛的运用。PIC 单片机的软件开发,同样可以用C 语言实现。 Micro…

PIC单片机与PIC单片机C语言编程简介

对于计算机学院与电子学院相关的同学来说,单片机一定不是一个陌生的概念。在大学的学习生涯中,经常用于教学的是MCS-51系列单片机。其实,除了MCS-51单片机外,还有一类单片机——PIC单片机。 PIC单片机,英文名为Periphe…

PIC单片机应用开发实践教程(三): MCU配置位与烧录

1 编译 工程建好并把相应的 .c和.h文件都加载到工程后,如下图 试试编译,如果没有语法错误,编译结果如下 到这里,是不是可以进行烧录了呢?不急,还有很重要的一个步骤,MCU配置位的设置&#xff0…

PIC单片机应用开发实践教程(一):MPLAB X IDE 开发环境安装

源码基于 PIC16F15355开发板,想了解详情,请点 PIC16F15355开发板 1 准备电脑一台 2 下载开发环境 MPLAB-X-IDE 点Download后,自动下载。 3 下载C编译器(以8位MCU用的xc8编译器为例) MPLAB XC8 Compiler 4 安装MP…

PIC单片机入门教程(一)—— 准备工作

PIC单片机入门教程(一)—— 准备工作 1、电脑一台(推荐运行Windows 7 旗舰版 64位系统) 2、选择合适的烧录/调试工具 2.1 “Device Support.html”文件列举了所有器件能支持哪些烧录/调试工具,文件官方版本说明包里 下…

PIC单片机入门教程(三)—— 安装编译器(MPLAB XC Compilers)

PIC单片机入门教程(三)—— 安装编译器(MPLAB XC Compilers) 1、下载编译器(MPLAB XC Compilers) XC8、XC16和XC32对应8位、16位和32位PIC单片机,按实际使用的单片机选择下载最新版本即可。 截…

PIC单片机入门教程(四)—— 第一个工程

PIC单片机入门教程(四)—— 第一个工程 1、新建工程 1.1 菜单栏“文件”->“新建项目” 1.2 “Microchip嵌入式”->“独立项目”->“下一步” 1.3 在器件栏直接输入你的单片机型号,这里以PIC12F675为例。输入“PIC12F675”->“下…

PIC单片机入门_指令系统

1.前文回顾 前面学习了PIC单片机的系统框架,也介绍了程序存储器、数据存储器的组织形式。这里需要补充一点的就是寻址方式,之前仅仅提到了立即数寻址、直接寻址。其实还有几个比较重要的寻址方式,PC相对寻址&间接寻址! 1.1 PC…

Demand management

需求管理(Demand Management)用于连接计划需求,销售需求和物料计划(MPS和MRP)。

Data Quality Services

Data Quality Services 简介 SQL Server 2012 其他版本 使用 Data Quality Services (DQS) 提供的数据质量解决方案,数据专员或 IT 专业人员可以维护数据的质量并确保数据满足业务使用的要求。 DQS 是一种知识驱动型解决方案,该解决方案通过计算机辅助方…

MySql: In aggregated query without GROUP BY...;this is incompatible with sql_mode=only_full_group_by

错误原因 这是MySql5.7以上的版本特性导致的。 解决方案 执行下面这段代码 SET sql_mode(SELECT REPLACE(sql_mode,ONLY_FULL_GROUP_BY,));运行一下然后就可以了,完。

Terms-level Query之Exists Query

​Exists Query属于Term-level Query查询, 查询某字段值不为空的文档。脑图如下: 内容说明: 本文内容同微信公众号【凡登】,关注不迷路,欢迎加入一起共同学习。原文链接:Terms-level Query之Exists Query 目录 一、语法&#xf…

Android Query managedQuery

今天说一下以下两种方式query数据: Java代码 Cursor c1 mContext.getContentResolver().query(uri, projection, selection, selectionArgs, sortOrder); Cursor c2 mActivity.managedQuery(uri, projection, selection, sortOrder); 使用方法一&#xf…

Android开发managedQuery方法过时如何解决

今天在获取手机相册照片的时候用到了managedQuery,然后发现managedQuery过时了,如下图所示: 于是就百度了一下解决办法,其实也挺简单的。用getContentResolver().query()来代替managerQuery(),参数什么的都一样。 如上…

括号匹配的检验

[TO在这/.按“3.2.2 括号匹配的检验”中的思路&#xff0c;写一个函数“bool check(char* line)” //检查输入的字符串line中的括号是否匹配&#xff0c;不匹配则check函数返回false&#xff0c;否则返回true #include <stdio.h> #include <stdlib.h> #include &l…