1.引言:PIC单片机引脚图:

在PIC16F87X 单片机中,28引脚型号的单片机有3 个I/O端口,分别是RA、RB和RC;40引脚型号单片机有5个 I/O端口,分别是RA、RB、RC、RD和RE。其中RA有6条口线,RE有3条口线,其余都有 8条口线。

PIC16F87X端口口线既可作普通I/O引脚,又可作某些部件或外围模块的外接引脚,比如端口引脚RC.4既可用作普通I/O脚,又可以作为SPI串行通信的数据输入引脚。这里只介绍端口的基本功能和基本用法,端口的其他复合功能,在以后介绍。

2.与输入/输出端口相关的2个寄存器PIC单片机中各个I/O端口都具备两个基本的专用寄存器:端口数据寄存器和端口方向寄存器。如下所示。

这些寄存器在RAM中都有统一的编址,即PIC单片机的端口都可以当作RAM单元来访问,无需专门的指令访问。

3.输入/输出端口的基本结构PIC16F87X的3/5个端口不但结构上存在差异,而且同一端口的各口线的内部结构也略有差别,但是他们的基本结构模型,如下图所示。

图中有三个D触发器(也称为锁存器)。

其中Data Latch代表了端口数据寄存器,例如PORTA、PORTB、PORTC;

TRIS Latch端口方向寄存器,例如TRISA、TRISB、TRISC;而Input Latch是端口设置为输入时作为缓冲器。

3.1 基本输入/输出端口的工作原理

下面对端口口线进行的基本操作说明如下:

⒈写I/O方向寄存器TRIS Latch

当方向寄存器中的内容为1时,则对应口线被设置为输入(Input);当其内容为0时,则对应引脚设置为输出(Output)。

⒉ 经端口引脚输出数据

要把端口口线作为输出,必须要把该口线预先设定为输出态,即相应的TRIS Latch的内容必须为0。

⒊从端口引脚输入数据

要把端口口线作为输入,必须要把该口线预先设定为输出态,即相应的TRIS Latch的内容必须为1。

3.2输入/输出端口基本功能的应用举例

下面的实例是单键触发8位二进制累加计数器,是针对端口功能和ICD在线调试器上的硬件为基础而设计的。该实例中要用到的硬件电路如下图所示。

图中端口RC外接8条支路,这8条支路构成了端口RC的输出电路,其中8只电阻起限流作用,保护端口引脚和发光二极管LED;LED在高电平时发光。图中还使用了端口RB的RB0口线作为外接输入引脚。电阻R4为限流电阻,对RB0引脚起保护作用;电阻R21为上拉电阻,将RB0电平拉高;开关SW1用来人工输入低电平脉冲信号。

程序设计思路 :

刚接通电源时,8只发光二极管都不亮,表示计数器初始值为0。

按下开关SW1时,计数器值加l,D0点亮,表示二进制数00000001B,然后松开按钮;再次按下SW1时,计数器值又加1,D1点亮,表示二进制数00000010B,然后再松开按钮;依次类推。直到按了255次按钮时,D7~D0全部点亮,假如再次按动按钮将使计数器回0。如此循环往复。

设计按钮输入程序时,有一点需要注意,就是必须处理按钮在按下或松开时存在抖动现象,以免产生误判。按钮的去抖动一般都是调用延迟程序来消除抖动的。即在程序设计中,当查询到RB0上的首次电平变化后,马上延迟τ(例如10ms),待RB0上的状态稳定后,再次查询确认,果真是按键动作(按下或者松开),方认定为有效,否则,判为干扰脉冲。程序清单如下:

STATUS     EQU     03H

PORTB      EQU     06H

TRISB      EQU     86H

PORTC      EQU     07H

TRISC      EQU     87H

DATA1      EQU     20H          ; DATA1为延时变量

DATA2      EQU     21H          ; DATA2为延时变量

N1         EQU     D'13'        ;外层循环延时常数

N2         EQU     0FFH         ;内层循环延时常数

RP0        EQU      5H          ;体选位RP0

ORG        000H

BSF    STATUS, RP0         ;切换到RAM的体1

MOVLW  00H                 ;将端口C设为输出

MOVWF  TRISC

MOVLW  0FFH                ;将端口B设置为输入

MOVWF  TRISB

BCF    STATUS, RP0         ;恢复到RAM的体0

PORTC  EQU     07H

TRISC  EQU     87H

DATA1  EQU     20H         ; DATA1为延时变量

DATA2  EQU     21H         ; DATA2为延时变量

N1     EQU     D'13'       ;外层循环延时常数

N2     EQU     0FFH        ;内层循环延时常数

RP0    EQU      5H         ;体选位RP0

ORG      000H

BSF     STATUS, RP0        ;切换到RAM的体1

MOVLW  00H                 ;将端口C设为输出

MOVWF  TRISC

MOVLW  0FFH                ;将端口B设置为输入

MOVWF  TRISB

BCF    STATUS, RP0         ;恢复到RAM的体0

汇编语言往往需要更多硬件知识,因此对于主攻软件或者有着良好C语言编程能力的人,我更像偏向于C编程。

以下是用C语言编写的程序:

include

#define N1 13    //外循环

#define N2 0xff   //内循环

static volatile bit PORTB0 @(unsigned)&PORTB*8+0; //端口可变设计

int DATA1,DATA2;

main() {

TRISC=0xff; //Input ???????  TRISC = 0x00;  //Output

TRISB=0xff; //Input

PORTC=0;    //清零

check: if PORTB0==0 then goto check;  //监测是否有电平信号输入  有效电平信号1

DELAY();  //延时去抖动

if PORTB0==0 then goto check;//去抖动确定

PORTC++; //C语言设计好处 立刻就凸显出来了

CHECK1 if  PORTB0==1  goto  CHECK1;

DELAY()

if  PORTB0==1  goto  CHECK1;

GOTO  check;

while(1) {  };

}

void DELAY()

{

DATA1=N1;

LP0: DATA2=N2;

LP1: if DATA2-- > 0 goto LP1;

if DATA1-- > 0 goto LP0;

return;

}

本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

设定pic单片机端口为输入_PIC单片机入门_输入输出端口详解相关推荐

  1. PIC单片机入门_中断系统详解

    1.中断的基本概念 当单片机正在执行程序时,出现了某些特殊状况,例如定时时间到.有键盘信号输入等,此时CPU须要暂时停止当前的程序,而转去执行处理这些事件的程序,待执行完这些特定的程序之后,再返回到原 ...

  2. PIC单片机入门_定时器TMR2详解与实例

    1.前言 这里将介绍另一款定时器TMR2模块,TMR2与前面介绍的TMR0和TMR1相比,最大的差别是只能工作于定时模式,因此称它为"定时器TMR2".  2.TMR2的特性 TM ...

  3. 单片机推挽输出c语言,单片机IO口科普:推挽输出、开漏输出详解

    原标题:单片机IO口科普:推挽输出.开漏输出详解 在学单片机和选用逻辑器件的时候我们常别人说这款芯片是推挽输出驱动能力强,这个引脚是开漏输出需要加上拉电阻. 是不是有时候感觉一头雾水? 今天就详解一下 ...

  4. TCP端口状态 LISTENING、ESTABLISHED、TIME_WAIT及CLOSE_WAIT详解,以及三次握手,滑动窗口

    参考文章:端口状态 LISTENING.ESTABLISHED.TIME_WAIT及CLOSE_WAIT详解,以及三次握手,滑动窗口

  5. PIC单片机精通_A/D转换异步串口通讯实例与详解

    1.前言 串口通信这个话题对于很多做机电一体化.机器人控制等系统协调的同学,根本不陌生.计算机软件(编程技术),近些年飞速发展.尤其是以机器学习.仿生控制.大数据为代表的AI行业.但是,软件及算法永远 ...

  6. 打开单片机世界的大门——上位机控制下位机实例详解

    上位机控制下位机实例详解 一.基本概念 上位机与下位机 串口 数据表达 二.下位机程序 三.上位机程序 四.总结 一.基本概念 在开始讲解前,先来看几个基本概念,如果是有基础的大佬,请直接跳到下一节. ...

  7. edtext 从右边开始输入 安卓_Android开发之EditText属性详解

    1.EditText输入的文字为密码形式的设置 (1)通过.xml里设置: 把该EditText设为:android:password="true" // 以".&quo ...

  8. centos7 docker删除端口映射_容器Docker详解

    概述 基本概念Docker是一个开源的应用容器引擎,基于Go语言并遵从Apache2.0协议开源.Docker可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的Li ...

  9. 设定pic单片机端口为输入_PIC单片机IO端口的软件/硬件可靠性使用方法讨论

    本帖最后由 dingzy_2002 于 2016-3-19 11:51 编辑 一.PIC的IO端口设置在普通的高低电平情况下 1.有普通的H/L电平下,硬件设计要注意的是外围输出其最大驱动电流(拉出/ ...

  10. 设定pic单片机端口为输入_PIC单片机的输入输出端口

    在学习这个部门的时候,曾经碰到过一些题目.PIC单片机的引脚未几,大多都是复用引脚,例如AD.IO.比较器.外接晶振等等,所以在配置端口的时候,一定要知道每个功能怎样设置才能实现的,在这一小节中,我要 ...

最新文章

  1. Flex Basis与Width的区别
  2. 网站负责人委托书_关于网站负责人授权委托书的阿里云网站内容
  3. ENVI5.3安装教程|带资源
  4. 3、CommonChunkPlugin提取公共js-以提取一个jquery为例
  5. Adobe Acrobat的安装时出现:服务print spooler启动失败,请确认您有足够权限启动系统服务。解决方法...
  6. 零基础入门CV赛事-Task1 赛题理解
  7. R中数据结构与数据的输入
  8. 1.Yii2 -- Controller, Request, Response, Cookie, Session
  9. React骚操作——jsx遇到template-directive
  10. HTML关联两个标签事件,javascript – 交换2个html元素并保留事件侦听器
  11. python可以用于工业机器人编程与操作_工业机器人用什么语言编程?
  12. 关于STM8S003F3P6开发的笔记v
  13. BEGAN(Boundary Equilibrium GenerativeAdversarial Networks)-pyTorch实现
  14. EXPLOITING CVE-2016-2060 ON QUALCOMM DEVICES
  15. 开课吧python9.9元_神器!全网爬资源!低调使用
  16. BD01王家豪数据结构绪论
  17. idea 设置自动换行
  18. html中加入m3u,创建自己的播放列表(m3u文件)
  19. 盘点:阿里巴巴的安全能力究竟是什么水平?
  20. Linux中的特殊符号怎么打出

热门文章

  1. 区块链技术指南:术语
  2. 学java怎么做笔记?教大家整理java笔记的一些方法
  3. #166 (Div. 2)
  4. 不足300的游戏蓝牙耳机靠谱吗?五款高人气蓝牙耳机测评
  5. 区块链:Casper 机制的历史起源-第五篇
  6. 浅谈VMD---变分模态分解
  7. 遗传算法原理案例及MATLAB代码
  8. VBUC:VB6 代码转换为 C# 和 VB.NET
  9. 智能硬件设计开发流程
  10. 日月神话_功能色彩神话