c语言 不同的io口组成数组,51单片机不同的IO口如何组成类似数组的形式

本文介绍了使用C语言在51单片机上实现按键数组的循环扫描和消抖处理。通过定义宏来读取、设置和清除IO口,并通过时间计数进行消抖滤波。代码包括按键初始化函数和按键状态判断逻辑。

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

这是我修改后的代码,实现了十二个按键的循环扫描,试运行了下基本逻辑是对的,希望大家帮我看看有什么需要改进的,初学者还有很多不懂的。

#include

#define bitRead(Y,X) ( ~Y & (1 << (X-1)) )                                                   // 读取 Y 的X位,其他位屏蔽为0,Y的X位为0则X位置为1,否则置位0

#define bitSet(Y,X) Y |= (1 << (X-1))                // Y的X位置1

#define bitClear(Y,X) Y &= ~(1 << (X-1))              // Y的X位置0

#define Merge_key         ((P2>>4&0x08)|(P2&0x07))<<8|P3                 //16位从高位到低位排序位:0 0 0 0 / P2.7        P2.2        P2.1        P2.0        /        P3.7        P3.6        P3.5        P3.4        /        P3.3        P3.2        P3.1        P3.0

/*------------------------------------------------

函数名称:  KEY_Initialise()

函数功能:         按键初始化

入口参数:

出口参数:         无

备 注:

-----------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值