1.IO对应的寄存器
P0(80H):P0 口锁存器,双向 8 位 I/O 口(可复用为地址 / 数据总线)。
P1(90H):P1 口锁存器,准双向 8 位 I/O 口。
P2(A0H):P2 口锁存器,准双向 8 位 I/O 口(可复用为高 8 位地址线)。
P3(B0H):P3 口锁存器,准双向 8 位 I/O 口,每一位有第二功能(如串口、中断、定时器等)
2. 输出工作原理
当作为输出口时,CPU 通过写入数据到端口寄存器(如 P0),控制内部 MOS 管导通或截止,从而使引脚输出高电平或低电平:
输出高电平时:内部上拉电阻导通,引脚呈现高电平(P0 口无内部上拉,需外部电阻)
输出低电平时:下拉 MOS 管导通,引脚接地,呈现低电平
3. 输入工作原理
作为输入口使用时,需先向端口寄存器写入0xFF(全 1),使内部 MOS 管截止,此时引脚状态可被内部缓冲器读取:
读引脚:通过MOV C, P0.0等指令直接读取外部引脚状态
读锁存器:通过MOV A, P0等指令读取端口寄存器的值(用于某些特殊操作)
4.按键控制小灯代码
(此处输入引脚硬件电路默认上拉)
/**************************************************************************************
* 独立按键实验 *
实现现象:下载程序后按下K1按键可以对D1小灯状态取反。
注意事项:无
***************************************************************************************/
#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器
typedef unsigned int u16; //对数据类型进行声明定义
typedef unsigned char u8;
sbit k1=P3^1; //定义P31口是k1
sbit led=P2^0; //定义P20口是led
/*******************************************************************************
* 函 数 名 : delay
* 函数功能 : 延时函数,i=1时,大约延时10us
*******************************************************************************/
void delay(u16 i)
{
while(i--);
}
/*******************************************************************************
* 函 数 名 : keypros
* 函数功能 : 按键处理函数,判断按键K1是否按下
*******************************************************************************/
void keypros()
{
if(k1==0) //检测按键K1是否按下
{
delay(1000); //消除抖动 一般大约10ms
if(k1==0) //再次判断按键是否按下
{
led=~led; //led状态取反
}
while(!k1); //检测按键是否松开
}
}
/*******************************************************************************
* 函 数 名 : main
* 函数功能 : 主函数
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void main()
{
while(1)
{
keypros(); //按键处理函数
}
}
5.各端口详细说明
(1)P0 口(80H)
结构特点:漏极开路设计,无内部上拉电阻,作为普通 I/O 口使用时需外接 10kΩ 上拉电阻
双重功能:
普通 I/O 口:8 位双向口,可输入输出数据
复用功能:访问外部存储器时,分时作为低 8 位地址线(A0~A7)和 8 位数据线(D0~D7)
应用场景:需要大电流驱动的外部设备、外部存储器扩展
(2) P1 口(90H)
结构特点:准双向口,内部集成上拉电阻,无需外部电阻
功能:唯一纯 I/O 口,无复用功能,每一位均可独立作为输入或输出
应用场景:LED 指示灯、按键、传感器等简单外设连接
(3)P2 口(A0H)
结构特点:准双向口,内部带上拉电阻
双重功能:
普通 I/O 口:8 位双向口
复用功能:访问外部存储器时作为高 8 位地址线(A8~A15)
注意:当系统扩展外部存储器时,P2 口通常被用作地址线,不能再作为普通 I/O 口
(4)P3 口(B0H)
结构特点:准双向口,内部带上拉电阻
双重功能:
普通 I/O 口:8 位双向口
第二功能:每一位都有特殊功能,如下表:
————————————————
版权声明:本文为CSDN博主「chem4111」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_46286415/article/details/149742670
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?注册
×
|