每一个按键对应一个led灯,实现独立开关灯。
源程序:
** #include #define uint unsigned int #define uchar unsigned char //定义按键端口 sbit key1 = P1^0;//定义按键端口1 sbit key2 = P1^1; sbit key3 = P1^2; sbit key4 = P1^3;//定义按键端口4 sbit key5 = P1^4; sbit key6 = P1^5; sbit key7 = P1^6; sbit key8 = P1^7; sbit led1 = P2^0; //定义LED灯1 sbit led2 = P2^1; sbit led3 = P2^2; sbit led4 = P2^3; //定义LED灯4 sbit led5 = P2^4; sbit led6 = P2^5; sbit led7 = P2^6; sbit led8 = P2^7; //延时函数声明 void delay(uint xms); //程序入口 void main(){undefined while(1){undefined //第一次判断 if(key1 == 0){undefined //延时20ms 消除抖动 delay(20); //第二次判断 List item if(key1 == 0){undefined led1 = ~led1;// 灯亮 } while(!key1); //当按键未松开时,key为0,执行该死循环。 //等待按键被松开 } if(key2 == 0){undefined //延时20ms 消除抖动 delay(20); //第二次判断 if(key2 == 0){undefined led2 = ~led2; //灯亮 } //等待按键被松开 while(!key2); //当按键未松开时,key为0,执行该死循环。 } if(key3 == 0){undefined //延时20ms 消除抖动 delay(20); //第二次判断 if(key3 == 0){undefined //灯亮 led3 = ~led3; } //等待按键被松开 while(!key3); //当按键未松开时,key为0,执行该死循环。 } if(key4 == 0){undefined //延时20ms 消除抖动 delay(20); //第二次判断 if(key4 == 0){undefined led4 = ~led4;// 灯亮 } while(!key4); //当按键未松开时,key为0,执行该死循环。 //等待按键被松开 } if(key5 == 0){undefined //延时20ms 消除抖动 delay(20); //第二次判断 if(key5 == 0){undefined led5 = ~led5; //灯亮 } //等待按键被松开 while(!key5); //当按键未松开时,key为0,执行该死循环。 } if(key6 == 0){undefined //延时20ms 消除抖动 delay(20); //第二次判断 if(key6 == 0){undefined //灯亮 led6 = ~led6; } //等待按键被松开 while(!key6); //当按键未松开时,key为0,执行该死循环。 } if(key7 == 0){undefined //延时20ms 消除抖动 delay(20); //第二次判断 if(key7 == 0){undefined led7 = ~led7; //灯亮 } //等待按键被松开 while(!key7); //当按键未松开时,key为0,执行该死循环。 } if(key8 == 0){undefined //延时20ms 消除抖动 delay(20); //第二次判断 if(key8 == 0){undefined //灯亮 led8 = ~led8; } //等待按键被松开 while(!key8); //当按键未松开时,key为0,执行该死循环。 } } } void delay(uint xms) {undefined uint i,j; for(i = 0; i }
上一篇:小白自学c51笔记之流水灯
下一篇:51单片机单键开关
推荐阅读最新更新时间:2024-11-11 11:28
推荐帖子
- 香山 高性能 RISC-V 处理器
- 香山是一款开源的高性能RISC-V处理器,基于Chisel硬件设计语言实现,支持RV64GC指令集。在香山处理器的开发过程中,其团队使用了包括Chisel、Verilator等在内的大量开源工具,实现了差分验证、仿真快照、RISC-V检查点等处理器开发的基础工具,建立起了一套包含设计、实现、验证等在内的基于开源工具的处理器前端敏捷开发流程。香山的架构代号以湖命名。第一版架构代号是雁栖湖,微架构如下图所示:源码下载https://gitee
- 火辣西米秀 国产芯片交流
- 关于用UT-450制作TCP/IP转RS232/RS485/RS422问题
- 我想用UT-45010/100MTCP/IP到串口网桥模块做成TCP/IP转RS232/RS485/RS422的converter,ut-450为ttl输出,我利用max232转换为串口rs232,请大家帮忙讨论怎么实现UT-450的TTL输出转换为RS485/422串口,还要接RJ-45,谁能提供点资料,电路图等,欢迎大家讨论,分不多,全部奉送。关于用UT-450制作TCP/IP转RS232/RS485/RS422问题我也想要
- ljsvws 嵌入式系统
- 请大家说说串口在线升级的方法
- 请大家有相关经验或者认识的说说串口在线升级的方法,大概有哪些思路?主要是如何固定一些不需要升级的文件,如何将非升级文件与升级文件在FLASH中分区存放?请大家说说串口在线升级的方法看你用什么编译器。可以在编译器里设置ISP复位程序的位置。升级程序的时候ISP复位程序部分不要擦除。
- glkos 嵌入式系统
- 如何将1块钱购买开发板做到极致?
- 管管,听说1块钱购买开发板活动最近很火呢是的,给你链接,可以看看这阅读量哇https://bbs.eeworld.com.cn/thread-1233674-1-1.html但是购买时候我就犯难了,挑来选去不知从何下手啊来来来~管管再给你露一手!看我这波操作~NO.1EV2013A-J-Q-G-00A+5个MP2322合计300.12元eeworld下单返现后等于花了0.12元推荐开发板:EV2
- EEWORLD社区 电源技术
- 基于MC9S12DP256的轿车ABS/ASR集成控制系统
- ygugy 移动便携
- 《CMake构建实战》CMake 构建目标和属性
- #CMake构建目标和属性##二进制构建目标在构建过程中被构建的可执行文件、库文件或目标文件都可以作为二进制构建目标。###可执行文件目标```cmakeadd_executable()```该命令会创建一个可执行文件类型的构建目标,其中第一个参数是必选参数,且应当在项目中唯一。创建一个小工程实践一下。创建`008`文件夹创建`CMakeLists.txt````cmakecmake_minimum_required(VERSI
- 小麦克 嵌入式系统