【STC8】GPIO模式

本文详细介绍了STC8A8K64D4单片机I/O口的四种模式:准双向口、推挽输出、高阻输入和开漏输出,并提供了单个IO口模式切换的C语言代码示例。特别指出,STC8A8K64D4上电后,除P30和P31为准双向口外,其余为高阻输入。同时提醒注意芯片电流限制。文章附带了GPIO模式切换库文件的下载链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

前言

I/O口模式

使用步骤

总结

前言

IO口模式切换,本文的目的,简单的整合IO口模式切换的代码,到用到时能快速用上。材料就一块STC8A8K64D4核心板。

I/O口模式

I/O口四大模式简略介绍:

准双向口:(传统8051端口模式,弱上拉)灌电流可达20mA,拉电流为270~150uA(存在制造误差)
推挽输出:(强上拉输出,可达20mA,要加限流电阻)
高阻输入:(电不能流入也不能流出)
开漏输出:(Open-Drain) ,内部上拉电阻断开正在联网识别并翻译.开漏模式既可读外部状态也可对外输出(高电平或低电平)。  如要正确读外部状态或需要对外输出高电平,需外加上拉电阻,否则读不到外部状态,也对外输不出高电平。

需要注意的是STC8A8K64D4上电后除了P30,P31是准双向口外其余的默认是高阻输入。STC8A8K64S4A12是上电后全是准双向口。

整个芯片的工作电流推荐不要超过70mA,即从Vcc流入的电流建议不要超过70mA,从Gnd流出电流建议不要超过70mA,整体流入/流出电流建议都不要超过70mA。 

想要更详细的可以去参考官方的文档。

使用步骤

我只写了单个IO口模式切换,整组IO模式切换。就放单个IO口模式切换的代码出来就行了,如有有用到,可在自行下载源文件。

//单个IO口模式切换
//参数io:		范围:1~XX(具体看有多少pin脚)	作用:单个IO口号
//参数mod:		范围:0~3					作用:模式	0:准双向口	1:推挽输出	2:高阻输入	3:开漏输出
//例如:P20要切换成推挽输出就是	GPIO_Mod(20,1);		P30要切换成开漏输出就是	GPIO_Mod(30,3);
void GPIO_Mod(unsigned char io,mod)
{
	char ioa=io%10;
	char moda=mod%2;
	char modb=mod/2;
	switch(io/10)
	{
		case 0:
			P0M0=P0M0&((0x00|moda)<<ioa);
			P0M1=P0M1&((0x00|modb)<<ioa);
		break;
		case 1:
			P1M0=P1M0&((0x00|moda)<<ioa);
			P1M1=P1M1&((0x00|modb)<<ioa);
		break;
		case 2:
			P2M0=P2M0&((0x00|moda)<<ioa);
			P2M1=P2M1&((0x00|modb)<<ioa);
		break;
		case 3:
			P3M0=P3M0&((0x00|moda)<<ioa);
			P3M1=P3M1&((0x00|modb)<<ioa);
		break;
		case 4:
			P4M0=P4M0&((0x00|moda)<<ioa);
			P4M1=P4M1&((0x00|modb)<<ioa);
		break;
		case 5:
			P5M0=P5M0&((0x00|moda)<<ioa);
			P5M1=P5M1&((0x00|modb)<<ioa);
		break;
		case 6:
			P6M0=P6M0&((0x00|moda)<<ioa);
			P6M1=P6M1&((0x00|modb)<<ioa);
		break;
		case 7:
			P7M0=P7M0&((0x00|moda)<<ioa);
			P7M1=P7M1&((0x00|modb)<<ioa);
		break;
	}
}

总结

GPIO库模式切换库文件

链接:https://pan.baidu.com/s/1MhEvKRtSboGt0AyVX19v3g?pwd=1234 
提取码:1234

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值