您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 酒店餐饮 > 第4章_并行IO端口原理及编程
第4章并行I/O端口原理及编程4.1并行I/O端口的结构及工作原理4个并行I/O端口P0~P3;P0、P2端口可作地址总线;P3端口具有第二功能;特殊功能寄存器控制I/O端口。P0数据总线;1、P0端口结构(低地址/数据总线复用、通用I/O口)1)位电路结构(P0.X)②缓冲器③多路选择器④驱动电路②缓冲器⑤CPU输出/输入信号①CMOS反相器CMOS反相器的开关模型2)工作过程分析(1)P0口作为地址/数据总线地址或数据输出时“控制”信号为1,MUX开关向上。P0.X输出状态=地址/数据的状态。数据输入时“控制”信号为0,MUX开关向下。首先,CPU输出信号自动置成“1”,上下场效应管都截止,然后,P0.X通过BUF2输入到CPU输入信号。(2)P0口作为通用I/O口“控制”信号为0,MUX开关向下,上方的FET截止、开路。P0口输出时:当P0.X为1时,下方FET截止,必须接上拉电阻,才输出高电平;当P0.X为0时,下方FET导通,输出低电平;P0口输入时:首先,CPU输出信号置成“1”,上下场效应管都截止;然后,P0.X通过BUF2输入到CPU输入信号。(3)P0口特点①P0口用作地址/数据复用;②用作I/O时,必须接上拉电阻;③用作输入口时,必须先置锁存器为1,然后读取输入信号。※2、P1端口结构(通用I/O口)1)位电路结构(P1.X)CPU输出/输入信号P1口只能作为通用I/O口2)工作过程分析P1口作为输出口时,若CPU输出1,Q=1,Q=0,FET截止,P1.X口引脚的输出为1;若CPU输出0,Q=0,Q=1,FET导通,P1.X口引脚的输出为0。P1口作为输入口时,首先,CPU输出信号置成“1”,下场效应管截止;然后,P1.X通过BUF2输入到CPU输入信号。①作为输出口时,不需要在片外接上拉电阻。②用作输入口时,必须先置锁存器为1,然后读取输入信号。3)P1口特点※3、P2端口结构(高地址总线、通用I/O口)1)位电路结构(P2.X)2)工作过程分析①P2口作为地址总线,与P0口工作原理相同。②P2口作为通用I/O口,与P1口工作原理相同。3)P2口特点①P2口作为地址总线;②作为输出口时,不需要在片外接上拉电阻。③用作输入口时,必须先置锁存器为1,然后读取输入信号。3、P3端口结构(第二功能、通用I/O口)1)位电路结构(P3.X)2)工作过程分析①P3口作为第二功能输出时,与P0口工作原理相似。②P3口作为第二功能输入时、通用I/O口时,与P1口工作原理相同。3)第二功能用作I/O时,P0必须接上拉电阻、P1、P2、P3不用接;用作输入口时,必须先置锁存器为1,然后读取输入信号。注意:4.2并行I/O端口的电路设计及编程单片机输出低电平时,外部器件向单片机引脚内灌入电流;灌电流1、电路设计灌电流单片机输出高电平时,外部器件从单片机的引脚拉出电流。拉电流拉电流每个引脚,允许灌入的最大电流为10mA;P0、P1、P2、P3端口的拉电流很小。电气特性RR?2、I/O口输出控制P1口P1.0连接的LED一亮一灭。P1.0R330ΩVccP1.0置成“0”,则LED亮;P1.0置成“1”,则LED灭;P1.0置成“0”,则LED亮;P1.0置成“1”,则LED灭;P1=P1|0x01;P1=P1&0xFE;voidmain(){while(1){P1=P1|0x01;delay(500);P1=P1&0xFE;delay(500);}}#includereg51.hvoiddelay(inti){intt;while(i--){for(t=0;t120;t++);}}3、I/O口输入/输出控制P1口P1.0连接LED,P1.1接按钮。如果按下按钮,则LED一直点亮。P1.0R1VccP1.1R24.7Kintt;P1=P1|0x02;t=P1;t=t&0x02;if(t==0){P1=P1&0xFE;}//先把P1.1置成高电平//读取P1.1输入的电平//P1.0输出置成低电平I/O口输入/输出编程控制#includereg51.hvoidmain(){intt;while(1){P1=P1|0x02;t=P1;t=t&0x02;if(t==0)P1=P1&0xFE;}}习题:P1口P1.0连接LED,P1.1接按钮。按钮按下时,则LED点亮,按键松开时,LED灭。P1.0R1VccP1.1R24.7K#includereg51.hvoidmain(){intt;while(1){P1=P1|0x02;t=P1;t=t&0x02;if(t==0)P1=P1&0xFE;elseP1=P1|0x01;}}P1.0R1VccP2.1R3P1.1R2R4P2.0K1K2L1L2习题:按下K1时,则L1点亮,按键松开时,L1灭。按下K2时,则L2点亮,按键松开时,L2灭。sbitP10=P1^0;sbitP11=P1^1;intt;while(1){P2=P2|0x03;t=P2;t=P2&0x03;switch(t)case0:P10=1;P11=1;break;case1:P10=0;P11=1;break;case2:P10=1;P11=0;break;case3:P10=0;P11=0;break;}
本文标题:第4章_并行IO端口原理及编程
链接地址:https://www.777doc.com/doc-4046657 .html