为什么要在PIC控制器中使用#pragma configs
- 这些设置位于程序代码之外的闪存中。 PIC一通电,它们就可用了,无论它们写在代码的哪个位置。这很重要,因为有时在执行程序之前需要它们。
- 例如,有一些设置可以选择时钟源,并将其转换为PIC的实际时钟。这不能在程序代码中完成,因为必须正确配置时钟才能运行代码。
- 另一个例子是代码保护设置,如果启用此功能,则无法用编程器读取PIC的程序存储器,这会阻止其他人复制程序内存并对代码进行反向工程。这不能程序代码实现,因为在任何程序代码执行之前,都可以将PIC设置为编程模式,从而绕过任何启用代码保护的功能。因此这种方式非常重要,因为它们允许在代码执行之前设置配置。
- 在代码执行之前,不需要设置完所有设置,有些只是方便。例如,可以在启动时将引脚设置为数字I/O或模拟输入,这些也可以在程序代码中完成。
- #pragma是编译器指令,编译器指令是编译器首先处理的一些事情。
#pragma config FNOSC = PRIPLL //选择主振荡器作为时钟源,PLL将用于进一步转换时钟,也可以选择不适用PLL或另一个源,如次级振荡器、内部振荡器等。
#pragma config POSCMOD = HS //选择连接到主振荡器引脚的内容。//可以连接振荡器模块(EC)的干净信号,或者连接低于4MHz(XT)或高于4MHz(HS)的晶体谐振器。注意,谐振器需要一些额外的电路,这是由该设置提供(和选择)的。
#pragma config FPLLIDIV = DIV_2
#pragma config FPLLMUL = MUL_18 //当有了初始时钟后,通常希望PIC以不同频率运行。PLL允许将时钟频率乘以某个因子,但它只接收有限的输入频率(例如4-5HMz),因此将频率传递到PLL之前,将频率除以2(得到8-10MHz),并让PLL将频率乘以18得到(4MHz*18=72MHz)
#pragma config FPLLODIV = DIV_1
pragma config语句应位于项目文件include之前
PIC16F18877微控制器
- 具有模拟,核心独立外设和通信外设,结合极低功耗(CLP)技术,适用于广泛的通用用途和低功耗应用。
- 该系列将具有CRC/SCAN,硬件限制定时器(HLT)和窗口看门狗定时器(WWDT),来支持希望为其它应用程序增加安全性的客户。
- 包括56KB的闪存,以及一个10位ADC计算(ADC2)扩展,用于自动信号分析,以降低应用程序的复杂性。
核心功能
- C编译器优化的RISC架构
- 只有49条指令
- 工作速度:DC——32MHz时钟输入,最小指令周期为125ns
- 中断功能
- 16级深度硬件堆栈
- 三个8位定时器(TMR2/4/6)与硬件限制定时器(HLT)扩展
- 4个16位定时器(TMR0/1/3/5)
- 小电流开机复位(POR:Power-on Reset)
- 可配置的上电定时器(PWRTE)
- 具有快速恢复功能的断电复位
- 低功率BOR选项
- 窗口看门狗定时器(WWDT):可变预分频选择、可变窗口大小选择、所有源均可在硬件或软件中配置
- 可编程代码保护
内存
- 高达56KB的闪存程序内存
- 高达4KB的动态SRAM
- 256B的EEPROM
- 直接、间接或相对地址寻址
操作特征
- 工作电压范围:2.3V到5.5V
- 温度范围:工业40~85℃,扩展40到125℃。
节电功能
- DOZE模式:在CPU内核运行速度比系统时钟慢
- IDLE模式:当内部外设继续运行时,能够暂停CPU核心
- 休眠模式:最低功耗
- 外围模块禁用(PMD):能够禁用硬件模块,以尽量减少未使用的外围设备的功耗。
极低功耗(XLP)特性
- 睡眠模式:50nA@1.8V,典型
- 看门狗:500 nA @ 1.8V, typical
- 二级振荡器:500 nA @ 32 kHz
数码外设
- 四种可配置逻辑单元(CLC):集成组合和顺序逻辑
- 三种互补波形发生器(CWG):上升和下降边缘死区控制;全桥,半桥,1通道驱动;多信号源
PIC16F18877数据表,28/40引脚,全功能8位控制器
PIC单片机内部采用哈佛结构