PIC16F18877学习(一)

为什么要在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单片机内部采用哈佛结构
在这里插入图片描述

单片机PIC16F18877上通过LCD显示DS1302时间,首先你需要熟悉这两个模块的基本操作:DS1302是一个常用的实时时钟芯片,而LCD则是一种数码管显示器。以下是大致步骤: 1. **硬件连接**: - 连接DS1302到单片机,通常数据线连接到单片机的I/O口,如P2口,时钟线连接到单片机的另一个I/O口。 - 连接LCD,根据其数据、命令线和背光控制线配置相应IO口。 2. **软件配置**: - 配置DS1302: 设置起始地址、读取时间和设置工作模式等。这需要发送特定的命令到DS1302。 - 初始化LCD: 设置字符编码、对比度、亮度等,并确定行和列的偏移量。 3. **读取并显示时间**: - 使用DS1302的命令读取当前日期和时间。 - 将日期和时间转换成对应的ASCII字符,例如小时、分钟、秒数和日期。 - 分别将这些字符送到LCD的适当位置进行显示。 4. **定时更新显示**: - 如果需要实时显示,可以设置一个定时中断服务程序,定期读取DS1302的时间并刷新LCD。 下面是一个简化版的伪代码示例: ```c // 假设LCD初始化已经完成 void display_time() { // 从DS1302读取时间 uint8_t hour = read_from_DS1302(DS1302_HOUR); uint8_t minute = read_from_DS1302(DS1302_MINUTE); uint8_t second = read_from_DS1302(DS1302_SECOND); // 格式化为字符串 char time_str[6] = {hour / 10 + '0', hour % 10 + '0', minute / 10 + '0', minute % 10 + '0', ':', second / 10 + '0', second % 10 + '0'}; // 显示在LCD send_data_to_LCD(time_str); } void setup_timer() { // 设置定时器,每间隔一定时间调用display_time函数 } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

饼干饼干圆又圆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值