PIC 16F18系列单片机开发 IO口配置与stm32的区别

简介: PIC 16F18系列单片机开发 IO口配置与stm32的区别

前言

由于在之前学习嵌入式IDE时候都是直接接触到的是STM32 ARM内核的32位看偏激,现在开发使用的是美国微芯公司推出的PIC系列的单片机,这对于有经验的工程师而言已经没有什么,但是对于我这个刚开始出来参加工作的,对于不同的单片机之间的配置方式的不同,还是觉得有必要记录下来的,这对于自己的学习以及以后后面的开发都会有所帮助,毕竟工作经验都是要积累起来的嘛!

PIC单片机配置字

  在PIC系列的单片机当中,其中的内部大豆油设置一个特殊的程序存储单元,地址为2007,由单片机的用户自由配置,用来定义一些单片机功能电路单元的性能选项,我们就会将这一些单元叫做器件配置字(Configuration Bits)。

PIC单片机在烧写必须配置字,配置字还必须要正确,如PIC单片机有四种可选振荡方式,RC、XT、HS、LP,这样你就必须根据你的设计电路图选择方式,选择好配置字,芯片才能工作,配置字选的不对,芯片就不能正常工作。

用途:


上图是PIC16F877配置字的情形,对配置字的各位的解释是:


CP1-CP0:代码保护位,说明如下:


11 = 代码保护关;


10 = 参见器件数据手册;


01 = 参见器件数据手册;


00 = 所有存储器均受代码保护。


注:有些器件使用较多或较少的位数来配置代码保护。目前就一些只使用一位(CP0) 的器件,保护位的说明如下:


1 = 代码保护关;


0 = 代码保护开。


DP:数据EEPROM 存储器的代码保护位,说明如下:


1 = 代码保护关;


0 = 数据EEPROM 存储器受代码保护。


注:对于具有数据EEPROM 存储器的ROM 程序存储器器件,使用该位。BODEN:欠压复位(BOR) 使能位,说明如下:


1 = BOR 使能;


0 = BOR 禁止。


PWRTE:上电定时器(PWRT) 使能位,说明如下:


1 = PWRT 禁止;


0 = PWRT 使能。


注1:无论PWRTE 位的值为何,使能欠压复位即自动使能了上电定时器(PWRT)。请确保使能欠压复位时,也使能了上电定时器。


注2:在一些早期的PICmicro? 单片机中,该位的极性被保留。


MCLRE:MCLR 引脚功能选择位,说明如下:


1 = 引脚功能为MCLR;


0 = 引脚功能为数字I/O,MCLR 在内部连接到VDD 上。


WDTE:看门狗定时器(WDT) 使能位,说明如下:


1 = WDT 使能;


0 = WDT 禁止。

电路需要IO口来发挥作用

我们知道,一个单片机只要有最小的系统,单片机就可以工作了,然而我们回到单片机发挥作用的话,还得考引脚。比如想要LED灯亮起来,那么我们就要将二极管进行导通,就比如要将副段设为低电位,让二极管亮起来,就需要在正端加上高电平,这样LED灯才会亮起来。所以我们可以通过某个引脚控制输出电平的高低,从而来控制led灯的亮灭。高位亮,低为灭。

寄存器和特殊功能寄存器

我们可以看下图:PIC16F18344芯片:


上面这个部分叫做特殊功能寄存器,他们有特定的用途,像PORTA、TRISA就是用来配置IO口端口的,像TCON等等这一类的寄存器是用来与定时器有关的。旁边的这个16进制数就是寄存器的地址。

I/O口

什么是io口,这个就是单片机而言最为核心的东西,其实单片机当中矗了模数、数模转换之外,其他大部分的事情都是可以使用IO口来完成。单片机在大部分应用当中做的事情,莫过于输入高低电平,输出高低电平,就是通过这一些简单的控制电平来实现大多数的应用控制。


I代表了输入,O代表了输出;那么IO具体能做什么呢?IO口输出一个高低电平可以点亮一个LED灯,可以接通一个继电器来启动电机等等,也可以用于通信等等,输入一个高低电平可以用来检测按键,也可以用来检测红外线输入,检测信号等等。

I/O口和单片机内部寄存器之间的对应关系

我们可以从相关的文档、开发手册来看到这一些端口都有用于控制器操作的10个校准的寄存器,他们分别是:

三个标准的工作寄存器:


• PORTx寄存器(读取器件引脚的电平)


• LATx寄存器(输出锁存器)


• TRISx寄存器(数据方向)


还有一些端口


• ANSELx寄存器(模拟选择)


• WPUx寄存器(弱上拉)


• INLVLx(输入电平控制)


• SLRCONx寄存器(压摆率)


• ODCONx寄存器(漏极开路 )


所以我们要进行配置的时候:


1、先配置ANSELx,将IO口定义为摸你还是数字;


2、在进行配置TRISx,将这个IO口定义为输入还是输出;


3.如果定义IO是输入,要得到IO端口的实际电平,那么就要读取PORTx寄存器;如果定义的是IO输出,那么就要通过写LAIx来达到IO口置高还是置低电平操作。


但是要注意的是,如果直接写PORTx,实际上会写到LATx当中,所以一般不会写入PORTx寄存器。如果是直接读取LATx寄存器,读取到的是锁存在GPIOLatch里面的值,而不是真正的端口的值,所以一般也不会读取LATX寄存器。


当某个引脚配置成m模拟IO的时候,必须将其相应的TRISx配置成输入,这才才能读取到引脚上面的外部电压。


相关文章
|
27天前
|
算法 物联网 芯片
基于STM32和51单片机的8位全彩流水灯程序模板
基于STM32和51单片机的8位全彩流水灯程序模板
|
3月前
|
传感器 数据采集 人工智能
基于STM32单片机的智能晾衣架设计与实现【开源免费】
随着智能家居的发展,传统晾衣架已经难以满足现代家庭对便捷、智能化的需求。基于STM32单片机的智能晾衣架能够实现自动升降、光照检测、风干控制、远程控制等功能,为家庭用户提供更智能、更舒适的晾晒体验。本项目以STM32F103C8T6为核心控制器,通过电机驱动模块、光照传感器、温湿度传感器、蓝牙/Wi-Fi通信模块,实现晾衣架的自动化与远程控制。
基于STM32单片机的智能晾衣架设计与实现【开源免费】
|
5月前
|
传感器 数据采集 算法
基于STM32 上开发的BMS系统
基于STM32 上开发的BMS系统
381 14
|
9月前
|
人工智能 自然语言处理 测试技术
嵌入式开发者的灵魂拷问:通义灵码2.0能否Hold住51单片机竞赛级开发?
通义灵码2.0嵌入式开发专项评测,基于蓝桥杯第十二届单片机赛题(NE555频率检测),验证多文件代码生成及单元测试智能体能力。评测结果显示,AI在基础场景中具备实用性,但存在硬件抽象层缺陷和图像识别局限。原始得分58.1/70,主要问题为LED状态异常。完整代码已开源。
275 3
stm32f407探索者开发板(十七)——串口寄存器库函数配置方法
stm32f407探索者开发板(十七)——串口寄存器库函数配置方法
1721 0
|
11月前
|
SQL
南大通用GBase 8a配置gcware日志等级,减少日志输出,节省磁盘IO
南大通用GBase 8a配置gcware日志等级,减少日志输出,节省磁盘IO
|
传感器 监控 JavaScript
千套单片机\stm32毕设课设题目及资料案列-干货分享
为帮助电子工程领域的学习者顺利毕业或掌握更多专业知识,我们精心整理了一系列单片机和STM32相关的题目及资料案例。这些资源覆盖了从毕业设计到课程设计的各个方面,包括但不限于智能小车、温度控制系统、无线通信、智能家居等多个领域。每项设计都配有详细的原理图、仿真图以及完整的文档资料,旨在帮助学生深入理解理论知识的同时,提高实际动手操作能力。无论是初学者还是有一定基础的学生,都能从中找到适合自己的项目进行实践探索。
2723 8
|
数据采集 Java 数据挖掘
Java IO异常处理:在Web爬虫开发中的实践
Java IO异常处理:在Web爬虫开发中的实践
【寄存器开发速成】半小时入门STM32寄存器开发(二)
【寄存器开发速成】半小时入门STM32寄存器开发(二)
244 0