基于stc89c52单片机的红外学习型遥控器

基于stc89c52单片机的红外学习型遥控器,第1张

  在智能电视、网络机顶盒(电视盒子)上,常见的主流遥控器无外乎“红外线”、“蓝牙”两种遥控方式。“蓝牙”遥控器因其“无需对准”、“可以绕弯控制”、“控制距离远”等特点近年来越来越受到厂商的重视以及消费者的青睐,然而尽管如此,仍然有大量用户坚持使用红外线遥控,原因就是现阶段很多蓝牙遥控器存在诸多缺陷及问题,影响用户日常使用 *** 作。

  很详细的红外学习型遥控器,储存在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

  

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2646634.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-12
下一篇 2022-08-12

发表评论

登录后才能评论

评论列表(0条)

保存