51单片机一键控制一个LED,每按一下按键LED闪烁一种频率,共闪烁三种频率.别照抄哦,有好的答案加分~~

2024-10-31 07:22:30
推荐回答(2个)
回答1:

 

参考程序     

KEY                 BIT        P1.0

LED                 BIT        P1.7

                       ORG     0000H

                       LJMP      MAIN 

                       ORG     0100H

MAIN:              SETB     LED       ;LED   灭

LL1:                JB          KEY ,     LL1     ;等待按键第一次按下

                        LCALL   YS                   ;延时去抖

                       JB          KEY,LL1           ;按键第一次按下  则往下执行

LL12:              MOV      TMOD,#10H

                       MOV     TH1, # 00H         ;送时间常数较小    定时时间长

                       MOV     TL1,  #1CH                       

                       SETB      TR1

LL13:             JNB         TF1, LL13

                       CLR        TF1

                       CPL         LED               ;低频闪

LL2:                JB           KEY,LL12         ;判断按键第二次按下?

                       LCALL    YS                       ;延时去抖

                       JB           KEY, LL12           ;按键第二次按下  则往下执行 

 

LL22:              MOV      TMOD,#10H

                       MOV     TH1, # 2CH           ;增大时间常数

                       MOV     TL1,  #0FCH                       

LL23:             JNB         TF1, LL23

                       CLR        TF1                       

                       CPL         LED                              ;中频闪 

LL3:                JB           KEY,LL22                      ;判断按键第三次按下? 

                       LCALL    YS                                   ;延时去抖

                       JB           KEY, LL22                      ;按键第三次按下  则往下执行

LL32:              MOV      TMOD,#10H

                       MOV     TH1, # 0ACH                  ;继续增大时间常数

                       MOV     TL1,  #0FCH     

LL33:             JNB         TF1, LL33

                       CLR        TF1                         

                       CPL         LED                          ;高频闪

LL4:                JB           KEY,LL32                  ;判断按键第四次按下?

                       LCALL    YS                              ;延时去抖

                       JB           KEY, LL32                ;按键第四次按下 则停止闪

                       CLR        TR1                          ;停止计时

                       LJMP       MAIN

 

YS:                  MOV      R7,#20         ;延时子程序

YY:                  MOV     R6,#200

YL:                  DJNZ     R6,YL

                       DJNZ     R7,YY

                        RET

              呵呵    按你的要求写的    给加分吗?

           

 

 


               

回答2:

什么啊