⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ir-dsy.lst

📁 买板子时赠的实验例子
💻 LST
📖 第 1 页 / 共 2 页
字号:
A51 MACRO ASSEMBLER  IR_DSY                                                               03/29/2005 16:10:00 PAGE     1


MACRO ASSEMBLER A51 V7.10
OBJECT MODULE PLACED IN IR-DSY.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE IR-DSY.asm SET(SMALL) DEBUG EP

LOC  OBJ            LINE     SOURCE

                       1     ;********************************************************************************
                       2     ;*  标题:  伟纳电子ME300B单片机开发系统演示程序 - 遥控键值解码-数码管显示       *
                       3     ;*  文件:  IR-DSY.asm                                                           *
                       4     ;*  日期:  2005-3-20                                                            *
                       5     ;*  版本:  1.0                                                                  *
                       6     ;*  作者:  gguoqing                                                             *
                       7     ;*  邮箱:  gguoqing@willar.com                                                  *
                       8     ;*  网站: http://www.willar.com                                                *
                       9     ;********************************************************************************
                      10     ;*  描述:                                                                       *
                      11     ;*          ME300B 遥控键值读取器                                               *
                      12     ;*         数码管显示, P0口为数码管的数据口                                     *
                      13     ;*                                                                              *
                      14     ;*         K17键按下,继电器吸合。K19键按下,继电器关闭。                       *
                      15     ;*                                                                              *
                      16     ;********************************************************************************
                      17     ;* 【版权】 Copyright(C)伟纳电子 www.willar.com  All Rights Reserved            *
                      18     ;* 【声明】 此程序仅用于学习与参考,引用请注明版权和作者信息!                  *
                      19     ;********************************************************************************
                      20     
                      21     ;-----------------------------------------------
  0020                22            IRCOM  EQU  20H       ;20H-23H IR使用
                      23     
  00B2                24            IRIN   EQU  P3.2
  00B7                25            BEEP   EQU  P3.7
  0093                26            RELAY  EQU  P1.3
                      27     ;------------------------------------------------
0000                  28              ORG 0000H
0000 8003             29              JMP  MAIN
                      30     
0003                  31              ORG 0003H         ;外部中断INT0入口地址
0003 802A             32              JMP  IR_IN
                      33     ;------------------------------------------------
0005                  34     MAIN:
0005 758160           35               MOV   SP,#60H
0008 7400             36               MOV   A,#00H
000A 7820             37               MOV   R0,#20H
000C F6               38     LOOP0:    MOV   @R0,A          ;20H-27H清零
000D 08               39               INC   R0
000E B828FB           40               CJNE  R0,#28H,LOOP0
0011 75A881           41               MOV  IE,#81H       ;允许总中断中断,使能 INT0 外部中断
0014 758801           42               MOV  TCON,#01H     ;触发方式为脉冲负边沿触发
                      43     
0017 D2B2             44               SETB  IRIN
0019 D2B7             45               SETB  BEEP
001B D293             46               SETB  RELAY
001D 11A2             47               CALL  IR_SHOW
                      48     
001F                  49     LOOP1:
001F 11A2             50               CALL  IR_SHOW
0021 E522             51               MOV  A,22H
0023 B44002           52               CJNE  A,#40H,LOOP2    ;K17键按下
0026 C293             53               CLR   RELAY           ;继电器吸合
0028 B40402           54     LOOP2:    CJNE  A,#04H,LOOP3    ;K19键按下
002B D293             55               SETB  RELAY           ;继电器关闭
002D 80F0             56     LOOP3:    JMP   LOOP1
                      57     
                      58     ;---------------------------------------------------
A51 MACRO ASSEMBLER  IR_DSY                                                               03/29/2005 16:10:00 PAGE     2

                      59     ; IR 译码子程序
                      60     ;---------------------------------------------------
002F                  61     IR_IN:
002F C2AF             62               CLR EA         ;暂时关闭CPU的所有中断请求
0031 C0E0             63               PUSH  ACC
0033 C0D0             64               PUSH  PSW
0035 D2D3             65               SETB  PSW.3     ;选择工作寄存器组1
0037 C2D4             66               CLR   PSW.4
0039 7A04             67               MOV   R2,#04H
003B 7820             68               MOV   R0,#IRCOM
003D 30B204           69      I1:      JNB  IRIN,I2       ;等待 IR 信号出现
0040 DAFB             70               DJNZ  R2,I1
0042 803E             71               JMP  IR_OUT        ;IR信号没出现,退出。
0044 7C14             72      I2:      MOV  R4,#20
0046 11EF             73      I20:     CALL  DEL
0048 DCFC             74               DJNZ  R4,I20
004A 20B2F0           75               JB  IRIN,I1        ;确认IR信号出现
004D 20B204           76      I21:     JB  IRIN,I3        ;等 IR 变为高电平
0050 11EF             77               CALL  DEL
0052 80F9             78               JMP  I21
0054 7B00             79      I3:      MOV  R3,#0         ;8位数清为0
0056 30B204           80      LL:      JNB  IRIN,I4       ;等 IR 变为低电平
0059 11EF             81               CALL  DEL
005B 80F9             82               JMP  LL
005D 20B204           83      I4:      JB  IRIN,I5        ;等 IR 变为高电平
0060 11EF             84               CALL  DEL
0062 80F9             85               JMP  I4
0064 7A00             86      I5:      MOV  R2,#0         ;0.14ms 计数
0066 11EF             87      L1:      CALL  DEL
0068 20B213           88               JB  IRIN, N1       ;等 IR 变为高电平
                      89                                  ;IR=0,检查R2中的计数值
006B 7408             90               MOV  A,#8
006D C3               91               CLR  C
006E 9A               92               SUBB  A,R2         ;判断高低位
                      93                                  ;IF C=0  BIT=0
006F E6               94               MOV  A,@R0
0070 13               95               RRC  A
0071 F6               96               MOV  @R0,A         ;处理完一位
0072 0B               97               INC  R3
0073 BB08E0           98               CJNE  R3,#8,LL     ;需处理完8位
0076 7B00             99               MOV  R3,#0
0078 08              100               INC  R0
0079 B824DA          101               CJNE  R0,#24H,LL   ;收集到4字节了
007C 800B            102               JMP  IR_COMP
007E 0A              103      N1:      INC  R2
007F BA1EE4          104               CJNE  R2,#30,L1    ;0.14ms 计数过长则时间到自动离开
                     105     
0082 D0D0            106     IR_OUT:   POP  PSW
0084 D0E0            107               POP  ACC
0086 D2AF            108               SETB  EA
0088 32              109               RETI
                     110     ;---------------------------------------------------------------
                     111     ;键值比较与键值数据处理
                     112     ;22H存入用户编码,23H存入用户编码的反码
                     113     ;---------------------------------------------------------------
0089                 114     IR_COMP:
0089 E522            115               MOV A,22H
008B F4              116               CPL A                ;将22H取反后和23H比较
008C B523F3          117               CJNE A,23H,IR_OUT    ;如果不等表示接收数据发生错误,放弃
008F                 118     IR_CHULI:
008F E522            119               MOV  A,22H
0091 540F            120               ANL  A,#0FH
0093 F525            121               MOV  25H,A           ;送个位显示单元
0095 E522            122               MOV  A,22H
0097 54F0            123               ANL  A,#0F0H
0099 C4              124               SWAP  A
A51 MACRO ASSEMBLER  IR_DSY                                                               03/29/2005 16:10:00 PAGE     3

009A F526            125               MOV  26H,A           ;送十位显示单元
009C 11A2            126               CALL  IR_SHOW        ;显示键值
009E 11D1            127               CALL  BEEP_BL        ;蜂鸣器鸣响表示解码成功
00A0 80E0            128               JMP  IR_OUT
                     129     
                     130     ;=======================================================
                     131     ;键值显示
                     132     ;=======================================================
00A2                 133     IR_SHOW:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -