在上一篇里面笔者给大家介绍了控制板的输出,这一篇里,笔者要给大家介绍用板子的输入来点动控制输出。所谓点动,顾名思意,就是当有输入信号的时候输出一个信号,当无输入信号的时候,关闭该输出信号。
还是先来看下输入口的分布吧:
根据硬件上的IO分布,我们就可以来配置输入口的模式了:
/**************** IO口配置 ******************/
void GPIO_config(void)
{
GPIO_InitTypeDef GPIO_InitStructure; //结构定义
//P12-17口设置为准双向口
GPIO_InitStructure.Pin = GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7; //指定要初始化的IO, GPIO_Pin_0 ~ GPIO_Pin_7, 或操作
GPIO_InitStructure.Mode = GPIO_PullUp; //指定IO的输入或输出方式,GPIO_PullUp,GPIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PP
GPIO_Inilize(GPIO_P1,&GPIO_InitStructure); //初始化
//P54-55口设置为准双向口
GPIO_InitStructure.Pin = GPIO_Pin_4|GPIO_Pin_5; //指定要初始化的IO, GPIO_Pin_0 ~ GPIO_Pin_7, 或操作
GPIO_InitStructure.Mode = GPIO_PullUp; //指定IO的输入或输出方式,GPIO_PullUp,GPIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PP
GPIO_Inilize(GPIO_P5,&GPIO_InitStructure); //初始化
}
同样,为了控制方便,我们也定义了8个输入变量:
sbit IN00 = P1^2;
sbit IN01 = P1^3;
sbit IN02 = P1^4;
sbit IN03 = P1^5;
sbit IN04 = P1^6;
sbit IN05 = P1^7;
sbit IN06 = P5^4;
sbit IN07 = P5^5;
配置完毕后,我们就可以来写控制逻辑了:
void main(void)
{
OUT00 = 0;
OUT01 = 0;
OUT02 = 0;
OUT03 = 0;
OUT04 = 0;
OUT05 = 0;
GPIO_config(); //GPIO配置
while(1)
{
if((!IN00)||(!IN06))OUT00=1;else OUT00=0;
if((!IN01)||(!IN07))OUT01=1;else OUT01=0;
if(!IN02)OUT02=1;else OUT02=0;
if(!IN03)OUT03=1;else OUT03=0;
if(!IN04)OUT04=1;else OUT04=0;
if(!IN05)OUT05=1;else OUT05=0;
}
}
这里需要说明一下,由于板子有8个输入口,而只有6个输出口,所以为了测试所有的输入输出均能正常工作,所以两个输入共用了同一个输出。接下来还是给大家分享一下运行效果吧,源代码见附件:
源代码: