完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
这是一个例程代码,注释里的是我写的和代码不一样的地方,我想知道注释的那几行原例程的写法有什么意义?
unsigned char KeyScan(void) { unsigned char cord_h,cord_l; KeyPort = 0x0f; cord_h = KeyPort&0x0f; // cord_h = 0x0f; if (cord_h != 0x0f) // if (KeyPort != 0x0f); { DelayMs(10); if ((KeyPort & 0x0f) != 0x0f) // if (KeyPort != 0x0f); { cord_h = KeyPort & 0x0f; KeyPort = cord_h | 0xf0; // KeyPort = 0xf0; cord_l = KeyPort & 0xf0; while((KeyPort&0xf0)!=0xf0); // while (KeyPort != 0xf0); return(cord_h+cord_l); } }return(0xff); } 目前我对 KeyPort&0x0f 的猜测是:编译器会对代码进行优化,程序读取KeyPort的值会从寄存器读取而不是读取IO口,因此用 KeyPort&0x0f 能够避免寄存器被意外修改的情况???是这样吗? 那么 例程用KeyPort = cord_h | 0xf0 而不是 KeyPort = 0xf0 是什么原因呢? |
|
相关推荐
1个回答
|
|
直接从网下载一个现成的扫描函数不就行了,这种常规的操作不要再自己去研究了,浪费时间
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
479 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-内核编译之初次编译
229 浏览 0 评论
334 浏览 0 评论
165 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》 第十六章 WATCH_DOG实验
496 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11972 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-19 17:15 , Processed in 1.015292 second(s), Total 73, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号