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

專注電子技術學習與研究
當前位置:單片機教程網(wǎng) >> MCU設計實例 >> 瀏覽文章

帶存儲功能的學習型紅外遙控器源代碼

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

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

;************************************************
;**********************************
;---------------------AT24C64 CODE-------------------------      
;==========================================================
ICSTART:			       ;I2C 開始
       SETB  SDA
       NOP
       NOP
       NOP
       NOP
       SETB  SCK
       NOP
       NOP
       NOP
       NOP
       CLR   SDA
       NOP
       NOP
       NOP
       NOP
       CLR   SCK
       RET 
;==========================================================
ICSTOP:				       ;I2C 結束
       CLR   SDA
       NOP
       NOP
       NOP
       NOP
       CLR   SCK
       NOP
       NOP
       NOP
       NOP
       SETB  SCK
       NOP
       NOP
       NOP
       NOP
       SETB  SDA
       RET
;==========================================================
ICACK:				       ;I2C 應答 
       CLR   SDA
       NOP
       NOP
       NOP
       NOP
       SETB  SCK
       NOP
       NOP
       NOP
       NOP
       CLR   SCK
       RET
;==========================================================
NOACK:				       ;I2C 無應答
       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 讀取一個字節(jié)
       MOV   R7,#8       
READLOOP:
       LCALL ICREADBIT
       RLC   A
       DJNZ  R7,READLOOP
       MOV   R7,A
       RET
;==========================================================
ICWRITEBIT:			       ;I2C 寫一位       
       MOV   SDA,C
       NOP
       NOP
       NOP
       NOP
       SETB  SCK
       NOP
       NOP
       NOP
       NOP
       CLR   SCK       
       RET	
;==========================================================
ICWRITEBYTE:			       ;I2C 寫一個字節(jié)
       MOV   A,R7
       MOV   R7,#8
   WRITELOOP:
       RLC   A
       LCALL ICWRITEBIT
       DJNZ  R7,WRITELOOP
       RET
;==========================================================
READAT:
       MOV   A,R7                      ;計算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ù)個數(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ù)寫入 I2C

       MOV   A,R7                      ;計算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			        ;紅外代碼起始檢測
           JB         RI,LLOOP              ;這里是檢測有鍵按下時。。。。。。
           CLR        TR2
           JNB        LRDR,READSTART      
           JB         HWXX,LRDTEST          ;紅外學習標志位
           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                ;紅外按鈕標志位
           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			       ;紅外線時間	   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                      ;代碼個數(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      	       ;紅外前導代碼   	              
    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  	       ;取下一個代碼
;==========================================================
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 


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://www.zg4o1577.cn/ziliao/file/hogwxx1.rar

關閉窗口

相關文章

主站蜘蛛池模板: 欧美亚洲国产一区二区三区 | 国产精品99久 | 91精品久久久久久久久久入口 | 亚洲一区二区三区久久久 | 亚洲高清在线观看 | 亚洲高清视频在线观看 | 91久久精品一区二区二区 | 午夜精品视频一区 | 亚洲国产精品久久久久婷婷老年 | 亚洲免费在线观看av | 成人精品| 99久久久久久99国产精品免 | 欧美日韩中文字幕 | 成人精品一区二区 | 色综合一区二区 | 国产亚韩| 国产精品一区二区三区99 | 久久久久久久国产精品视频 | 久久av一区二区 | 黄网站免费在线 | 久久久久久久久淑女av国产精品 | 伊人成人免费视频 | 亚洲精品一区二区三区在线 | 国产日韩欧美在线 | 日韩在线| 久久久久久久久91 | 成人精品福利 | 国产美女黄色片 | 精品成人av | 一区二区三区视频在线 | 毛片软件 | 国产精品特级片 | 九九综合九九 | 亚洲精品福利视频 | 亚洲91精品 | 免费一级片 | 美女福利视频网站 | 夜夜骑首页 | 国产在线不卡视频 | 日本人做爰大片免费观看一老师 | 欧美日韩一区二区三区不卡视频 |