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

📄 ir-led.lst

📁 很实用的单片机例程
💻 LST
字号:
A51 MACRO ASSEMBLER  IR_LED                                                               10/12/2006 08:55:23 PAGE     1


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

LOC  OBJ            LINE     SOURCE

                       1     ;*         LED 显示, P0口为LED的数据口                                          *
                       2     ;*         上电后,将8个LED全部点亮                                             *
                       3     ;*         K17键按下,继电器吸合。K19键按下,继电器关闭。                       *
                       4     ;*                                                                              *
                       5     
                       6     
                       7     ;-----------------------------------------------
  0020                 8            IRCOM  EQU  20H       ;20H-23H IR使用
                       9     
  00B2                10            IRIN   EQU  P3.2
  00B7                11            BEEP   EQU  P3.7
  0093                12            RELAY  EQU  P1.3
                      13     ;------------------------------------------------
0000                  14              ORG 0000H
0000 8000             15              JMP  MAIN
                      16     ;------------------------------------------------
0002                  17     MAIN:
0002 758160           18               MOV   SP,#60H
0005 7400             19               MOV   A,#00H
0007 7820             20               MOV   R0,#20H
0009 F6               21     LOOP0:    MOV   @R0,A          ;20H-24H清零
000A 08               22               INC   R0
000B B825FB           23               CJNE  R0,#25H,LOOP0
000E D2B2             24               SETB  IRIN
0010 D2B7             25               SETB  BEEP
0012 D293             26               SETB  RELAY
0014 7522FF           27               MOV  22H,#0FFH
0017 116E             28               CALL  IR_SHOW       ;8个LED全部亮
0019                  29     LOOP1:
0019 1128             30               CALL  IR_IN
001B F4               31               CPL   A
001C B44002           32               CJNE  A,#40H,LOOP2    ;K17键按下
001F C293             33               CLR   RELAY           ;继电器吸合
0021 B40402           34     LOOP2:    CJNE  A,#04H,LOOP3    ;K19键按下
0024 D293             35               SETB  RELAY           ;继电器关闭
                      36     
0026 80F1             37     LOOP3:    JMP   LOOP1
                      38     
                      39     ;---------------------------------------------------
                      40     ; IR 译码子程序
                      41     ;---------------------------------------------------
0028                  42     IR_IN:
0028 7820             43               MOV   R0,#IRCOM
002A 30B202           44      I1:      JNB  IRIN,I2       ;等待 IR 信号出现
002D 80FB             45               JMP  I1
002F 7C14             46      I2:      MOV  R4,#20
0031 1197             47      I20:     CALL  DEL
0033 DCFC             48               DJNZ  R4,I20
0035 20B2F2           49               JB  IRIN,I1        ;确认IR信号出现
0038 20B204           50      I21:     JB  IRIN,I3        ;等 IR 变为高电平
003B 1197             51               CALL  DEL
003D 80F9             52               JMP  I21
003F 7B00             53      I3:      MOV  R3,#0         ;8位数清为0
0041 30B204           54      LL:      JNB  IRIN,I4       ;等 IR 变为低电平
0044 1197             55               CALL  DEL
0046 80F9             56               JMP  LL
0048 20B204           57      I4:      JB  IRIN,I5        ;等 IR 变为高电平
004B 1197             58               CALL  DEL
A51 MACRO ASSEMBLER  IR_LED                                                               10/12/2006 08:55:23 PAGE     2

004D 80F9             59               JMP  I4
004F 7A00             60      I5:      MOV  R2,#0         ;0.14ms 计数
0051 1197             61      L1:      CALL  DEL
0053 20B213           62               JB  IRIN, N1       ;等 IR 变为高电平
                      63                                  ;IR=0,检查R2中的计数值
0056 7408             64               MOV  A,#8
0058 C3               65               CLR  C
0059 9A               66               SUBB  A,R2         ;判断高低位
                      67                                  ;IF C=0  BIT=0
005A E6               68               MOV  A,@R0
005B 13               69               RRC  A
005C F6               70               MOV  @R0,A         ;处理完一位
005D 0B               71               INC  R3
005E BB08E0           72               CJNE  R3,#8,LL     ;需处理完8位
0061 7B00             73               MOV  R3,#0
0063 08               74               INC  R0
0064 B824DA           75               CJNE  R0,#24H,LL   ;收集到4字节了
0067 8005             76               JMP  IR_SHOW
0069 0A               77      N1:      INC  R2
006A BA1EE4           78               CJNE  R2,#30,L1    ;0.14ms 计数过长则时间到自动离开
006D 22               79               RET
                      80     ;---------------------------------------------------------------
                      81     ;键值显示
                      82     ;22H存入用户编码,23H存入用户编码的反码
                      83     ;---------------------------------------------------------------
006E                  84     IR_SHOW:
006E E522             85               MOV A,22H
0070 F4               86               CPL A                ;将22H取反后和23H比较
0071 B52304           87               CJNE A,23H,IR_SHOW1  ;如果不等表示接收数据发生错误,放弃。
0074 F580             88               MOV  P0,A
0076 1179             89               CALL  BEEP_BL        ;蜂鸣器鸣响表示解码成功
0078 22               90     IR_SHOW1: RET
                      91     
                      92     ;--------------------------------------------------------
                      93     ;蜂鸣器响一声子程序
                      94     ;--------------------------------------------------------
0079                  95     BEEP_BL:
0079 7E64             96              MOV  R6,#100
007B 1186             97       BL1:   CALL  DEX1
007D B2B7             98              CPL  BEEP
007F DEFA             99              DJNZ  R6,BL1
0081 7D14            100              MOV  R5,#20
0083 118C            101              CALL  DELAY
0085 22              102              RET
0086 7FB4            103      DEX1:   MOV  R7,#180
0088 00              104      DEX2:   NOP
0089 DFFD            105              DJNZ  R7,DEX2
008B 22              106              RET
008C                 107      DELAY:                    ;延时R5×10MS
008C 7E32            108              MOV  R6,#50
008E 7F64            109       D1:    MOV  R7,#100
0090 DFFE            110              DJNZ  R7,$
0092 DEFA            111              DJNZ  R6,D1
0094 DDF6            112              DJNZ  R5,DELAY
0096 22              113              RET
                     114     ;------------------------------------------------
                     115     ; DELAY  R5*0.14MS
0097                 116     DEL:
0097 7D01            117               MOV  R5,#1       ;IR解码使用
0099 7E02            118     DEL0:     MOV  R6,#2
009B 7F20            119     DEL1:     MOV  R7,#32
009D DFFE            120     DEL2:     DJNZ  R7,DEL2
009F DEFA            121               DJNZ  R6,DEL1
00A1 DDF6            122               DJNZ  R5,DEL0
00A3 22              123               RET
                     124     
A51 MACRO ASSEMBLER  IR_LED                                                               10/12/2006 08:55:23 PAGE     3

00A4                 125     DELAY1:                    ;延时5MS
00A4 7E19            126              MOV  R6,#25
00A6 7F64            127       DL2:   MOV  R7,#100
00A8 DFFE            128              DJNZ  R7,$
00AA DEFA            129              DJNZ  R6,DL2
00AC 22              130              RET
                     131     ;---------------------------------
                     132             END               ;结束
                             
A51 MACRO ASSEMBLER  IR_LED                                                               10/12/2006 08:55:23 PAGE     4

SYMBOL TABLE LISTING
------ ----- -------


N A M E             T Y P E  V A L U E   ATTRIBUTES

BEEP . . . . . . .  B ADDR   00B0H.7 A   
BEEP_BL. . . . . .  C ADDR   0079H   A   
BL1. . . . . . . .  C ADDR   007BH   A   
D1 . . . . . . . .  C ADDR   008EH   A   
DEL. . . . . . . .  C ADDR   0097H   A   
DEL0 . . . . . . .  C ADDR   0099H   A   
DEL1 . . . . . . .  C ADDR   009BH   A   
DEL2 . . . . . . .  C ADDR   009DH   A   
DELAY. . . . . . .  C ADDR   008CH   A   
DELAY1 . . . . . .  C ADDR   00A4H   A   
DEX1 . . . . . . .  C ADDR   0086H   A   
DEX2 . . . . . . .  C ADDR   0088H   A   
DL2. . . . . . . .  C ADDR   00A6H   A   
I1 . . . . . . . .  C ADDR   002AH   A   
I2 . . . . . . . .  C ADDR   002FH   A   
I20. . . . . . . .  C ADDR   0031H   A   
I21. . . . . . . .  C ADDR   0038H   A   
I3 . . . . . . . .  C ADDR   003FH   A   
I4 . . . . . . . .  C ADDR   0048H   A   
I5 . . . . . . . .  C ADDR   004FH   A   
IRCOM. . . . . . .  N NUMB   0020H   A   
IRIN . . . . . . .  B ADDR   00B0H.2 A   
IR_IN. . . . . . .  C ADDR   0028H   A   
IR_SHOW. . . . . .  C ADDR   006EH   A   
IR_SHOW1 . . . . .  C ADDR   0078H   A   
L1 . . . . . . . .  C ADDR   0051H   A   
LL . . . . . . . .  C ADDR   0041H   A   
LOOP0. . . . . . .  C ADDR   0009H   A   
LOOP1. . . . . . .  C ADDR   0019H   A   
LOOP2. . . . . . .  C ADDR   0021H   A   
LOOP3. . . . . . .  C ADDR   0026H   A   
MAIN . . . . . . .  C ADDR   0002H   A   
N1 . . . . . . . .  C ADDR   0069H   A   
P0 . . . . . . . .  D ADDR   0080H   A   
P1 . . . . . . . .  D ADDR   0090H   A   
P3 . . . . . . . .  D ADDR   00B0H   A   
RELAY. . . . . . .  B ADDR   0090H.3 A   
SP . . . . . . . .  D ADDR   0081H   A   


REGISTER BANK(S) USED: 0 

ASSEMBLY COMPLETE.  0 WARNING(S), 0 ERROR(S)

⌨️ 快捷键说明

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