完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
程序一只要按着不放 LED灯会一直移位 程序2则按一下只移动一位 原因在哪里 两个程序哪个更好?程序二中间????的地方为什么又重复一遍,大侠指点
程序一 #include #include ***it K1=P0^0; ***it K2=P0^1; void delay(unsigned int i); main() { unsigned char LED; LED=0xfe; P2=LED; while(1) { if(K1==0) { if(P2==0x7f) { LED=0xfe; P2=LED; delay(300); } else { LED=LED << 1; LED=LED | 0x01; P2=LED; delay(250); } } if(K2==0) { if(P2==0xfe) { LED=0x7f; P2=LED; delay(300); } else { LED=LED>>1; LED=LED | 0x80; P2=LED; delay(250); } } } } /*******延时函数*************/ void delay(unsigned int i) { unsigned char j; for(i; i > 0; i--) for(j = 255; j > 0; j--); } 程序二 #include #include unsigned char scan_key(); void proc_key(unsigned char key_v); void delayms(unsigned char ms); ***it K1 = P0^0; //对应按钮K1 ***it K2 = P0^1; //对应按钮K2 main() { unsigned char key_s,key_v; key_v = 0x03; P2 = 0xfe; while(1) { key_s = scan_key(); if(key_s != key_v)//等于时都K1K2都没按下 都按下为0x00 { delayms(10); key_s = scan_key();//???? if(key_s != key_v) //???? { key_v = key_s; proc_key(key_v); } } } } unsigned char scan_key() //这个子函数的功能是什么 ? 检验按键情况 0x01 为K2按下 0x10 为K1按下 { unsigned char key_s; key_s = 0x00; key_s |= K2; key_s <<= 1; key_s |= K1; return key_s; } void proc_key(unsigned char key_v) // 这个子函数作用是根据按键选择移位。 { if((key_v & 0x01) == 0) //K1按下 右移 { P2 = _cror_(P2,1); } else if((key_v & 0x02) == 0) // K2 按下左移 { P2 = _crol_(P2, 1); } } void delayms(unsigned char ms) // 延时子程序 { unsigned char i; while(ms--) { for(i = 0; i < 120; i++); } } |
|
相关推荐
3个回答
|
|
程序一只要按着不放 LED灯会一直移位 程序2则按一下只移动一位 原因在哪里 答:在程序一中,
if(K1==0) { if(P2==0x7f) { LED=0xfe; P2=LED; delay(300); } 如果按键按下将P2口 0111 1111 重新赋予初值 1111 1110 让其重新依次点亮8个 然后重复重新赋予初值。 两个程序哪个更好? 答;2个程序都有各自的用途不能用 那个更好来比较。 程序二中间????的地方为什么又重复一遍? 答: 这是软件消抖的常用方法。 二次采样判断 |
|
|
|
新手分析 ,赐教!
|
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-spi编程示例之spi编写程序
575 浏览 0 评论
《DNK210使用指南 -CanMV版 V1.0》第三十七章 image图像对比实验
554 浏览 0 评论
500 浏览 1 评论
482 浏览 0 评论
关于RT-Thread studio添加freemodbus控件失败的问题
817 浏览 1 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11645 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-9 01:33 , Processed in 0.665618 second(s), Total 76, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号