前言
I/O口模式
使用步骤
总结
前言
IO本文的目的是简单整合口模式切换IO切换口模式的代码可以在使用时快速使用。材料只是一块STC8A8K64D4核心板。
I/O口模式
I/O简要介绍了简介:
准双向口:(传统8051端口模式,弱上拉)灌溉电流可达20mA,拉电流为270~150uA(存在制造误差) 推拉输出:(强拉输出,可达20mA,加限流电阻) 高阻输入:(电不能流入或流出) 开漏输出:(Open-Drain) ,内部上拉电阻断开正在网上识别和翻译.泄漏模式可读取外部状态或输出外部(高电平或低电平)。 如果要正确读取外部状态或需要输出高电平,则需要添加拉电阻,否则无法读取外部状态或输出高电平。
需要注意的是STC8A8K64D4上电后除了P30,P31准双向口外默认为高阻输入。STC8A8K64S4A上电后全是准双向口。
建议整个芯片的工作电流不超过70mA,即从Vcc建议不要超过70mA,从Gnd建议流出电流不超过700mA,建议整体流入/流出电流不超过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; 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