- 1、本文档共17页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PIC端口
第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 接口电路 外 部 设 备 PORT 0000 0001 (0V) GND 通过指令从端口输出1 +5V 输入过程(Input) CPU 接口电路 外 部 设 备 PORT 0000 0001 VDD(+5V) 通过指令从端口读 读到1 PIC的通用I/O端口(PORT) PIC16F877型单片机共有40个引脚,其中有33个是I/O引脚。 33个I/O引脚归属于5个端口,分别为PORTA(6)、PORTB(8)、PORTC(8)、PORTD(8)、PORTE(3),其中括号内的数字为该端口的位数。 PIC16F877外形 引脚结构图 P20 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; RC0 RC1 RC2 RC3 RC4 RC5 RC6 RC7 PIC的PORT的使用例子 例如:如果向RC0引脚输出高电平,则用以下指令实现: C语言实现: TRISC=TRISC0xFE RC0=1 RAM-BANK1 ROM I/O过程 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 基本输入/输出例子1 例题:电路如图所示,编程实现:当PORTC连接的8盏小灯循环亮灭。 RC0 …… 16F877 RC7 电源电路 复位电路 晶振电路 GND …… 例题程序 #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个发光二极管,编程实现各种动态效果(小灯依次被点亮,小灯闪烁等)(看谁的效果最炫!) RC0 …… 16F877 RC7 电源电路 复位电路 晶振电路 GND . . . * * 讲到这里,由于时间的原因没有讲程序。 * * 讲到这里,由于时间的原因没有讲程序。
文档评论(0)