PIC07输入输出端口的基本功能.ppt

上传人:sccc 文档编号:5017667 上传时间:2023-05-29 格式:PPT 页数:14 大小:325.01KB
返回 下载 相关 举报
PIC07输入输出端口的基本功能.ppt_第1页
第1页 / 共14页
PIC07输入输出端口的基本功能.ppt_第2页
第2页 / 共14页
PIC07输入输出端口的基本功能.ppt_第3页
第3页 / 共14页
PIC07输入输出端口的基本功能.ppt_第4页
第4页 / 共14页
PIC07输入输出端口的基本功能.ppt_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《PIC07输入输出端口的基本功能.ppt》由会员分享,可在线阅读,更多相关《PIC07输入输出端口的基本功能.ppt(14页珍藏版)》请在三一办公上搜索。

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外接8条支路,这

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

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

6、A2 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;否!则循环检测 CALL DELAY;调用延时程序去抖动 BTFSC P

7、ORTB,0;再次测试SW1按下否?GOTO LP;否!则循环检测 INCF PORTC,1;PORTC+1-PORTCLP1 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 volatile bit PORTB0(unsigned),void DELAY()DATA1=N1;LP0:DATA2=N2;LP1:if DATA2-0 goto LP1;if DATA1-0 goto LP0;return;,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号