普中开源电子分享网

 找回密码
 立即注册
搜索
查看: 2714|回复: 5

求助

[复制链接]

5

主题

6

帖子

26

积分

新手上路

Rank: 1

积分
26
发表于 2021-8-22 08:28:50 | 显示全部楼层 |阅读模式
谁会写用两个按键分别控制led分三次加快和减慢的程序,帮帮忙了,拜托了
回复

使用道具 举报

5

主题

6

帖子

26

积分

新手上路

Rank: 1

积分
26
 楼主| 发表于 2021-8-26 16:38:30 | 显示全部楼层
可以帮忙写一下吗
回复 支持 反对

使用道具 举报

3

主题

23

帖子

185

积分

注册会员

Rank: 2

积分
185
发表于 2021-8-27 16:07:00 | 显示全部楼层
  1. #include "reg52.h"                         
  2. #define u16 unsigned int
  3. #define u8 unsigned char
  4. sbit led=P2^6;
  5. sbit k1=P3^1;
  6. sbit k2=P3^0;
  7. u8 t=8,flag=0,timer0=0;
  8. void Timer0Init()
  9. {
  10.         TMOD|=0X01;//选择为定时器模0式,工作方式1,仅用TR0打开启动。
  11.     TH0 = 0xd8;        //配置10ms定时
  12.         TL0 = 0xf0;
  13.         TR0 = 1;       
  14.         ET0 = 1;        //打开定时器中断
  15.         EA = 1;         //打开总中断                       
  16. }
  17. void delay(u16 i)
  18. {
  19.         while(i--);       
  20. }
  21. void keypros()
  22. {
  23.         if(k1==0&&flag==0)                  //检测按键K1是否按下
  24.         {       
  25.                 delay(100);   //消除抖动 一般大约1ms
  26.                 if(k1==0)         //再次判断按键是否按下
  27.                 {
  28.                         t=4;         //亮40ms灭40ms
  29.                         flag=1;          
  30.                 }
  31.                 while(!k1);         //检测按键是否松开
  32.         }
  33.         else if(k1==0&&flag==1)
  34.         {       
  35.                 delay(100);   //消除抖动 一般大约1ms
  36.                 if(k1==0)         //再次判断按键是否按下
  37.                 {
  38.                         t=2;         //亮20ms灭20ms
  39.                         flag=2;          
  40.                 }
  41.                 while(!k1);         //检测按键是否松开
  42.         }
  43.         else if(k2==0&&flag==2)
  44.         {       
  45.                 delay(100);   //消除抖动 一般大约1ms
  46.                 if(k2==0)         //再次判断按键是否按下
  47.                 {
  48.                         t=4;          //亮40ms灭40ms
  49.                         flag=1;         
  50.                 }
  51.                 while(!k2);         //检测按键是否松开
  52.         }
  53.         else if(k2==0&&flag==1)
  54.         {       
  55.                 delay(100);   //消除抖动 一般大约1ms
  56.                 if(k2==0)         //再次判断按键是否按下
  57.                 {
  58.                         t=8;         //亮80ms灭80ms
  59.                         flag=0;         
  60.                 }
  61.                 while(!k2);         //检测按键是否松开
  62.         }               
  63. }

  64. void main()
  65. {
  66.                   Timer0Init();
  67.          
  68.                   while(1) {
  69.                                          keypros();
  70.                                    }

  71. }
  72. void time0(void) interrupt 1
  73. {
  74.         TH0 = 0xd8;        //配置10ms定时
  75.         TL0 = 0xf0;
  76.         timer0++;        //timer0开始计数,每10毫秒加一
  77.                    if(timer0>t)  
  78.                 {
  79.                         timer0=0;
  80.                         led=~led;
  81.                 }
  82. }
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|手机版|小黑屋|普中开源电子分享网 粤ICP备16123577号-2

GMT+8, 2024-4-20 17:15 , Processed in 0.083725 second(s), 33 queries .

Powered by 论坛搭建 X3.4

Copyright © 2001-2021, Tencent Cloud.

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