您当前的位置:五五电子网电子知识单片机-工控设备源码-程序采用stc89c52单片机的红外学习型遥控器汇编代码 正文
采用stc89c52单片机的红外学习型遥控器汇编代码

采用stc89c52单片机的红外学习型遥控器汇编代码

点击数:7487 次   录入时间:03-04 11:57:07   整理:http://www.55dianzi.com   源码-程序

    很详细的红外学习型遥控器,储存在24c64中的汇编子程序,在你自己的设计中只要修改一下IO调用它就可以了,是本人的工程验证能学习市面常用的绝大部分红外线遥控器

    用的是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 读取一个字节
      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 写一个字节
      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  数据读入缓冲区
      MOV  R7,#0A0H        ;R2R3 I2C地址
      LCALL ICWRITEBYTE        ;R0  缓冲区地址
      LCALL ICREADACK        ;R1  数据个数
      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:          ;缓冲区数据写入 I2C

          MOV  A,R7                      ;计算I2C地址 
      MOV  B,#208 ;;144

[1] [2] [3]  下一页


本文关键字:单片机  遥控器  学习型  源码-程序单片机-工控设备 - 源码-程序