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

如题所述

 

参考程序     

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

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

           

 

 


               

追问

老大可以给个C的程序不?

追答

给加多少分啊? 呵呵

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-07-21
什么啊追问

就是按键控制一个LED的闪烁,没按一次换个LED开关时间,

相似回答