【单片机原理及其应用】第三章IO口的定义与使用

您所在的位置:网站首页 Arduino定义IO口语句 【单片机原理及其应用】第三章IO口的定义与使用

【单片机原理及其应用】第三章IO口的定义与使用

2023-12-09 17:46| 来源: 网络整理| 查看: 265

在学习IO口之前,首先来复习一下之前学习的PIC16F887系列的封装图 封装

第一节:IO口的基本知识介绍 数据方向控制器—TRISX

IO口就是input/output口,用于单片机连接外部电路或者外部电路连接单片机 887有35个O口,36个I口。 其中端口的分类有四种,分别为A,B,C,D。A,B,C,D口个8个引脚,E口四个引脚(RE3口只能输入不能输出) 由于存在每个端口进行输入输出复用(既可以作为输入口也可以作为输出口),所以在使用这些端口之前需要对端口的方向进行定义(简单来说就是控制这个端口在工作的时候是作为输出端口还是输入端口)。控制这些端口方向的“管理员”我们称为:数据方向控制寄存器 记作TRISx,分别有TRISA,TRISB,TRISC,TRISD,TRISE。控制各个端口的输入输出定义。 其中0是输出,1是输入。0是不是很像output,1是不是很像input。 所有的控制端口寄存器上电复位默认值全部为1,即输入口。

// PIC16F887 Configuration Bit Settings // 'C' source line config statements // CONFIG1 #pragma config FOSC = XT // Oscillator Selection bits (XT oscillator: Crystal/resonator on RA6/OSC2/CLKOUT and RA7/OSC1/CLKIN) #pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled and can be enabled by SWDTEN bit of the WDTCON register) #pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled) #pragma config MCLRE = OFF // RE3/MCLR pin function select bit (RE3/MCLR pin function is digital input, MCLR internally tied to VDD) #pragma config CP = OFF // Code Protection bit (Program memory code protection is disabled) #pragma config CPD = OFF // Data Code Protection bit (Data memory code protection is disabled) #pragma config BOREN = OFF // Brown Out Reset Selection bits (BOR disabled) #pragma config IESO = OFF // Internal External Switchover bit (Internal/External Switchover mode is disabled) #pragma config FCMEN = OFF // Fail-Safe Clock Monitor Enabled bit (Fail-Safe Clock Monitor is disabled) #pragma config LVP = OFF // Low Voltage Programming Enable bit (RB3 pin has digital I/O, HV on MCLR must be used for programming) // CONFIG2 #pragma config BOR4V = BOR40V // Brown-out Reset Selection bit (Brown-out Reset set to 4.0V) #pragma config WRT = OFF // Flash Program Memory Self Write Enable bits (Write protection off) // #pragma config statements should precede project file includes. // Use project enums instead of #define for ON and OFF. #include void main(void) { TRISA=0B00000001;//0b表示二进制。后面的表示端口的输入输出选择。从右边往左边,分别是RA0,RA1,RA2,RA3,RA4,RA5,RA6,RA7. TRISB=0B00000010;//表示RB1是输入,其他均为输出 TRISC=0B00000100; TRISD=0B00001000; TRISE=0B0101; return; }

注意: 每个IO引脚最大的输出电流(拉电流)为25mA,最大输入电流(灌电流)也为25mA; 每个端口组合的最大输出电流和输入电流为90mA; 在写端口的时候要注意写和读同一个端口不能连续操作; (因为单片机对I/O口的操作实际上是对I/O进行“读-修改-写”的过程,在指令周期的开头读取,修改,在指令周期的末尾写入锁存器。如果连续性写读会导致,电平还未稳定,读出来的和写进去的不一样。通常在中间加一个NOP()指令,使其休息一段时间) PPT中的神奇的超低功耗唤醒 通过将PCON 寄存器中的ULPWUE 位置1 选择此模式。这将产生一个小的灌电流,可用于将RA0 上的电容放电。当RA0 上的电压下降到VIL (低电平,0.8V左右)以下时,将产生中断使器件唤醒并执行下一条指令。如果INTCON 寄存器中的GIE位置1,器件将调用中断向量( 0004h) 超低功耗唤醒功能执行步骤

模拟口与数字口的选择—ANSEL和ANSELH

在这里插入图片描述 ANSEL和ANSELH都是对端口输入信号类型的选择。AN就是模拟的意思,SEL就是设置的意思,H表示高位的设置。 寄存器介绍 特别要注意: AN0—RA0 AN1—RA1 AN2—RA2 AN3—RA3 AN4—RA5 AN5—RE0 AN6—RE1 AN7—RE2 AN8/9/10/11/12/13对应RB(查表) 表格 注意:在上电复位时,与AN有关的端口的默认设置是模拟口 在书写程序的时候如果要使用到输出输入端口就要注意对输出输入端口进行初始化定义,即定义好是模拟量输入还是数字量输入,是作为输入口还是作为输出口,是具有弱上拉功能还是直接外部再接一个上拉电阻。

弱上拉

弱上拉功能 在这里插入图片描述 这里一定要注意,如果要弱上拉就一定要对OPTION_REG的第七位进行初始化。 在这里插入图片描述

电平中断设置

电平中断 中断功能设置

其他几个端口的用途(非重点)

在这里插入图片描述 作业: 程序

在这里插入代码片


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3