PIC单片机之I/O控制

发布者:平和思绪最新更新时间:2013-05-08 来源: 21ic关键字:PIC单片机  IO控制  寄存器 手机看文章 扫描二维码
随时随地手机看文章

I/O控制对于单片机而言是最基础最核心的东西,其实单片机除了AD DA 转换之外的事情。其他大部分的事情I/O口都能做的到。I/O控制简单却能千变万化。

单片机在大部分应用中做的事情,莫过于 输入高低电平 ,输出高低电平。就是通过这简单的控制电平来实现大多数的应用控制。

什么是I/O口?

什么是I/O 就是 IN/OUT 就是 输入/输出。

I/O具体能做什么呢?

如果你是刚刚步入电子的新手,那你最好要知道一下I/O口具体能做什么。感性的认识对你的学习是很有帮助的。I/O口输出一个高(低)电平可以用来点亮一个LED灯,可以接通过一个继电器,来开启电机,来开启音响。开启许多的东西,也可以用于通信等等。输入一个高(低)电平 可以用来检测按键,检测红外线输入 ,检测信号,等等。

I/O口和寄存器之间的对应关系

首先看下一个芯片的原理图。 注意 RA5~RA0这些口

 

在看看RA口的方向控制寄存器TRISA

 

 

在看看RA口的数据控制寄存器PORTA

 

 

可以看出 芯片原理图中的第二脚 RA5 口 和 TRISA 寄存器中的TRISA5位对应 和PORTA寄存器中的 RA5位对应的,RA4~RA0都是如此对应的。

也就是说TRISA 寄存器中的TRISA5位 和PORTA寄存器中的 RA5位来控制 第二脚的RA5口。

如何控制I/O口?

其实控制单片机,就是控制寄存器上的各个位,设置成高设置成低。就好像给你一台机器有 8个的按钮。然后你根据说明书上介绍,根据你的需要按下 或者松开相应的按键 来得到你想得到的功能。只不过我们用的不是手而是C语言来按下和松开这些按键。[page]

TRISA寄存器是方向控制寄存器。就是控制I/O输入还是输出。比如 TRISA寄存器中的TRISA5位 设置成为0 RA5口是输出 设置成为1 RA5口为是输入。

C语言的具体实现:

将RA5口设置成输入的几种方式

第一种 TRISAbits.TRISA5=1; //简单明了,只影响一个位 设置单个I/O比较方便

第二种 TRISA &= 0x20;//不够明了,只影响一个位

第三种 TRISA =0x20;//不够明了,影响到其他位,设置多个I/O用比较方便

将RA5口设置成输出的几种方式

第一种 TRISAbits.TRISA5=0;

第二种 TRISA |= ~0x20;

第三种 TRISA =0x00;

PORTA寄存器是数据控制寄存器。如果是输出状态:PORTA寄存器中的RA5位为0 则RA5口输出低电平,PORTA寄存器中的RA5位为1 则RA5口输出高电平。

如果是输入状态:PORTA寄存器中的RA5位为0 则说明RA5口当前为低电平,PORTA寄存器中的RA5位为1 则说明RA5口当前为高电平。

实例程序:

如果在RA5口上连接着一个LED灯。我们将如何点亮他呢?

/*

开发环境为 MPLAB X IDE,芯片型号为PIC16LF1823

*/

#include //头文件

__CONFIG(FOSC_INTOSC&WDTE_OFF&PWRTE_ON&MCLRE_OFF&CP_ON&CPD_

OFF&BOREN_ON&CLKOUTEN_OFF&IESO_ON&FCMEN_ON);

__CONFIG(PLLEN_OFF&LVP_OFF) ;//配置位

int main(int argc, char** argv) {

ANSELA=0;//将RA口全部设置成数字口,

TRISAbits.TRISA5=0;//设置RA5为输出

PORTAbits.RA5=1;//设置输出高电平点亮LED

while(1);//程序在此无限循环

}

头文件:程序中只要有了#include 编译器就会去自动找到相应型号的头文件,头文件中定义好了每个寄存器的地址,位的地址等。

配置位:这是十分重要即使程序没有任何错误 配置位没配置好程序一样不能用。具体如何配置可以看( 基于MPLAB X IDE配置位设置讲解 )。

模拟数字口:在使用I/O口的时候要确保对应的I/O口是被设置成数字口的。

关键字:PIC单片机  IO控制  寄存器 引用地址:PIC单片机之I/O控制

上一篇:浅析PIC单片机定时器
下一篇:浅析PIC单片机的时钟设置

推荐阅读最新更新时间:2024-03-16 13:23

51特殊功能寄存器
51有21个SFR(Special Function Register),分布在内部80H~FFH单元中。这128个单元中,特殊功能寄存器仅占用了21个单元,其余单元51单片机不能对它们进行读/写操作(即不能作内部数据存储器使用)。单元地址可被8整除的SFR可位寻址。如图 1)累加器A或特殊功能寄存器ACC 累加器为8位寄存器,用于存放操作数,也可用来存放运算的中间结果。A和ACC虽是同一个寄存器,但是在指令中它们却是有区别的。符号指令中的A不能用ACC代替,特殊功能寄存器直接寻址和位名称寻址要用ACC,而不能用A代替。累加器自身带有零标志Z,累加器的值为0,零标志Z=1;累加器的值不为0,零标志Z=0 2)数
[单片机]
51特殊功能<font color='red'>寄存器</font>
ARM处理器寄存器介绍
ARM处理器模式 用户模式(User):ARM处理器正常的程序执行状态 快速中断模式(FIQ):用于高速数据传输或通道处理 外部中断模式(IRQ):用于通用的中断处理 管理模式(Supervisor):操作系统使用的保护模式 数据访问终止模式(Abort):当数据或指令预取终止时进入该模式,可用于虚拟存储及存储保护 系统模式(System):运行具有特权的操作系统任务 未定义指令中止模式(Undifined):当未定义的指令执行时进入该模式,可用于支持硬件协处理器的软件仿真 ARM寄存器 ARM共有37个32位寄存器,其中31个为通用寄存器,6个为状态寄存器.这些寄存器不能被同时访问,但在任何时候,通用寄存器R0~R14,程序计
[单片机]
ARM处理器<font color='red'>寄存器</font>介绍
MSP430寄存器中文注释---P3/4口 (无中断功能)
/************************************************************ * DIGITAL I/O Port3/4寄存器定义 无中断功能 ************************************************************/ #define P3IN_ 0x0018 /* P3 输入寄存器 */ const sfrb P3IN = P3IN_; #define P3OUT_ 0x0019 /* P3 输出寄存器 */ sfrb P3OUT = P3OUT_; #define P3DIR_
[单片机]
嵌入式固件开发之二——直接操作STM32寄存器的LED点灯
2 直接操作STM32寄存器的LED点灯测试程序 2.1 创建并编译工程 双击桌面上的“Keil uVision5”图标,启动MDK。 点击“Project”- “New uVision Project…”菜单项,打开工程创建向导。 选择工程目录,设置工程名字,点击保存。 在接下来的对话框中选择对应的SoC,点击“OK”。 在接下来的对话框中选择最基本的运行时软件组件,点击“OK”。 管理工程的项目。点击如下的图标,启动管理程序。 设置目标的名字为“STM32F103”,第一个组的名字为“Sources”,这些名字都可以根据需要任意取名。如下图所示,设置好后,点击“OK”完成工程的项目管理。 设置
[单片机]
嵌入式固件开发之二——直接操作STM32<font color='red'>寄存器</font>的LED点灯
P87LPC762单片机写CC1000内部寄存器的程序
P87LPC762 单片机 写 CC 1000内部寄存器的程序如下: C程序 write_com(uchar addr,uchar com_data) //写内部寄存 器子程序 { char i; addr =1; pale=0; //允许地址锁存 for(i=0;i 7;i++) { //送地址 addr =1; p_data=CY; pclk=0; //上升沿 pclk=1; } p_data=1; //写操作 pclk=0; pclk=1; pale=1; //禁止地址锁存 for(i=0;i 8;i++){ com_data =1; p_data=CY; pclk=0; pclk=1; } }
[单片机]
Microchip新增低成本USB PIC单片机
2008年6月3日,单片机和模拟半导体供应商——Microchip Technology Inc.(美国微芯科技公司)今天宣布新增一系列支持USB应用的8位PIC®单片机(MCU)。PIC18F13K50及PIC18F14K50(PIC18F1XK50)是目前Microchip所有USB单片机中成本最低的,可提供多种其他平价8位单片机欠缺的功能,使得更多应用能添加嵌入式USB功能。 有了这一新的产品系列,Microchip现拥有业界最全面的8位、16位及32位USB单片机产品线,且均由单一集成开发环境——免费的MPLAB® IDE支持。该集成开发环境为所有PIC单片机提供了统一的开发平台,为设计工程师研发性能更高及功
[单片机]
STM32 通用定时器相关寄存器
TIMx_CR1(控制寄存器1) 9-8位:CKD 时钟分频因子,定义在定时器时钟(CK_INT)频率与数字滤波器(ETR,TIx)使用的采样频率之间的分频比例。 定义:00(tDTS = tCK_INT),01(tDTS = 2 x tCK_INT),10(tDTS = 4 x tCK_INT)11:保留 7位:ARPE:自动重装载预装载允许位,定义:0(TIMx_ARR寄存器没有缓冲),1(TIMx_ARR寄存器被装入缓冲器) 6-5位:CMS 选择中央对齐模式,定义:00:边沿对齐模式。计数器依据方向位(DIR)向上或向下计数。 01(中央对齐模式1。计数器交替地向上和向下计数。配置为输出的通道(TIMx_CC
[单片机]
VxWorks系统下的RTL8139驱动程序改进
0 引言 RTL8139是台湾Realtek半导体公司生产的一种快速以太网控制器,提供符合PCI2.2标准的接口,兼容IEEE802.3u 100BASE-T规范,支持IEEE-802.3x全双工流量控制,支持10Mbit.s-1/100Mbit.s-1全双工、半双工自适应,价格便宜,性能稳定,是PC机、电信终端产品中应用最多的以太网控制器之一。RTL8139在各种操作系统下的驱动都能从Realtek公司网页下载,其中包括VxWorks系统下的驱动,而且提供C源代码。但是在嵌入式系统下,针对不同的硬件平台,往往需要修改该驱动程序以提高其稳定性和效率。基于MPC8241 CPU的硬件平台,本文提出RTL8139在VxWorks系统
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved