您当前的位置:五五电子网电子知识单片机-工控设备51单片机实例-12864LCD显示遥控键值解码器 正文
实例-12864LCD显示遥控键值解码器

实例-12864LCD显示遥控键值解码器

点击数:7650 次   录入时间:03-04 12:00:35   整理:http://www.55dianzi.com   51单片机
;=================================================
IR_IN:
          CLR EA         ;暂时关闭CPU的所有中断请求
          PUSH  ACC
          PUSH  PSW
          SETB  PSW.3     ;选择工作寄存器组1
          CLR   PSW.4

          MOV   R0,#IRCOM
          MOV  R1,#04H
I1:       JNB  IRIN,I2       ;等待 IR 信号出现
          LCALL CONV
          DJNZ  R1,I1
          JMP  IR_OUT
 I2:      MOV  R4,#20
 I20:     CALL  DEL
          DJNZ  R4,I20
          JB  IRIN,I1        ;确认IR信号出现
 I21:     JB  IRIN,I3        ;等 IR 变为高电平
          CALL  DEL
          JMP  I21
 I3:      MOV  R3,#0         ;8位数清为0
 LL:      JNB  IRIN,I4       ;等 IR 变为低电平
          CALL  DEL
          JMP  LL
 I4:      JB  IRIN,I5        ;等 IR 变为高电平
          CALL  DEL
          JMP  I4
 I5:      MOV  R2,#0         ;0.14ms 计数
 L1:      CALL  DEL
          JB  IRIN, N1       ;等 IR 变为高电平
                             ;IR=0,检查R2中的计数值
          MOV  A,#8
          CLR  C
          SUBB  A,R2         ;判断高低位
                             ;IF C=0  BIT=0
          MOV  A,@R0
          RRC  A
          MOV  @R0,A         ;处理完一位
          INC  R3
          CJNE  R3,#8,LL     ;需处理完8位
          MOV  R3,#0
          INC  R0
          CJNE  R0,#24H,LL   ;收集到4字节了
          JMP   IR_SHOW
 N1:      INC  R2
          CJNE  R2,#30,L1    ;0.14ms 计数过长则时间到自动离开

IR_OUT:   POP  PSW
          POP  ACC
          SETB  EA
          RETI

;------------------------------------------------------------------
IR_SHOW:
          MOV A,22H
          CPL A                ;将22H取反后和23H比较
          CJNE A,23H,IR_SHOW1  ;如果不等表示接收数据发生错误,放弃。
          CALL   CONV
          CALL  BEEP_BL        ;蜂鸣器鸣响表示解码成功
IR_SHOW1:
          JMP  IR_OUT
;===============================================
;编码转换为 ASCII 码并显示
;===============================================
CONV:
          MOV   X,#5        ;设置显示起始位置
          MOV   A,22H
          ANL   A,#0F0H      ;取出高四位二进制数
          SWAP  A            ;高四位与低四位互换
          PUSH  ACC          ;压入堆栈
          CLR   C            ;C=0
          SUBB  A,#0AH       ;减10
          POP   ACC          ;弹出堆栈
          JC    ASCII0       ;该数小于10,转ASCII0
          ADD   A,#07H       ;大于10的数加上37H
ASCII0:   ADD   A,#30H       ;小于10的数加上30H
          MOV   B,X
          CALL  LCDP3

上一页  [1] [2] [3] [4] [5]  下一页


本文关键字:解码器  51单片机单片机-工控设备 - 51单片机

《实例-12864LCD显示遥控键值解码器》相关文章>>>