4、GPIO

1、GPIO寄存器

端口数据寄存器(Px)

  • 写0: 输出低电平到端口缓冲区
  • 写1: 输出高电平到端口缓冲区
  • 读: 直接读端口管脚上的电平

端口模式配置寄存器(PxM0,PxM1)

PnM1PnM0I/O工作状态
00准双向口(弱上拉),灌电流20ma,拉电流270-150uA
01推挽输出(强上拉输出,最大20mA,需要加限流电阻)
10高阻输入(电流既不能流入也不能流出)
11开漏输出,既可以读取外部状态也可以对外输出。作为输入需要上拉电阻
  • 当有I/O口被选择为ADC输入通道时,必须设置PxM0/PxM1寄存器将I/O口模式设置成输入模式。
  • MCU进入掉电模式/时钟停振模式后,仍需使能ADC通道,则需要设置PxIE寄存器关闭数字输入,才能保证不会有额外的耗电
  • 虽然每个I/O口在弱上拉(准双向口)/强推挽输出/开漏模式时都能承受20mA的灌电流(还是要加限流电阻),整个芯片的工作电流推荐不要超过70mA

端口上拉电阻控制寄存器(PxPU)

  • 0: 禁止端口内部的4.1K上拉电阻
  • 1: 使能端口内部的4.1K上拉电阻

端口施密特触发器控制寄存器(PxNCS)

  • 0: 使能端口的施密特触发功能(商店复位后默认使用施密特触发)
  • 1: 禁止端口的施密特触发功能

端口电平转换速度控制寄存器(PxSR)

  • 0: 电平转换速度快,相应的上下冲会比较大
  • 1: 电平装换速度慢,相应的上下冲比较小

端口驱动电流控制寄存器(PxDR)

  • 0: 增强驱动能力
  • 1: 一般驱动能力

端口数字信号输入是能控制寄存器(PxIE)

  • 0: 禁止数字信号输入。若I/0被当做比较器输入口、ADC输入口、触摸按键输入口或者为外部晶振接入脚等模拟口时,进入时钟停振模式前,必须设置,否则会额外耗电
  • 1: 是能数字信号输入。若I/O被当做数字口时,必须设置为1,否则MCU无法读取外部端口的电平。
#include <STC8h.h>
#include <intrins.h>
 
sbit led0 = P1^0;
void main ()
{
	P1M0 = 0xff; 	// P1 推挽模式
	P1M1 = 0x00;
	P1PU |= 0x00;	// P1  上拉电阻关闭
 
	P10 = 0; // p1.0 输出高电平
	led0 = 1; // p1.0 输出低电平
	
    _nop_();                                    //等待两个时钟
    _nop_();                                    //
    CY = P00;                                   //读取端口状态
	
	while(1){}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值