一、事件背景
1.出于操作IO口的需求,在LED操作例程当中我在官方库当中添加了两个gpio函数;详见基于STC15系列库操作LED灯-CSDN博客;在新的例程中察觉到两个函数操作的局限性,于是将两个函数内容进行相应修改,使其能适应更广泛的场景。
二、函数修改部分说明
1.原函数内容,原函数的局限在于单次只能操作一个引脚,而不能批量操作,对于51单片机常用的流水灯,数码管,点阵等外设操作无法起到简化操作的作用;
//添加置位函数定义
u8 GPIO_PIN_Set(u8 GPIO, u8 GPIO_Pin_x)
{
if(GPIO > GPIO_P5) return 1; //空操作
if(GPIO_Pin_x > GPIO_Pin_7) return 2; //空操作
if(GPIO == GPIO_P0)
{
if(GPIO_Pin_x == GPIO_Pin_0) P00 = 1;
if(GPIO_Pin_x == GPIO_Pin_1) P01 = 1;
if(GPIO_Pin_x == GPIO_Pin_2) P02 = 1;
if(GPIO_Pin_x == GPIO_Pin_3) P03 = 1;
if(GPIO_Pin_x == GPIO_Pin_4) P04 = 1;
if(GPIO_Pin_x == GPIO_Pin_5) P05 = 1;
if(GPIO_Pin_x == GPIO_Pin_6) P06 = 1;
if(GPIO_Pin_x == GPIO_Pin_7) P07 = 1;
}
else if(GPIO == GPIO_P1)
{
if(GPIO_Pin_x == GPIO_Pin_0) P10 = 1;
if(GPIO_Pin_x == GPIO_Pin_1) P11 = 1;
if(GPIO_Pin_x == GPIO_Pin_2) P12 = 1;
if(GPIO_Pin_x == GPIO_Pin_3) P13 = 1;
if(GPIO_Pin_x == GPIO_Pin_4) P14 = 1;
if(GPIO_Pin_x == GPIO_Pin_5) P15 = 1;
if(GPIO_Pin_x == GPIO_Pin_6) P16 = 1;
if(GPIO_Pin_x == GPIO_Pin_7) P17 = 1;
}
else if(GPIO == GPIO_P2)
{
if(GPIO_Pin_x == GPIO_Pin_0) P20 = 1;
if(GPIO_Pin_x == GPIO_Pin_1) P21 = 1;
if(GPIO_Pin_x == GPIO_Pin_2) P22 = 1;