完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
//作者;【周平DIY 开发】 //时间;2014年、5月;15日。 #include ***it OUT1 = P2 ^ 1; ***it k1 = p3 ^ 2; ***it k3 = p3 ^ 3; void delay(unsigned int i); //声明延时函数 void delay(unsigned int i) { unsigned char j; for(i; i > 0; i--) for(j = 155; j > 0; j--); } main() { 求高手解答; 我想要加两个控制按键进来不知怎么样实现它!!! 最终的效果就是;当两个按键没有任何动作时,单片机就默认执行【第二段程序】。当按下按键K1时就执行【第一段程序】,松开后回到默认的程序 , 循环执行默认的程序。 当按下k3时执行【第三段程序】,松开回到默认的程序,循环执行默认的程序。 如能帮忙解答,小弟在此跪谢啦!!! 这是第一段【 OUT1 = 0 ; delay(1500); // 延时 超低频阶段!!! OUT1 = 1 ; delay(1500); // 】 这是第二段,默认段也是初始段【 OUT1 = 0 ; delay(200); // 延时 中频阶段!!! OUT1 = 1 ; delay(500); // 延时 】 第三段 【 OUT1 = 0 ; delay(120); // 延时 高频阶段!!! OUT1 = 1 ; delay(350); // 延时 OUT1 = 1 ; delay(2500); // 延时 主频! }】 |
|
相关推荐
3个回答
|
|
#include
#define uchar unsigned char #define uint unsigned int /* 函数申明 -----------------------------------------------*/ void delay(uint i); /* 变量定义 ----------------------------------------------*/ ***it OUT1 = P1 ^ 0; ***it key1 = P3 ^ 2; ***it key3= P3 ^ 3; /* ******************************************************************************** ** 函数名称 : main(void) ** 函数功能 : 主函数 ******************************************************************************** */ void main() { while(1) //无限扫描 { if(key1==0) { delay(5); //消抖动 if(key1==0) //确认按键被按下 { OUT1 = 0 ; delay(1500); // 延时 超低频阶段!!! OUT1 = 1 ; delay(1500); } } if(key3==0) { delay(5); //消抖动 if(key3==0) //确认按键被按下 { OUT1 = 0 ; delay(120); // 延时 高频阶段!!! OUT1 = 1 ; delay(350); // 延时 OUT1 = 1 ; delay(2500); // 延时 } } if(key1==1&key3==1) { delay(5); //消抖动 if(key1==1&key3==1) { OUT1 = 0 ; delay(200); // 延时 中频阶段!!! OUT1 = 1 ; delay(500); // 延时 } } delay(10); } } /* ******************************************************************************** ** 函数名称 : delay(uint i) ** 函数功能 : 延时函数 ******************************************************************************** */ void delay(uint i) { unsigned char j; for(i; i > 0; i--) for(j = 155; j > 0; j--); }
最佳答案
|
|
1 条评论
|
|
unsigned char Key_Code;
uchar Key_Scan(void) { unsigned char ucValue = 0; if(k1 == 0) { ucValue |= 0x01; } if(k3 == 0) { ucValue |= 0x02; } if(Key_Code != ucValue) { Key_Code = ucValue; return 0; } return 1; } void Key_Function(void) { if(Key_Scan()) { switch(Key_Code) { case 0: //无按键程序 break; case 0x01: //按键1处理 break; case 0x02: //按键2处理 break; } } delay(10); } |
|
1 条评论
|
|
高手谢谢您啊,感谢万飞感谢!!!!!! |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
298 浏览 1 评论
《DNESP32S3使用指南-IDF版_V1.6》第二十六章 INFRARED_RECEPTION实验
309 浏览 0 评论
826 浏览 0 评论
求助一下关于51系列单片机的Timer0的计时问题,TH0、TL0+1的时间是怎么算的?
1911 浏览 2 评论
【RA-Eco-RA4E2-64PIN-V1.0开发板试用】开箱+Keil环境搭建+点灯+点亮OLED
1427 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12031 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-25 05:09 , Processed in 0.639415 second(s), Total 79, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号