- 1、本文档共114页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第6章80C51单片机内部功能单元及
第六章 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
文档评论(0)