找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 841|回复: 6
打印 上一主题 下一主题
收起左侧

求keil5编程实现一个按钮控制三个灯随机点亮

[复制链接]
跳转到指定楼层
楼主
ID:1074237 发表于 2023-6-12 09:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求keil5编程实现一个按钮控制三个灯随机点亮,求求大家了。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1080935 发表于 2023-6-13 08:39 | 只看该作者
随机函数,将随机数锁定在1到3控制任意一个灯随机点亮,也可以控制在1~7控制任意几个灯亮。
回复

使用道具 举报

板凳
ID:161164 发表于 2023-6-13 11:15 | 只看该作者
  1. #include <reg52.h
  2. typedef         unsigned char        u8;  //0 to 255
  3. typedef         unsigned int        u16;  //0 to 65535
  4. typedef         unsigned long        u32;  //0 to 4294967295
  5. sbit Key_On = P3^2;
  6. sbit Key_Off = P3^3;

  7. void main()
  8. {       
  9.         u8 Rand = 0;
  10.         u16 Delay_XD = 0;
  11.     while (1)
  12.     {
  13.                 if(Key_On == 0 || Key_Off == 0)
  14.                 {
  15.                         if(Delay_XD<0xFFFF)Delay_XD++;
  16.                         if(Delay_XD == 0x029A)
  17.                         {
  18.                                 if(Key_On == 0)
  19.                                         switch (Rand)
  20.                                         {
  21.                                                 case 0:
  22.                                                         P2 = ~(0x01);
  23.                                                         break;
  24.                                                 case 1:
  25.                                                         P2 = ~(0x02);
  26.                                                         break;
  27.                                                 case 2:
  28.                                                         P2 = ~(0x04);
  29.                                                         break;
  30.                                                 default:
  31.                                                         break;
  32.                                         }
  33.                                 if(Key_Off == 0)
  34.                                         P2 = 0xFF;
  35.                         }
  36.                 }else{
  37.                         Delay_XD = 0;
  38.                 }
  39.                 Rand = ++Rand %3;
  40.     }
  41. }
复制代码


回复

使用道具 举报

地板
ID:883242 发表于 2023-6-13 18:39 | 只看该作者
开一个定时器,按键按下读定时器的值,然后模3,结果0/1/2分别对应三个灯即可。
回复

使用道具 举报

5#
ID:1074237 发表于 2023-6-14 08:01 | 只看该作者

这样就行了吗谢谢
回复

使用道具 举报

6#
ID:1074237 发表于 2023-6-14 10:21 | 只看该作者

是用keil5写的吗
回复

使用道具 举报

7#
ID:77589 发表于 2023-6-16 16:08 | 只看该作者
Hephaestus 发表于 2023-6-13 18:39
开一个定时器,按键按下读定时器的值,然后模3,结果0/1/2分别对应三个灯即可。

正解!虽然是伪随机算法,此处已经够了!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表