📄 remote.lst
字号:
A51 MACRO ASSEMBLER REMOTE 06/23/2007 10:58:55 PAGE 1
MACRO ASSEMBLER A51 V7.10
OBJECT MODULE PLACED IN remote.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE remote.asm SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1 ;----------------------------------
2 ; 单片机无线遥控实例
3 ; 功能:通过无线遥控实现对继电器的控制
4 ;-----------------------------------
0000 5 ORG 0000H
0000 020003 6 LJMP START
7
0003 8 START:
0003 758150 9 MOV SP,#50H ; 将堆栈起点设为60H
0006 C290 10 CLR P1.0
0008 C291 11 CLR P1.1
000A C292 12 CLR P1.2
000C C293 13 CLR P1.3
000E 00 14 NOP
15
000F E4 16 CLR A ; 将0-9的显示情况都走一遍
0010 17 SHOW_LOOP:
0010 116B 18 CALL SHOW_SEG
0012 04 19 INC A
0013 B40AFA 20 CJNE A,#10,SHOW_LOOP
21
0016 E4 22 CLR A
0017 116B 23 CALL SHOW_SEG ; 清除显示
24
0019 25 MAIN:
0019 D2B2 26 SETB P3.2 ; 等待信号来
001B 1200E9 27 LCALL RX ; 进入等待、接收子程序
001E 80F9 28 JMP MAIN
29
0020 30 OP_RELAY:
31 ;---------------------------
32 ; 操作函数,根据输入的值进行对应的操作,参数从r1输入
33 ;---------------------------
0020 E9 34 MOV A,R1
0021 5480 35 ANL A,#80H ; 判断输入值是否80h
0023 700E 36 JNZ OP_NEXT1
0025 7401 37 MOV A,#1 ; 显示1
0027 116B 38 CALL SHOW_SEG
0029 D293 39 SETB P1.3 ; 对应的LED亮
002B 7DFF 40 MOV R5,#0FFH
002D 11FC 41 CALL DELAY ; 延时
002F C293 42 CLR P1.3 ; 对应的LED灭
0031 8037 43 JMP OP_OUT
0033 44 OP_NEXT1:
0033 E9 45 MOV A,R1
0034 5420 46 ANL A,#20H ; 判断输入值是否20h
0036 700E 47 JNZ OP_NEXT2
0038 7403 48 MOV A,#3 ; 显示3
003A 116B 49 CALL SHOW_SEG
003C D291 50 SETB P1.1 ; 对应的LED亮
003E 7DFF 51 MOV R5,#0FFH
0040 11FC 52 CALL DELAY ; 延时
0042 C291 53 CLR P1.1 ; 对应的LED灭
0044 8024 54 JMP OP_OUT
0046 55 OP_NEXT2:
0046 E9 56 MOV A,R1
0047 5410 57 ANL A,#10H ; 判断输入值是否10h
0049 700E 58 JNZ OP_NEXT3
A51 MACRO ASSEMBLER REMOTE 06/23/2007 10:58:55 PAGE 2
004B 7402 59 MOV A,#2 ; 显示2
004D 116B 60 CALL SHOW_SEG
004F D292 61 SETB P1.2 ; 对应的LED亮
0051 7DFF 62 MOV R5,#0FFH
0053 11FC 63 CALL DELAY ; 延时
0055 C292 64 CLR P1.2 ; 对应的LED灭
0057 8011 65 JMP OP_OUT
0059 66 OP_NEXT3:
0059 E9 67 MOV A,R1
005A 5440 68 ANL A,#40H ; 判断输入值是否40h
005C 700C 69 JNZ OP_OUT
005E 7404 70 MOV A,#4 ; 显示4
0060 116B 71 CALL SHOW_SEG
0062 D290 72 SETB P1.0 ; 对应的LED亮
0064 7DFF 73 MOV R5,#0FFH
0066 11FC 74 CALL DELAY ; 延时
0068 C290 75 CLR P1.0 ; 对应的LED灭
006A 76 OP_OUT:
006A 22 77 RET
78
006B 79 SHOW_SEG:
80 ;--------------------------
81 ; 显示函数,参数从A输入
82 ;--------------------------
006B B4000A 83 CJNE A,#0,SHOW_1 ; 接收到0的显示
006E C2B5 84 CLR P3.5
0070 C2B4 85 CLR P3.4
0072 C2B3 86 CLR P3.3
0074 C2B7 87 CLR P3.7
0076 8070 88 JMP SHOW_OUT
0078 89 SHOW_1: ; 接收到1的显示
0078 B4000A 90 CJNE A,#0,SHOW_2
007B C2B5 91 CLR P3.5
007D C2B4 92 CLR P3.4
007F C2B3 93 CLR P3.3
0081 D2B7 94 SETB P3.7
0083 8063 95 JMP SHOW_OUT
0085 96 SHOW_2: ; 接收到2的显示
0085 B4000A 97 CJNE A,#0,SHOW_3
0088 C2B5 98 CLR P3.5
008A C2B4 99 CLR P3.4
008C D2B3 100 SETB P3.3
008E C2B7 101 CLR P3.7
0090 8056 102 JMP SHOW_OUT
0092 103 SHOW_3: ; 接收到3的显示
0092 B4000A 104 CJNE A,#0,SHOW_4
0095 C2B5 105 CLR P3.5
0097 C2B4 106 CLR P3.4
0099 D2B3 107 SETB P3.3
009B D2B7 108 SETB P3.7
009D 8049 109 JMP SHOW_OUT
009F 110 SHOW_4: ; 接收到4的显示
009F B4000A 111 CJNE A,#0,SHOW_5
00A2 C2B5 112 CLR P3.5
00A4 D2B4 113 SETB P3.4
00A6 C2B3 114 CLR P3.3
00A8 C2B7 115 CLR P3.7
00AA 803C 116 JMP SHOW_OUT
00AC 117 SHOW_5: ; 接收到5的显示
00AC B4000A 118 CJNE A,#0,SHOW_6
00AF C2B5 119 CLR P3.5
00B1 D2B4 120 SETB P3.4
00B3 C2B3 121 CLR P3.3
00B5 D2B7 122 SETB P3.7
00B7 802F 123 JMP SHOW_OUT
00B9 124 SHOW_6: ; 接收到6的显示
A51 MACRO ASSEMBLER REMOTE 06/23/2007 10:58:55 PAGE 3
00B9 B4000A 125 CJNE A,#0,SHOW_7
00BC C2B5 126 CLR P3.5
00BE D2B4 127 SETB P3.4
00C0 D2B3 128 SETB P3.3
00C2 C2B7 129 CLR P3.7
00C4 8022 130 JMP SHOW_OUT
00C6 131 SHOW_7: ; 接收到7的显示
00C6 B4000A 132 CJNE A,#0,SHOW_8
00C9 C2B5 133 CLR P3.5
00CB D2B4 134 SETB P3.4
00CD D2B3 135 SETB P3.3
00CF D2B7 136 SETB P3.7
00D1 8015 137 JMP SHOW_OUT
00D3 138 SHOW_8: ; 接收到8的显示
00D3 B4000A 139 CJNE A,#0,SHOW_9
00D6 D2B5 140 SETB P3.5
00D8 C2B4 141 CLR P3.4
00DA C2B3 142 CLR P3.3
00DC C2B7 143 CLR P3.7
00DE 8008 144 JMP SHOW_OUT
00E0 145 SHOW_9: ; 接收到9的显示
00E0 D2B5 146 SETB P3.5
00E2 C2B4 147 CLR P3.4
00E4 C2B3 148 CLR P3.3
00E6 D2B7 149 SETB P3.7
00E8 150 SHOW_OUT:
00E8 22 151 RET
152
00E9 153 RX:
154 ;---------------------------
155 ; 接收操作函数,读入无线模块接收的数据
156 ;---------------------------
00E9 E5B0 157 MOV A,P3
00EB 5404 158 ANL A,#04H ; 判断是否有信号来
00ED 700C 159 JNZ RX_OUT
00EF E590 160 MOV A,P1
00F1 F9 161 MOV R1,A ; 接收数据
00F2 162 RX_WAIT:
00F2 E5B0 163 MOV A,P3
00F4 5404 164 ANL A,#04H
00F6 B404F9 165 CJNE A,#04,RX_WAIT ; 判断是否完成
00F9 1120 166 CALL OP_RELAY
00FB 167 RX_OUT:
00FB 22 168 RET
169
00FC 170 DELAY:
171 ;------------------
172 ; 延时函数,参数从R5输入
173 ;-------------------
00FC 7C0A 174 MOV R4,#10
00FE 175 DELAY_LOOP:
00FE DCFE 176 DJNZ R4,DELAY_LOOP
0100 DDFA 177 DJNZ R5,DELAY
0102 22 178 RET
179
180 END
A51 MACRO ASSEMBLER REMOTE 06/23/2007 10:58:55 PAGE 4
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
DELAY. . . . . . . C ADDR 00FCH A
DELAY_LOOP . . . . C ADDR 00FEH A
MAIN . . . . . . . C ADDR 0019H A
OP_NEXT1 . . . . . C ADDR 0033H A
OP_NEXT2 . . . . . C ADDR 0046H A
OP_NEXT3 . . . . . C ADDR 0059H A
OP_OUT . . . . . . C ADDR 006AH A
OP_RELAY . . . . . C ADDR 0020H A
P1 . . . . . . . . D ADDR 0090H A
P3 . . . . . . . . D ADDR 00B0H A
RX . . . . . . . . C ADDR 00E9H A
RX_OUT . . . . . . C ADDR 00FBH A
RX_WAIT. . . . . . C ADDR 00F2H A
SHOW_1 . . . . . . C ADDR 0078H A
SHOW_2 . . . . . . C ADDR 0085H A
SHOW_3 . . . . . . C ADDR 0092H A
SHOW_4 . . . . . . C ADDR 009FH A
SHOW_5 . . . . . . C ADDR 00ACH A
SHOW_6 . . . . . . C ADDR 00B9H A
SHOW_7 . . . . . . C ADDR 00C6H A
SHOW_8 . . . . . . C ADDR 00D3H A
SHOW_9 . . . . . . C ADDR 00E0H A
SHOW_LOOP. . . . . C ADDR 0010H A
SHOW_OUT . . . . . C ADDR 00E8H A
SHOW_SEG . . . . . C ADDR 006BH A
SP . . . . . . . . D ADDR 0081H A
START. . . . . . . C ADDR 0003H A
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -