久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

帶存儲(chǔ)功能的學(xué)習(xí)型紅外遙控器源代碼

作者:佚名   來(lái)源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2010年10月06日   【字體:

  很詳細(xì)的紅外學(xué)習(xí)型遙控器,儲(chǔ)存在24c64中的匯編子程序,在你自己的設(shè)計(jì)中只要修改一下IO調(diào)用它就可以了,是本人的工程驗(yàn)證能學(xué)習(xí)市面常用的絕大部分紅外線遙控器
用的是stc89c52單片機(jī),下面是匯編代碼:
 

;************************************************
;**********************************
;---------------------AT24C64 CODE-------------------------      
;==========================================================
ICSTART:			       ;I2C 開(kāi)始
       SETB  SDA
       NOP
       NOP
       NOP
       NOP
       SETB  SCK
       NOP
       NOP
       NOP
       NOP
       CLR   SDA
       NOP
       NOP
       NOP
       NOP
       CLR   SCK
       RET 
;==========================================================
ICSTOP:				       ;I2C 結(jié)束
       CLR   SDA
       NOP
       NOP
       NOP
       NOP
       CLR   SCK
       NOP
       NOP
       NOP
       NOP
       SETB  SCK
       NOP
       NOP
       NOP
       NOP
       SETB  SDA
       RET
;==========================================================
ICACK:				       ;I2C 應(yīng)答 
       CLR   SDA
       NOP
       NOP
       NOP
       NOP
       SETB  SCK
       NOP
       NOP
       NOP
       NOP
       CLR   SCK
       RET
;==========================================================
NOACK:				       ;I2C 無(wú)應(yīng)答
       SETB  SDA
       NOP
       NOP
       NOP
       NOP
       SETB  SCK
       NOP
       NOP
       NOP
       NOP
       CLR   SCK
       RET
;==========================================================
ICREADBIT:			       ;I2C 讀取一位
       SETB  SDA
       NOP
       NOP
       NOP
       NOP
       SETB  SCK
       NOP
       NOP
       NOP
       NOP
       MOV   C,SDA
       CLR   SCK       
       RET   				   
;----------------------------------------------------------
ICREADACK:
       MOV   R7,#200
       SETB  SDA
       NOP
       NOP
       NOP
       NOP
       SETB  SCK
       NOP
       NOP
       NOP
       NOP 
    READACKS:
       JNB   SDA,ACKEND
       DJNZ  R7,READACKS
       SETB  C
       CLR   SCK
       RET
    ACKEND:
       CLR   C
       CLR   SCK
       RET
    
;==========================================================
ICREADBYTE:			       ;I2C 讀取一個(gè)字節(jié)
       MOV   R7,#8       
READLOOP:
       LCALL ICREADBIT
       RLC   A
       DJNZ  R7,READLOOP
       MOV   R7,A
       RET
;==========================================================
ICWRITEBIT:			       ;I2C 寫(xiě)一位       
       MOV   SDA,C
       NOP
       NOP
       NOP
       NOP
       SETB  SCK
       NOP
       NOP
       NOP
       NOP
       CLR   SCK       
       RET	
;==========================================================
ICWRITEBYTE:			       ;I2C 寫(xiě)一個(gè)字節(jié)
       MOV   A,R7
       MOV   R7,#8
   WRITELOOP:
       RLC   A
       LCALL ICWRITEBIT
       DJNZ  R7,WRITELOOP
       RET
;==========================================================
READAT:
       MOV   A,R7                      ;計(jì)算I2C地址	
       MOV   B,#208 ;144
       MUL   AB
       MOV   R2,B
       MOV   R3,A		       


       LCALL ICSTART		       ;I2C  數(shù)據(jù)讀入緩沖區(qū)
       MOV   R7,#0A0H		       ;R2R3 I2C地址
       LCALL ICWRITEBYTE	       ;R0   緩沖區(qū)地址
       LCALL ICREADACK		       ;R1   數(shù)據(jù)個(gè)數(shù)
       JNC   RACKEND
       RET
;
 RACKEND:
       MOV   A,R2
       MOV   R7,A
       LCALL ICWRITEBYTE
       LCALL ICREADACK
       MOV   A,R3
       MOV   R7,A
       LCALL ICWRITEBYTE
       LCALL ICREADACK

       LCALL ICSTART
       MOV   R7,#0A1H
       LCALL ICWRITEBYTE
       LCALL ICREADACK
       MOV   R0,#LRDBUF
       MOV   R1,#208 ;144

   READDATAS:
       LCALL ICREADBYTE
       LCALL ICACK
       MOV   @R0,A
       INC   R0
       DJNZ  R1,READDATAS
       LCALL NOACK
       LCALL ICSTOP
       RET

;==========================================================
WRITEAT:			       ;緩沖區(qū)數(shù)據(jù)寫(xiě)入 I2C

       MOV   A,R7                      ;計(jì)算I2C地址	
       MOV   B,#208 ;;144
       MUL   AB
       MOV   R2,B
       MOV   R3,A
       MOV   R5,#13 ;9    13*16=208
       
       MOV   R0,#LRDBUF

   ICWRITENEXT:   
       LCALL ICSTART
       MOV   R7,#0A0H		       
       LCALL ICWRITEBYTE
       LCALL ICREADACK
       JNC   WACKEND
;
;
   WACKEND:
       MOV   A,R2
       MOV   R7,A
       LCALL ICWRITEBYTE
       LCALL ICREADACK
       MOV   A,R3
       MOV   R7,A
       LCALL ICWRITEBYTE
       LCALL ICREADACK


       MOV   R1,#16             
   WRITEDATAS:
       MOV   A,@R0
       INC   R0      
       MOV   R7,A
       LCALL ICWRITEBYTE
       LCALL ICREADACK       
       DJNZ  R1,WRITEDATAS
       LCALL ICSTOP


       MOV   R7,#250
     DELAY_D:
       MOV   R6,#20
       DJNZ  R6,$
       DJNZ  R7,DELAY_D

       MOV   A,R3
       ADD   A,#16
       MOV   R3,A
       MOV   A,R2
       ADDC  A,#0
       MOV   R2,A


       DJNZ  R5,ICWRITENEXT
       RET       
;*****************************************************************

;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
LRDREAD:	
             			                       ;紅外代碼讀取
             MOV      R0,#LRDBUF		       ;代碼緩沖區(qū)清零
             MOV      R1,#208  ;144
             CLR      A
CLRLRDBUF:
            MOV       @R0,A
            INC       R0
            DJNZ      R1,CLRLRDBUF
            MOV       R0,#LRDBUF
            SETB      LRDR
LRDTEST:			       		            
           SETB       TR2         
           SETB       ES			        ;紅外代碼起始檢測(cè)
           JB         RI,LLOOP              ;這里是檢測(cè)有鍵按下時(shí)。。。。。。
           CLR        TR2
           JNB        LRDR,READSTART      
           JB         HWXX,LRDTEST          ;紅外學(xué)習(xí)標(biāo)志位
           LJMP       LLLOOP
LLOOP:     ;
           CLR     RI
           MOV     A,SBUF
           MOV     R0,#250
           MOV     R1,#250
LP4:       JB      RI,LP3
           DJNZ    R0,LP4
           DJNZ    R1,LP4
           LJMP    LRDTEST
LP3:       CLR     RI
           CLR     ES
           MOV     A,SBUF
           MOV     A,#00H
           
LP2:       
           CLR     HONGWAI                ;紅外按鈕標(biāo)志位
           CLR     P3.3
           CLR     HWXX
           MOV     SBUF,#37H
           JNB     TI,$
           CLR     TI
           DEC     SP
           DEC     SP
           LJMP    LOOP 
LLLOOP:     RET 
           	  				        
;--------------------------------------
READSTART:
    CLR  EA
    ;SETB P0.6                          
    MOV  TH1,#0
    MOV  TL1,#12		       
    SETB LRDR
;--------------------------------------
READLOOP_S:
    SETB TR1
    CLR  TF1
TEST_LRDR:
    MOV  A,TH1
    JB   TF1,LRDOVER
    JNB  LRDR,TEST_LRDR
    CLR  TR1			       ;

    INC  R0
    MOV  A,TL1
    MOV  @R0,A
    INC  R0
    MOV  A,TH1
    MOV  @R0,A
    INC  R1			       ;紅外線時(shí)間	   1
;--------------------------------------
;--------------------------------------
    MOV  TH1,#0
    MOV  TL1,#12
    SETB TR1
    CLR  TF1
    
  TESTLRD:
    MOV  A,TH1
    JB   TF1,LRDOVER
    JB   LRDR,TESTLRD     

    CLR  TR1			       
    INC  R0
    MOV  A,TL1
    MOV  @R0,A
    INC  R0
    MOV  A,TH1
    MOV  @R0,A   		       ;代碼        	   2
    INC  R1 
;**************************************	
  
  TEST_DATA: 
    MOV  TH1,#0
    MOV  TL1,#12
    SETB TR1 
    CLR  TF1         

    MOV  A,R1
    SUBB A,#101  ;44H
    JC   READLOOP_S		       ;下一代碼    
;--------------------------------------
 LRDOVER:
    CLR  TR1
    SETB EA
    MOV  A,R1
    MOV  LRDBUF,A                      ;代碼個(gè)數(shù)緩沖
    RET 					   
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
LRD1SEND:
     CLR   EA
    MOV   R1,LRDBUF
    MOV   R0,#LRDBUF 
    MOV   A,R1
    JZ    LRD_END
    SUBB  A,#101   ;72
    JNC   LRD_END
    CLR   EA
    MOV   TH1,#0

 LRD1OUTLOOP:
    CLR   TR1
    INC   R0
    MOV   A,@R0
    CPL   A
    MOV   TL1,A     
    INC   R0
    MOV   A,@R0
    CPL   A
    MOV   TH1,A 
    SETB  TR1			       
    CLR   TF1
;--------------------------------------
  LRD1CONT:
    CPL   LRD1
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP                                ;發(fā)送紅外波形  38K HZ 
    JNB   TF1,LRD1CONT      	       ;紅外前導(dǎo)代碼   	              
    CLR   LRD1     
    DJNZ  R1,SEND_DATA
    LJMP  LRD_END

 SEND_DATA:
;--------------------------------------
 
    CLR   TR1
    INC   R0
    MOV   A,@R0
    CPL   A
    MOV   TL1,A    
    INC   R0
    MOV   A,@R0
    CPL   A
    MOV   TH1,A
    SETB  TR1
    CLR   TF1
    DJNZ  R1,OUT_1_CODE


 LRD_END:
    CLR   TR1
    CLR   TF1
    SETB  EA
    RET
 OUT_1_CODE:
    JNB   TF1,$			       ;紅外代碼
;--------------------------------------
    LJMP  LRD1OUTLOOP 
    RET  	       ;取下一個(gè)代碼
;==========================================================
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 


DELAY:
      MOV   R7,#200
DEL_L:
      MOV   R6,#30
      DJNZ  R6,$
      DJNZ  R7,DEL_L
      RET
      
DELY_2:
            MOV     R7,#250
DEL_2:         
           LJMP    DELAY
           DJNZ    R7,DEL_2
           MOV     R7,#250
DEL_3:     LJMP    DEL_2
           DJNZ    R7,DEL_3
           RET
     

源代碼下載地址:http://m.zg4o1577.cn/ziliao/file/hogwxx1.rar

關(guān)閉窗口

相關(guān)文章

主站蜘蛛池模板: www.日日日| 婷婷六月激情 | 一区二区国产视频 | 日本亚洲天堂 | 一区二区av | 日韩一级黄色片 | 国产成人精品久久久 | 日韩在线毛片 | 久草福利 | 精品日韩一区二区三区 | 欧美亚洲国产日韩 | 免费成人结看片 | 日本中文在线 | 亚洲天天操 | 国语对白永久免费 | 天天搞天天搞 | 免费视频a | 黄色免费观看视频 | 成人激情视频 | 在线视频日本 | av色在线| 黄色免费毛片 | 免费的黄色小视频 | 欧美日韩亚洲一区二区三区 | 亚洲裸体视频 | 中文字字幕在线 | 亚洲精品自拍视频 | 免费国产精品视频 | 色噜噜狠狠一区二区三区果冻 | 国产成人97精品免费看片 | 亚洲第一伊人 | 久久视频在线免费观看 | 国产又黄又粗 | 亚洲美女在线视频 | 三级av网站 | 99久久婷婷国产综合精品草原 | 日韩在线观看中文字幕 | 秋霞一区二区三区 | 夜夜嗨av一区二区三区网页 | 欧美久久一区 | 免费的黄色大片 |