标题: 求keil5编程实现一个按钮控制三个灯随机点亮 [打印本页]

作者: shjjjj    时间: 2023-6-12 09:24
标题: 求keil5编程实现一个按钮控制三个灯随机点亮
求keil5编程实现一个按钮控制三个灯随机点亮,求求大家了。

作者: LaoYuTou    时间: 2023-6-13 08:39
随机函数,将随机数锁定在1到3控制任意一个灯随机点亮,也可以控制在1~7控制任意几个灯亮。
作者: lkc8210    时间: 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. }
复制代码



作者: Hephaestus    时间: 2023-6-13 18:39
开一个定时器,按键按下读定时器的值,然后模3,结果0/1/2分别对应三个灯即可。
作者: shjjjj    时间: 2023-6-14 08:01
lkc8210 发表于 2023-6-13 11:15

这样就行了吗谢谢
作者: shjjjj    时间: 2023-6-14 10:21
lkc8210 发表于 2023-6-13 11:15

是用keil5写的吗
作者: Longan.Wang    时间: 2023-6-16 16:08
Hephaestus 发表于 2023-6-13 18:39
开一个定时器,按键按下读定时器的值,然后模3,结果0/1/2分别对应三个灯即可。

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




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1