文档详情

单片机的输入输出端口GPIO.ppt

发布:2017-11-29约1.9千字共17页下载文档
文本预览下载声明
第3章 单片机的输入输出端口GPIO 通用I/O接口的基本使用方法 I/O的基本概念 CPU可以通过I/O接口(电路)与外设进行数据交换,交换用数据的本质是高低电平。 +5V(VDD) 被人为定义为逻辑1。 0V(GND)被人为定义为逻辑0。 CPU通过引脚从接口读到一个高电平(+5V),则说外设向CPU输入了1;如果CPU向通过引脚接口输出一个低电平(0V),则说CPU向外设输出了0。 I/O端口(PORT) 端口是接口电路中暂时存放数据的寄存器(Register)。 例如:外设向CPU的接口输入了一个高电平(+5V),则把1放到端口中,再由CPU读取。 如果向外输出一个高电平(+5V),则CPU把1放到端口中,由端口自动向外设输出+5V。 输出过程(Output) CPU 输入过程(Input) CPU PIC的通用I/O端口(PORT) PIC16F877型单片机共有40个引脚,其中有33个是I/O引脚。 33个I/O引脚归属于5个端口,分别为PORTA(6)、PORTB(8)、PORTC(8)、PORTD(8)、PORTE(3),其中括号内的数字为该端口的位数。 PIC16F877外形 引脚结构图 PIC的通用I/O接口寄存器 33个I/O引脚归属于5个端口,这33个引脚作为通用I/O口时,被文件寄存器中的PORTA,PORTB到PORTE共五个寄存器一一相对应。 要想使用PIC的引脚进行输入输出操作,必须要设定引脚方向。 IO方向寄存器TRISX的介绍 TRIS?(?为A,B,C,D或E)在Bank1中,是PORT?的方向寄存器,例如 TRISC为PORTC的方向寄存器, TRISC的某位为0(Output),则对应PORTC的某位用做输出; TRISC的某位为1(Input),则对应PORTC的某位用做输入; TRIS的例题 例题1:把PORTC的高4位置为输入,低4位置为输出。 C语言实现: TRISC=0xF0; PIC的PORT的使用例子 例如:如果向RC0引脚输出高电平,则用以下指令实现: C语言实现: TRISC=TRISC0xFE RC0=1 I/O过程 基本输入/输出例子1 例题:电路如图所示,编程实现:当PORTC连接的8盏小灯循环亮灭。 例题程序 #include “pic.h” Main() { char i=0; TRISC=0x00; PORTC=0x01; while(1) { for(i=0;i8;i++) PORTC=PORTC1; } } 延时函数 void delayms() { int i=0,j=0; for(i=0;i100;i++) for(j=0;j100;j++) { ; } } 如果PIC的主频是4MHz的话,此函数执行一次最多需要多长时间?如何修改此函数使其能延时20ms? 作业题 电路如图所示,RC0到RC7共接了8个发光二极管,编程实现各种动态效果(小灯依次被点亮,小灯闪烁等) (看谁的效果最炫!) * * 接口电路 外 部 设 备 PORT 0000 0001 (0V) GND 通过 指令 从 端口 输出1 +5V 接口电路 外 部 设 备 PORT 0000 0001 VDD(+5V) 通过 指令 从 端口 读 读到1 P20 RC0 RC1 RC2 RC3 RC4 RC5 RC6 RC7 RAM-BANK1 ROM CPU BANKSEL TRISC CLRF TRISC BANKSEL PORTC BSF PORTC,0 RAM-BANK0 接口电路 RC0 +5V RAM-BANK0 PORTC RAM-BANK1 RAM-BANK1 BANKSEL TRISC CLRF TRISC BANKSEL PORTC BSF PORTC,0 TRISC 0000 0000 xxxx xxx1 RC0 …… 16F877 RC7 电源电路 复位电路 晶振电路 GND …… RC0 …… 16F877 RC7 电源电路 复位电路 晶振电路 GND . . .
显示全部
相似文档