第6章80C51单片机定时计数器中断基础.ppt
文本预览下载声明
第六章 80C51单片机内部功能单元及应用;6.1并行I/O端口;6.1.1 P0口;2.P0口作为通用I/O口
1)输出时
CPU发出控制电平“0”封锁“与”门,将输出上拉场效应管T1截止,同时使多路开关MUX把锁存器与输出驱动场效应管T2栅极接通。故内部总线与P0口同相。由于输出驱动级是漏极开路电路,当驱动NMOS或其它电流负载时,需要外接上拉电阻。P0的输出级可驱动8个LSTTL负载。;2)输入时---分读引脚和读锁存器
读引脚:由传送指令(MOV)实现;
读锁存器:读锁存器是先从锁存器中读取数据,进行处理后,将处理后的数据重新写入锁存器中,这类指令成为“读-修改-写”指令。
例如CPL P0.0指令执行时,单片机内部产生“读锁存器”操作信号,使锁存器Q端的数据送到内部总线,在对该位取反后,结果又送回P0.0的端口锁存器并从引脚输出。
“读锁存器”可以避免因引脚外部电路的原因而使引脚的状态发生改变造成误读。 ;;3.P0作为地址/数据总线
当P0口作地址/数据复用总线用之后,就再也不能作通用I/O口使用了。
1)P0引脚输出地址/数据信息。
2)P0引脚输出地址/输入数据 ;;1. 位电路结构
P1口的位电路结构如图6-2所示,内部包含输出锁存器、输入缓冲器(读引脚、读锁存器)以及由FET晶体管与上拉电阻组成的输出/输入驱动器。;.P1口作为通用I/O口
1)P1.X作I/O口的输出线
当CPU对P1.X锁存器写入高电平“1”时,/Q=“0”,场效应管V1截止,P1.X引脚输出高电平。当CPU对P1.X锁存器写入低电平“0”时,/Q=“1”,场效应管V1导通,P1.X引脚输出低电平。注意输出高电平不要带较重的负载。;2)P1.X作I/O口的输入线
软件首先对P1.X锁存器写高电平“1”,使场效应管V1截止,P1.X引脚呈高电平“1”;很微弱的电流就可把P1.X引脚拉为低电平,所以P1.X引脚的电平是随外电路驱动的电平变化而变化;软件读P1.X引脚时,CPU使“读引脚”=“1”,三态缓冲器1导通,将P1.X引脚的电平读入内部数据总线。;6.1.3 P2口
P2口也是一个准双向口 ,P2口能带3~4个TTL负载。可以字节访问,也可位访问,其字节访问地址为A0H,位访问地址为A0H~A7H。
1.位电路结构
P2口有8条端口线,命名为P2.7~P2.0,每条线的结构如图6-3所示。它由一个输出锁存器、转换开关MUX、两个三态缓冲器、一个非门、输出驱动电路和输出控制电路等组成。输出驱动电路上有上拉电阻。 ;;;P3口作为第二功能使用
通常情况下,P3口的第二功能在应用中更为重要,此时各引脚定义如表6-1所示。
;基本I/O口的应用举例
1.P0口输出功能应用举例
【例1】P0口做通用I/O输出口,控制8只发光二极管从左到右依次点亮,再依次熄灭,电路图如图6-5所示。;#include AT89X51.H
unsigned char i;
unsigned char temp;
unsigned char a,b;
void delay(void) //循环间隔时间
{
unsigned char m,n,s;
for(m=20;m0;m--)
for(n=20;n0;n--)
for(s=248;s0;s--);
}
void main(void)
{
while(1)
{
temp=0xfe;
P0=temp;
delay();
;2.P2口输入、P1口输出功能应用举例
【例2】利用8个拨动开关,把8位数据送到P2口,程序读入,然后送P1口显示。如图6-6所示:;【C程序】:
#includereg52.h
#includeintrins.h
#define uchar unsigned char
#define uint unsigned int
#define key P2
#define led P1
void main()
{
while(1)
{
led=key;
}
};3.P1口输入功能应用举例
【例3】P1.5、P1.6、P1.7做输入口使用,P0口连接8只发光二极管,要求通过与P1.5、P1.6、P1.7相连的3个按键来控制P0口的循环灯的循环速度,电路图如图6-5所示,输出部分如图6-7。; 参考程序如下:
#include reg52.h
#include intrins.h
#define uchar unsigned char
#define uint unsigned int
sbi
显示全部