PIC07输入输出端口的基本功能.ppt_第1页
PIC07输入输出端口的基本功能.ppt_第2页
PIC07输入输出端口的基本功能.ppt_第3页
PIC07输入输出端口的基本功能.ppt_第4页
PIC07输入输出端口的基本功能.ppt_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第六章 输入输出端口的基本功能,在PIC16F87X 单片机中,28引脚型号的单片机有3 个IO端口,分别是RA、RB和RC;40引脚型号单片机有5个 IO端口,分别是RA、RB、RC、RD和RE。其中RA有6条口线,RE有3条口线,其余都有 8条口线。 PIC16F87X端口口线既可作普通IO引脚,又可作某些部件或外围模块的外接引脚,比如端口引脚RC.4既可用作普通IO脚,又可以作为SPI串行通信的数据输入引脚。 本章只介绍端口的基本功能和基本用法,端口的其他复合功能,在以后章节中介绍。,6.1 与输入输出端口相关的2个寄存器 PIC单片机中各个IO端口都具备两个基本的专用寄存器:端口数据寄

2、存器和端口方向寄存器。如下所示。,这些寄存器在RAM中都有统一的编址,即PIC单片机的端口都可以当作RAM单元来访问,而无需专门的指令来访问。,6.2 输入输出端口的基本结构 PIC16F87X的5个端口不但结构上存在差异,而且同一端口的各口线的内部结构也略有差别,但是他们的基本结构模型,如下图所示。 图中有三个D触发器(也称为锁存器),其中Data Latch代表了端口数据寄存器,例如PORTA、PORTB、PORTC;TRIS Latch端口方向寄存器,例如TRISA、TRISB、TRISC;而Input Latch是端口设置为输入时作为缓冲器。 基本输入输出端口的工作原理 下面对端口口线

3、进行的基本操作说明如下:,写IO方向寄存器TRIS Latch 当方向寄存器中的内容为1时,则对应口线被设置为输入;当其内容为0时,则对应引脚设置为输出。 经端口引脚输出数据 要把端口口线作为输出,必须要把该口线预先设定为输出态,即相应的TRIS Latch的内容必须为0。 从端口引脚输入数据 要把端口口线作为输入,必须要把该口线预先设定为输出态,即相应的TRIS Latch的内容必须为1。,6.3 输入输出端口基本功能的应用举例 下面的实例是单键触发8位二进制累加计数器,是针对端口功能和ICD在线调试器上的硬件为基础而设计的。该实例中要用到的演示板上的部分硬件电路如下图所示。 图中端口RC外

4、接8条支路,这8条支路构成了端口RC的输出电路,其中8只电阻起限流作用,保护端口引脚和发光二极管LED;LED在高电平时发光。 图中还使用了端口RB的RB0口线作为外接输入引脚。电阻R4为限流电阻,对RB0引脚起,保护作用;电阻R21为上拉电阻,将RB0电平拉高;开关SW1用来人工输入低电平脉冲信号。 程序设计思路 本实例是把演示板当做一个计数器。刚接通电源时,8只发光二极管都不亮,表示计数器初始值为0。 按下开关SW1时,计数器值加l,D0点亮,表示二进制数00000001B,然后松开按钮;再次按下SW1时,计数器值又加1,D1点亮,表示二进制数00000010B,然后再松开按钮;依次类推。

5、直到按了255次按钮时,D7D0全部点亮,假如再次按动按钮将使计数器回0。如此循环往复。,设计按钮输入程序时,有一点需要注意,就是必须处理按钮在按下或松开时存在抖动现象,以免产生误判。 按钮的去抖动一般都是调用延迟程序来消除抖动的。即在程序设计中,当查询到RB0上的首次电平变化后,马上延迟(例如10ms),待RB0上的状态稳定后,再次查询确认,果真是按键动作(按下或者松开),方认定为有效,否则,判为干扰脉冲。程序清单如下: STATUS EQU 03H PORTB EQU 06H TRISB EQU 86H,PORTC EQU 07H TRISC EQU 87H DATA1 EQU 20H ;

6、 DATA1为延时变量 DATA2 EQU 21H ; DATA2为延时变量 N1 EQU D13 ;外层循环延时常数 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,MOVLW 00H ;初始化端口C MOVWF PORTC LP BTFSC PORTB,0 ;测试SW1按下否? GOTO LP ;否!则

7、循环检测 CALL DELAY ;调用延时程序去抖动 BTFSC PORTB, 0 ;再次测试SW1按下否? GOTO LP ;否!则循环检测 INCF PORTC,1 ; PORTC+1-PORTC LP1 BTFSS PORTB,0 ;测试SW1断开否 GOTO LP1 ;否!则循环检测 CALL DELAY ;消除断开抖动 BTFSS PORTB,0 ;再次测试SW1断开否 GOTO LP1 ;否!则循环检测 GOTO LP ;返回,DELAY MOVLW N1 ;N1 DATA1 MOVWF DATA1 LOOP0 MOVLW N2 ;N2DATA2 MOVWF DATA2 LOOP1 DECFSZ DATA2,1 ;DATA2-1 DATA2, ;若为0则跳转 GOTO LOOP1 DECFSZ DATA1,1 ; DATA1-1 DATA1, ;若为0跳转 GOTO LOOP0 RETURN END ;源程序结束 以下是用C语言编写的程序:,#include #define N1 13 #define N2 0 xff static volati

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论