61单片机项目 - 使用C语言实现A口作为输入口、B口作为输出口

实现功能:IOA低八位端口作为按键输入口,IOB低八位端口作为输出口,控制8个发光二极管,实现键控LED灯(发光二极管)的显示。

实验现象:不同的发光二极管点亮表示有不同的键按下。当第一个按键按下时,第一个发光二极管点亮,第i(1≤i≤8)个按键按下时,第i(1≤i≤8)个发光二极管点亮。

拓展:A口作为输出、B口作为输入,其他要求同上。

这里大家尤其注意上拉电阻输入以及下拉电阻输入的区别,上拉电阻输入大家可以理解为IO口出为高电压,那么要输入信息必须是使输入口出现低电平,那么就会导致IO口的电压减少,从而检查出信号

而下拉电阻则是接地,接地大家都知道,那么该IO口为负极,想一想,为负极的话,如果提供给他负极肯定没有用因为都是负极,那么我们需要提供给他正极,让他带上正电荷,那么就可以检测出信息了。

#include "SPCE061A.H"
#define uint unsigned int
#define uchar unsigned char
uint GetKeys(void);
int main(void)
{
    uint Keys;
    *P_IOB_Dir = 0x00ff;//IOB低电平输出
    *P_IOB_Attrib = 0x00ff;
    *P_IOB_Data = 0x0000;
    *P_IOA_Dir = 0x0000;//IOA上拉电阻输入
    *P_IOA_Attrib = 0x0000;
    *P_IOA_Data = 0x00ff;
    while(1)
    {
        Keys = GetKeys();
        if(Keys != 0x0000)
        {
            *P_IOB_Data = Keys;
        }
        *P_Watchdog_Clear = C_WDTCLR;
    }
    return 0;
}


uint GetKeys()
{
    uint nKeys;
    nKeys = *P_IOA_Data;
    nKeys = ~nKeys;
    nKeys &= 0x00ff;
    return nKeys;
}


你可能感兴趣的:(61单片机项目 - 使用C语言实现A口作为输入口、B口作为输出口)