news 2026/10/15 21:03:41

PIC单片机入门实战(一):PIC16F1824/PIC12F1822,从振荡器与Timer1开始

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
PIC单片机入门实战(一):PIC16F1824/PIC12F1822,从振荡器与Timer1开始

作为一名使用PIC单片机近三十年的工程师,我最早从PIC16F87X系列起步,后来为了应对小型化、低成本的项目需求,又陆续使用了6脚、8脚、14脚等PIC单片机。

在众多PIC单片机中,PIC16F1824和PIC12F1822是我认为最适合入门的两个型号。

它们不仅易于上手,而且引脚兼容性极佳——PIC16F1824的1-4脚和11-14脚与PIC12F1822完全重合,这意味着在设计初期,你可以灵活替换,无需重新绘制电路板。

下图清晰展示了两款芯片的引脚对应关系

今天就以PIC16F1824为例,先从振荡器和定时器Timer1开始简单讲解

一、时钟系统:PIC的“心跳”配置

时钟是单片机运行的基础,PIC16F1824的振荡器模块支持8种模式,适应不同场景需求:

1. ECL——外部时钟低功耗模式

(0 MHz至0.5 MHz)

2. ECM——外部时钟中等功耗模式

(0.5 MHz至4 MHz)

3. ECH——外部时钟高功耗模式

(4 MHz至32 MHz)

4. LP——32 kHz低功耗晶振模式

5. XT——中等增益晶振或陶瓷谐振器模式

(最高4 MHz)

6. HS——高增益晶振或陶瓷谐振器模式

(4 MHz至20 MHz)

7. RC——外部阻容(RC)

8. INTOSC——内部振荡器(31 kHz至32 MHz)

配置方法:通过FOSC<2:0>(配置字1)选择时钟源。我个人最常用的是HS模式(外接晶振)和INTOSC模式(内部振荡器),后者无需外接元件,特别适合对成本敏感的小型项目。

下面以内部振荡器16MHz为例给出配置字和振荡器控制寄存器的赋值

#include<pic16f1824.h>

__CONFIG(0x083c); //选内部振荡器,配置位是2-0位,100是内部振荡器(最高32M),010是外部高速振荡器(最高20M)

void main()

{

OSCCON=0x78; //内部时钟16MHZ

//其他初始化

}

二、Timer1:16位定时器应用

Timer1是PIC中常用的16位定时器/计数器,可用于定时、计数或捕获功能。以下是一个完整的中断式定时示例,实现每0.5秒计数一次(16M主频),具体配置及程序如下:

#include<pic16f1824.h>

__CONFIG(0x083c);

unsigned int half_sec,time_2s;

//中断服务程序
voidinterruptisr(void){
if(TMR1IF){//判断是否为Timer1中断
TMR1L=0xBF;//重载定时初值(低位)
TMR1H=0xF9;//重载定时初值(高位)
half_sec++;
if(half_sec>1249){//累计0.5秒
time_2s++;//计数器+1
half_sec=0;
}
TMR1IF=0;//清除中断标志
}
}
voidmain(){
//初始化I/O
TRISA=0x1A;
TRISC=0x0C;
PORTA=0x00;
PORTC=0x03;
//外设功能选择
APFCON0=0x84;//设置RA0为TX,RA1为RX
//模拟输入关闭(除指定引脚)
ANSELA=0x10;
ANSELC=0x00;
PIE1=0x01;
INTCON=0x40;//使能外围中断
OSCCON=0x78;//内部时钟16MHz
//以下为Timer1配置
T1CON = 0x60;//预分频器设为1:4,Timer1关闭
TMR1IF = 0;
TMR1L = 0xBF;//定时初值
TMR1H = 0xF9;
TMR1IE = 1;//使能Timer1中断
T1CON |= 0x01;//启动Timer1
GIE=1;//全局中断使能
while(1){
//主循环,可加入其他任务
}
}
三、本系列文章规划

本文是《PIC单片机入门实战》系列的第一篇,后续将逐步展开以下内容,带你从零构建一个完整的嵌入式控制系统:

序号

主题

内容概要

1

振荡器与Timer1

时钟配置与定时中断

2

I/O输出控制

驱动2路继电器与4路LED

3

I/O按键输入

3路按键扫描与电平变化中断

4

UART通信

RS232/RS485数据交互

5

A/D转换应用

1路电位器电压读取

6

温度传感器采集

1路DS18B20输入

7

EEPROM存储

数据存储与读取

8

MODBUS-RTU集成

功能码01/03/05/06数据读写

《PIC单片机入门实战》这8片文章内容来源于我自己画的电路原理图及程序,有对PIC单片机感兴趣想学习的朋友可以关注我,免费赠送资料(包括原理图、数据手册、各种例程等)。

有需要这款开发板的朋友也可以关注联系我。

后续干货不断,咱们一起在单片机的世界里,共同进步。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/15 11:32:37

springboot_vue公司企业项目分配进度管理系统的设计与实现_60jjvqqg

目录摘要开发技术核心代码参考示例1.建立用户稀疏矩阵&#xff0c;用于用户相似度计算【相似度矩阵】2.计算目标用户与其他用户的相似度总结源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;摘要 该项目基于SpringBoot和Vue.js技术栈&am…

作者头像 李华
网站建设 2026/10/15 17:48:49

MT键槽加工动力刀座

MT键槽加工动力刀座直接在车床上加工键槽&#xff0c;无需借助其他专用设备MT的拉削工具&#xff0c;与其他技术相比&#xff0c;可以在一个非常短的时间内实现键槽加工&#xff0c;而不需要在两台设备上加工完成&#xff0c;所有的加工都在一台车床上&#xff0c;因此&#xf…

作者头像 李华
网站建设 2026/10/15 21:49:17

利用r2ai与LM Studio本地运行GPT-OSS模型进行恶意软件逆向分析

背景&#xff1a; radare2&#xff0c;昵称“r2”&#xff0c;是一个强大的开源反汇编器。r2ai 是一个为 r2 开发的开源插件&#xff0c;用于与人工智能进行交互。 场景&#xff1a;使用 r2 进行恶意软件分析。 免责声明&#xff1a;以下关于我个人偏好的模型和配置仅代表我的个…

作者头像 李华