性无码一区二区三区在线观看,少妇被爽到高潮在线观看,午夜精品一区二区三区,无码中文字幕人妻在线一区二区三区,无码精品国产一区二区三区免费

  • 回復(fù)
  • 收藏
  • 點(diǎn)贊
  • 分享
  • 發(fā)新帖

遙控 按鍵控制(C51單片機(jī))三源色LED源程序


此電路軟/硬件的功能是51單片機(jī)輸出PWM信號(hào)驅(qū)動(dòng)三源色LED的,用紅外遙控或
或按鍵(電路圖按鍵未畫(huà)出)控制三源色LED的運(yùn)行狀態(tài).但此電路在按遙控單片機(jī)解碼時(shí)LED有輕微閃爍,特別是在LED漸滅時(shí),請(qǐng)各位針對(duì)此現(xiàn)象給予改良或講改軟件的思路!!!!多謝了!!!

;紅外接P1.3(INT1)/P1.4(T0);     P1.5(T1)接按鍵    
;P1.7(綠);P1.6(紅);P1.5(藍(lán))   P1.4/P1.3/P1.2接LED
RRR BIT P1.5;藍(lán)
BBB BIT P1.6;紅
GGG BIT P1.7;綠

;計(jì)數(shù)器
COUNTER   EQU 23H
COUNTER1  EQU 24H

LDBS      EQU 27H;亮燈標(biāo)志寄存器
T28       EQU 28H

ORG 0000H
AJMP START
ORG 0BH
AJMP TOO
RETI
ORG 013H
AJMP INT0123
RETI
NOP
NOP
AJMP START

;初始化
CUSU:MOV P1,#00
MOV P3,#0FFH
MOV TMOD,#10B
MOV TH0,#20;236
SETB PT0
SETB EA
SETB EX1
SETB IT1
SETB ET0;調(diào)用初始化
MOV 38H,#1;37H與38H是設(shè)置輸出PWM可變周期及比例.
MOV 39H,#250
MOV 40H,#250;39H給最大時(shí)返回值.
RET




;主程序開(kāi)始++++++++++++++++++++++++++++++++
START:ACALL CUSU
      ACALL BBBH;          調(diào)用紅漸亮
      SETB  BBB ;     紅亮
      ACALL DELAY2
      ACALL GGGH ;         調(diào)用綠漸亮
      SETB  BBB;      紅亮
      SETB  GGG;      綠亮
      ACALL DELAY2
START1:ACALL RRRHBBBGGGL;  調(diào)用藍(lán)漸亮/紅綠漸滅
      SETB  RRR;      藍(lán)亮
      CLR   BBB;      紅滅
      CLR   GGG;      綠滅
      ACALL DELAY2
      ACALL BBBGGGH;       調(diào)用紅綠漸亮
      SETB  BBB;      紅亮
      SETB  GGG;      綠亮
      ACALL DELAY2
      ACALL BBBRRRL;       調(diào)用紅藍(lán)漸滅
      CLR   BBB;      紅滅
      CLR   RRR;      藍(lán)滅
      ACALL DELAY2
      ACALL BBBHGGGL;      調(diào)用紅漸亮/綠漸滅 55555  
      SETB  BBB;      紅亮
      CLR   GGG;      綠滅
       ACALL DELAY2
      ACALL GGGH;         調(diào)用綠漸亮      
      SETB  GGG;      綠亮
       ACALL DELAY2
      ACALL RRRHBBBGGGL;   調(diào)用藍(lán)漸亮/紅綠漸滅
      SETB  RRR;      藍(lán)亮
      CLR   BBB;      紅滅
      CLR   GGG;      綠滅
       ACALL DELAY2
      ACALL BBBGGGH;       調(diào)用紅綠漸亮
      SETB  BBB;      紅亮
      SETB  GGG;      綠亮
       ACALL DELAY2
      ACALL BBBRRRL;       調(diào)用紅藍(lán)漸滅
      CLR   BBB;      紅滅  
      CLR   RRR;      藍(lán)滅
       ACALL DELAY2
      ACALL BBBHGGGL;      調(diào)用紅漸亮/綠漸滅*
      SETB  BBB;      紅亮
      CLR   GGG;      綠滅
       ACALL DELAY2
      ACALL GGGH;          調(diào)用綠漸亮  
      SETB  GGG;      綠亮
       ACALL DELAY2
      AJMP START1;轉(zhuǎn)移循環(huán)
;主程序到此結(jié)束+++++++++++++++++++++++++++++++++++++++      
    





;以下被調(diào)用程序++++++++++++++++++++++++++++++++++++        

; 紅漸亮
BBBH: MOV LDBS,#0;作標(biāo)志,為了在按鍵或中斷解碼時(shí)繼續(xù)調(diào)用順序運(yùn)行程序
      MOV  COUNTER,38H
      MOV  COUNTER1,39H    
BBBH1: mov 10h,#1
j1:     MOV 26H,#40
BBBH2:ACALL BBBH4
      ACALL INTI;調(diào)用掃描按鍵*****************
      JB 01H,BBBH2;查標(biāo)志01h為0順序進(jìn)行,為1則不變循環(huán)
      DJNZ  26H,BBBH2
      djnz 10h,j1
      INC   COUNTER
      DEC   COUNTER1
      MOV  A,COUNTER
      CJNE A,40H,BBBH3
BBBH3:JC   BBBH1
      MOV LDBS,#7
      RET

;綠漸亮
GGGH: MOV  LDBS,#1;作標(biāo)志,為了在按鍵或中斷解碼時(shí)繼續(xù)調(diào)用順序運(yùn)行程序
      MOV  COUNTER,38H
      MOV  COUNTER1,39H  
GGGH1:mov 10h,#1
j2:   MOV  26H,#40
GGGH2:ACALL GGGH4
      ACALL INTI;*****************
      JB 01H,GGGH2
      DJNZ  26H,GGGH2
      djnz 10h,j2
      INC   COUNTER
      DEC   COUNTER1
      MOV  A,COUNTER
      CJNE A,40H,GGGH3
GGGH3:JC   GGGH1
  MOV LDBS,#7
      RET

;  藍(lán)漸亮/紅綠漸滅
RRRHBBBGGGL: MOV  LDBS,#2;作標(biāo)志,為了在按鍵或中斷解碼時(shí)繼續(xù)調(diào)用順序運(yùn)行程序
             MOV  COUNTER,38H
             MOV  COUNTER1,39H  
RRRHBBBGGGL1:mov 10h,#1
j3:            MOV  26H,#40
RRRHBBBGGGL2: ACALL RRRHBBBGGGL4
              ACALL INTI;*****************
             JB 01H,RRRHBBBGGGL2  
             DJNZ  26H,RRRHBBBGGGL2  
        djnz 10h,j3
             INC   COUNTER
             DEC   COUNTER1
             MOV  A,COUNTER
             CJNE A,40H,RRRHBBBGGGL3
RRRHBBBGGGL3:JC   RRRHBBBGGGL1
  MOV LDBS,#7
            RET

;紅綠漸亮
BBBGGGH:  MOV  LDBS,#3;作標(biāo)志,為了在按鍵或中斷解碼時(shí)繼續(xù)調(diào)用順序運(yùn)行程序
          MOV  COUNTER,38H
          MOV  COUNTER1,39H    
BBBGGGH1:mov 10h,#1
j4:         MOV  26H,#40
BBBGGGH2: ACALL BBBGGGH4
           ACALL INTI;*****************
             JB 01H,BBBGGGH2
          DJNZ  26H,BBBGGGH2
          djnz 10h,j4
          INC   COUNTER
          DEC   COUNTER1
          MOV  A,COUNTER
          CJNE A,40H,BBBGGGH3
BBBGGGH3: JC   BBBGGGH1
  MOV LDBS,#7
          RET

;      紅藍(lán)漸滅
BBBRRRL:  MOV  LDBS,#4;作標(biāo)志,為了在按鍵或中斷解碼時(shí)繼續(xù)調(diào)用順序運(yùn)行程序
          MOV  COUNTER,38H
          MOV  COUNTER1,39H  
BBBRRRL1:mov 10h,#1
j5:         MOV 26H,#40
BBBRRRL2: ACALL BBBRRRL4
           ACALL INTI;*****************
             JB 01H,BBBRRRL2
          DJNZ  26H,BBBRRRL2
          djnz 10h,j5
          INC   COUNTER
          DEC   COUNTER1
          MOV  A,COUNTER
          CJNE A,40H,BBBRRRL3
BBBRRRL3: JC   BBBRRRL1
          MOV LDBS,#7
          RET

;      紅漸亮/藍(lán)漸滅
BBBHRRRL:  MOV  LDBS,#5;作標(biāo)志,為了在按鍵或中斷解碼時(shí)繼續(xù)調(diào)用順序運(yùn)行程序
          MOV  COUNTER,38H
          MOV  COUNTER1,39H  
BBBHRRRL1:mov 10h,#1
j6:        MOV  26H,#40
BBBHRRRL2: ACALL BBBHRRRL4
           ACALL INTI;*****************
           JB 01H,BBBRRRL2
          DJNZ  26H,BBBHRRRL2
          djnz 10h,j6
          INC   COUNTER
          DEC   COUNTER1
          MOV  A,COUNTER
          CJNE A,40H,BBBHGGGL3
BBBHRRRL3: JC   BBBHRRRL1
  MOV LDBS,#7
          RET

;      紅漸亮/綠漸滅
BBBHGGGL: MOV  LDBS,#6;作標(biāo)志,為了在按鍵或中斷解碼時(shí)繼續(xù)調(diào)用順序運(yùn)行程序
          MOV  COUNTER,38H
          MOV  COUNTER1,39H    
BBBHGGGL1: mov 10h,#1
j7:          MOV  26H,#40
BBBHGGGL2: ACALL BBBHGGGL4
          JB 01H,BBBHGGGL2
          DJNZ  26H,BBBHGGGL2
          djnz 10h,j7
          INC   COUNTER
          DEC   COUNTER1
          MOV  A,COUNTER
          CJNE A,40H,BBBHGGGL3
BBBHGGGL3: JC   BBBHGGGL1
          MOV LDBS,#7
          RET

;***************************************************************
BBBHGGGL4:  SETB  BBB   ;紅漸亮/綠漸滅
            CLR  GGG        
            ACALL DELAY
            CLR  BBB
            SETB  GGG
            ACALL DELAY1
            RET

BBBHRRRL4:SETB  BBB        ;紅漸亮/藍(lán)漸滅
CLR  RRR        
         ACALL DELAY
         CLR   BBB          
         SETB  RRR      
         ACALL DELAY1
         RET                  

BBBRRRL4:CLR  BBB        ;紅藍(lán)漸滅
CLR  RRR          
         ACALL DELAY
         SETB BBB          
         SETB RRR        
         ACALL DELAY1
         RET                

BBBGGGH4:SETB BBB          ;紅綠漸亮
         SETB GGG
         ACALL DELAY
         CLR  BBB
CLR  GGG        
         ACALL DELAY1
         RET

RRRHBBBGGGL4: SETB RRR          ;藍(lán)漸亮/紅綠漸滅
              CLR   BBB
              CLR   GGG
              ACALL DELAY
              CLR   RRR
              SETB  BBB
              SETB  GGG
              ACALL DELAY1
              RET

GGGH4:SETB  GGG           ; 綠漸亮
      ACALL DELAY
      CLR   GGG
      ACALL DELAY1
      RET

BBBH4:SETB  BBB            ; 紅漸亮
      ACALL DELAY
      CLR   BBB
      ACALL DELAY1
      RET

;可動(dòng)態(tài)延時(shí)
DELAY:MOV 25H,COUNTER
      DJNZ 25H,$
      RET

DELAY1:MOV 25H,COUNTER1
       DJNZ 25H,$
       RET


;LED切換變化時(shí)的延時(shí)++++++++++++++++++++++++++++++++++++++++++
DELAY2:MOV LDBS,#7;作標(biāo)志,為了在按鍵或中斷解碼時(shí)繼續(xù)調(diào)用順序運(yùn)行程序
      MOV 36H,#10
DDD1: MOV R5,#255
DDD:  ACALL DELAY3
DELAY5: ACALL INTI;調(diào)用按鍵檢測(cè)處理程序
       JB 01H,DELAY5 ;01H為標(biāo)志位,為1則暫停/0順序運(yùn)行,
                     ;此行是在暫停時(shí)不停檢測(cè)按鍵.    
       DJNZ R5,DDD
       DJNZ 36H,DDD1
       RET

DELAY3:NOP
       NOP
       NOP      
       ACALL DELAY
       NOP
       NOP
       NOP
       ACALL DELAY1
       RET
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++






;被調(diào)用按鍵檢測(cè)處理程序++++++++++++++++++++++++++++++++++++++++++++++
INTI:JNB P3.5,INTII
KLL:  RET
INTII:MOV 37H,P1;為了進(jìn)入關(guān)閉后退出恢復(fù)原先狀態(tài).
      ACALL DY  
      JB P3.5,KLL
      MOV 35H,#255
INTIII: ACALL DY        
        ACALL DY
        ACALL DY          
      DJNZ 35H,INTIII
      JB P3.5,PPP
      MOV P1,#00
INTIP:;長(zhǎng)按按鍵關(guān)閉輸出++++
      SETB P1.3
      ACALL DELAY3
      JNB P3.5,INTIP
      ACALL DELAY3      
      JNB P3.5,INTIP

INTIP1:ACALL DELAY3
      JB P3.5,INTIP1
      ACALL DELAY3
      JB P3.5,INTIP1

INTIP2:ACALL DELAY3
       JNB P3.5,INTIP2
       ACALL DELAY3
       JNB P3.5,INTIP2

INTIP3:CLR P1.3
       MOV P1,37H
       RET
;+++++++++++++++++++++++++
PPP:CPL 01H
    JNB 01H,JHJ
    SETB P1.4
    RET
JHJ:CLR P1.4
    RET
;按鍵處理程序至此結(jié)束+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++






;為了讓PWM信號(hào)持續(xù)輸出保持LED同樣的亮度(不閃爍)給調(diào)用之用
DY:  MOV A,LDBS;13us+524us=537us
     RL A    
     MOV DPTR,#KEYFUNTB
     JMP @A+DPTR    
KEYFUNTB:  AJMP ABBBH
           AJMP AGGGH
   AJMP ARRRHBBBGGGL
   AJMP ABBBGGGH
   AJMP ABBBRRRL
   AJMP ABBBHRRRL
   AJMP ABBBHGGGL
   AJMP ADELAY3

ABBBH:     ACALL BBBH4;每節(jié)524us
           NOP
           NOP
           RET;++++++++++++++++++
AGGGH:     ACALL GGGH4
           NOP
           NOP
           RET
ARRRHBBBGGGL:ACALL RRRHBBBGGGL4
             RET
ABBBGGGH:    ACALL BBBGGGH4
             NOP
             RET
ABBBRRRL:    ACALL BBBRRRL4
             NOP
             RET
ABBBHRRRL:   ACALL BBBHRRRL4
             NOP
             RET
ABBBHGGGL:   ACALL BBBHGGGL4
             NOP
             RET
ADELAY3:     ACALL DELAY3
             RET
;++++++++++++++++++++++++++++++++++++++++++++++++++++





;以下是中斷解碼程序  
INT0123:PUSH ACC    
        CLR EX1
         MOV T28,#16
INT0124:JB P3.3,INTRET
        ACALL DY;調(diào)用LED請(qǐng)燈持續(xù)點(diǎn)亮總時(shí)間約525us        
        DJNZ T28,INT0124
JNB P3.3,$
;9ms判斷結(jié)束-------------------------------
       MOV T28,#9
INT01235: ACALL DY
       DJNZ T28,INT01235
       MOV R1,#41H
       MOV R2,#4
INT01238: MOV R3,#8
      

INT01236:
KL:    JNB P3.3,$  ;4.5ms判斷結(jié)束-------------------------------
       ACALL DY
       ACALL DY
       MOV C,P3.3
       JNC INT01237
       ACALL DY
       JB P3.3,$
INT01237:MOV A,@R1
       RRC A
       MOV @R1,A    
       DJNZ R3,INT01236
       INC R1
       DJNZ R2,INT01238
;讀碼裝入41H/42H(用戶(hù)碼)43H/44H(數(shù)據(jù)識(shí)別碼)完成.+++++++++++++++++++



     MOV A,41H;比較高8位地址碼
     XRL A,#2H ;判斷1AH的值是否等于00000000,相等的話(huà)A為0
     JNZ INTRET;如果不相等說(shuō)明解碼失敗退出解碼程序
     MOV A,42H;比較低8位地址
     XRL A,#0BDH ;再判斷高8位地址是否正確
     JNZ INTRET;如果不相等說(shuō)明解碼失敗退出解碼程序
     MOV A,43H;比較數(shù)據(jù)碼和數(shù)據(jù)反碼是否正確?
     CPL A
     XRL A,44H ;將1CH的值取反后和1DH比較 不同則無(wú)效丟棄,核對(duì)數(shù)據(jù)是否準(zhǔn)確
     JNZ INTRET;如果不相等說(shuō)明解碼失敗退出解碼程序
;判讀入碼是否成功----------完成---------------------------------------

     MOV A,44H;按鍵數(shù)值判斷執(zhí)行
     CJNE A,#0E7H,INTRET
     CPL P1.4;解碼成功發(fā)光二極管點(diǎn)亮指示!
     CPL 01H

  
INTRET:MOV T28,#120
INTRET1:ACALL DY
       CPL P1.2
       JNB P3.3,INTRET
       DJNZ T28,INTRET1
      SETB EX1      
      POP ACC
      CLR P1.2
      RETI
TOO:  INC 28H
      RETI

  END   1139201115.asm
全部回復(fù)(7)
正序查看
倒序查看
fjxmeb1
LV.5
2
2006-09-27 16:35
問(wèn)題解決了沒(méi)有?
0
回復(fù)
wushuxy
LV.2
3
2006-09-27 18:01
51的怎么不用C寫(xiě),看起來(lái)舒服多了
0
回復(fù)
wushuxy
LV.2
4
2006-09-27 18:07
紅外接收部分接個(gè)三極管接收距離回好些
不用三極管也可以接個(gè)上拉電阻比較可靠吧,我認(rèn)為
0
回復(fù)
led ic
LV.1
5
2006-11-16 01:49
我有帶遙控的IC,比51 的價(jià)低呀,你可了解一下FONGLQ@126.COM
0752-2133476    136928819981163612984.pdf
0
回復(fù)
zjman
LV.5
6
2006-11-16 15:26
你程序時(shí)序有點(diǎn)問(wèn)題?我做的就沒(méi)問(wèn)題
0
回復(fù)
2006-11-17 17:41
@zjman
你程序時(shí)序有點(diǎn)問(wèn)題?我做的就沒(méi)問(wèn)題
多謝!!問(wèn)題早已解決!!我現(xiàn)的主要工作就是做此類(lèi)相關(guān)軟件!!
0
回復(fù)
2006-11-18 20:42
頂!!!
0
回復(fù)
發(fā)