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

news2024/11/28 0:38:44

目录

前言

PIC单片机配置字

电路需要IO口来发挥作用

寄存器和特殊功能寄存器

I/O口

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


前言

由于在之前学习嵌入式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配置成输入,这才才能读取到引脚上面的外部电压。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/85700.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【云原生】kubeadm部署k8s集群

内容预知 架构说明 1.环境准备 2.所有节点安装docker 3. 所有节点安装kubeadm,kubelet和kubectl 4. 部署 Dashboard 5. 安装 部署与k8s集群对接的Harbor仓库 内核参数优化方案 架构说明 前面的文章中,我们采用了二进制包搭建出的k8s集群&#xff…

[附源码]计算机毕业设计动漫电影网站Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: Springboot mybatis MavenVue等等组成,B/S模式…

电子采购软件如何提高企业效率?

企业采购致力于提高生产力和效率,并实现更高的职能和跨职能支出的可见性。电子采购软件解决方案帮助企业实现其目标并做得更多,因此成为了具有前瞻性的采购领导人的明智选择。 以下是使用电子采购软件的四个主要优势:1、降低成本 降低成本是电…

python包管理pip常见操作

一、pip安装 暂略 二、pip常用命令 1、显示版本和路径 pip --version 2、获取帮助 pip --help 3.升级 pip pip install -U pip 4.安装资源包 pip install SomePackage # 最新版本 pip install SomePackage1.0.4 # 指定版本 pip install SomePackage&g…

微服务框架 SpringCloud微服务架构 分布式事务 38 动手实践 38.8 案例实现TCC 模式【实现】

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 分布式事务 文章目录微服务框架分布式事务38 动手实践38.8 案例实现TCC 模式【实现】38.8.1 声明TCC 接口38 动手实践 38.8 案例实现TCC 模…

第34篇 网络(四)FTP(二)

导语 前面讲述了一个最简单的FTP客户端程序的编写,这一节我们将这个程序进行扩展,使其可以浏览并能下载服务器上的所有文件。 环境:Windows Xp Qt 4.8.5QtCreator 2.8.0 目录 一、修改界面二、功能实现 正文 一、修改界面 我们删除了T…

当vivo领先后,该学着“快”起来了

文|智能相对论 作者|佘凯文 随着一个个大热球队的爆冷,今年世界杯赛事正在渐入高潮。就目前的形势来看,世界杯最大的悬念在于究竟是“老王”圆梦,还是“新王”登基,又或者是摩洛哥这只黑马一黑到底。 新老球星的更迭&#xff0…

Selenium浏览器自动化测试框架

selenium简介 介绍 Selenium [1] 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google C…

设计模式概述(一)

很多小伙伴,不知道设计模式是什么? 通常我们所说的设计模式是一种设计方案,是前人留下的经验及最佳实践。 想要学习设计模式,至少要把面向对象的基本结构全部了解。 设计模式,是建立在一定基础上的思维训练。 学习设…

macos12.6安装配置opencv4.6.0+opencv contrib4.6.0

1.系统准备好,安装依赖python版本高一点的,并且安装上numpy。 brew install cmake gui及cmake,可能装cmake gui的时候有点问题,先装gui再装cmake。 2.提前下载源码,Releases - OpenCV要求opencv与opencv contrib版本一…

Metal每日分享,UV去雾滤镜效果

本案例的目的是理解如何用Metal实现去雾效果滤镜,类似于UV过滤器; Demo HarbethDemo地址 实操代码 // 去雾效果滤镜 let filter C7Haze.init(distance: 0.5, slope: 0.5)// 方案1: ImageView.image try? BoxxIO(element: originImage, filters: [f…

MyBatis ---- MyBatis的逆向工程

MyBatis ---- MyBatis的逆向工程1. 创建逆向工程的步骤a>添加依赖和插件b>创建MyBatis的核心配置文件c>创建逆向工程的配置文件d>执行MBG插件的generate目标2. QBC查询正向工程:先创建 Java 实体类,由框架负责根据实体类生成数据库表。Hiber…

Spring源码深度解析:十五、@Aspect方式的AOP中篇 - getAdvicesAndAdvisorsForBean

一、前言 文章目录:Spring源码深度解析:文章目录 在上篇中我们概述了Aop 实现的逻辑,但是由于篇幅原因,我们将一部分内容拆成了中篇和下篇内容。本篇即中篇,内容主要是讲述 在 Bean创建过程中Aop 挑选适用于当前Bean…

尚医通-MyBatistPlus:修改和自动填充-乐观锁(三)

目录: (1)MyBatistPlus:修改和自动填充 (2)MyBatis-Plus-乐观锁 (1)MyBatistPlus:修改和自动填充 1、更新操作 注意:update时生成的sql自动是动态sql&…

14 - 局部段描述符表

---- 整理自狄泰软件唐佐林老师课程 文章目录1. 什么是局部段描述符表(LDT)1.1 局部段描述符选择子1.2 局部段描述符表LDT1.3 问题1.4 LDT的定义和使用2. 编程实验:使用LDT实现新功能3. 多任务程序设计的实现思路4. 待解决的问题:…

第51篇 Qt 5.5全新的开始

导语 时间转眼而逝,看一下上次发的教程,已经是一年前的事情了。这一年发生了很多事情,包括自己也包括Qt。当然,自己很忙或者说为了编写《Qt 5编程入门》这些理由,并不能为一年的搁置进行开脱,所以这里首先…

人工智能前沿——6款AI绘画生成工具

>>>深度学习Tricks&#xff0c;第一时间送达<<< 目录 一、【前言】 二、【6款AI绘画生成工具】 1.DeepAI 2.NightCafe 3.Deep Dream Generator 4.StarryAI 5.Fotor 6.Pixso 一、【前言】 AI不仅影响商业和医疗保健等行业&#xff0c;还在创意产业中…

Flutter Web CORS解决方案2-代理转发协议

Flutter Web CORS解决方案2local-cors-proxyshelf_proxydart run shelf_proxyflutter run --dart-definewrap with shellhelp & usagemode & confrun & debuglaunch with proxyvscodeAndroid Studio遗留问题本文介绍第二种解决FlutterWeb CORS问题的方案&#xff1…

[附源码]Nodejs计算机毕业设计基于web的企业人事管理系统Express(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置&#xff1a; Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分…

Centos7下Samba服务器配置

环境 vm下centos7.6&#xff0c;IP地址&#xff1a;192.168.139.200 Samba概述 Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件&#xff0c;由服务器及客户端程序构成。SMB&#xff08;Server Messages Block&#xff0c;信息服务块&#xff09;是一种在局域网上共享文…