- 打卡等级:以坛为家I
- 打卡总天数:398
- 最近打卡:2025-05-06 08:25:03
已绑定手机
金牌会员
- 积分
- 1191
|
发表于 2024-3-2 14:28:33
|
显示全部楼层
个人猜测,大咖可能是为了提高代码的可阅读性。
根据试验箱的原理图,两行四列按键是由P0的低四位和P0的高两位来控制的,大咖这里用的扫描办法就是先P0=0xF0,再读取P0的高两位(是否因为按键按下而置为0)来定位行,然后再P0=0x0F,在读取P0的低四位(是否因为按键按下而置为0)来定位列。所以在读取P0高两位定位行时,只需分辨P0的高两位是否被置为0即可(所以IO_KeyState1 = P0 & 0xF0),在读取P0低四位定位列时,只需分辨P0的低四位是否被置为0即可(所以IO_KeyState1 |= (P0 & 0xF0)).
所以IO_KeyState1 = P0 & 0xF0是为了更明确告诉我们(或大咖自己),这里是为了定位行,而行信息保存在IO_KeyState1的高四位(查验哪一位是0);所以IO_KeyState1 |= (P0 & 0xF0)是为了更明确告诉我们(或大咖自己),这里是为了定位列,而列信息保存在IO_KeyState1的低四位(查验哪一位是0) |
|