📄 hongwai.lst
字号:
A51 MACRO ASSEMBLER HONGWAI 11/17/2006 12:06:43 PAGE 1
MACRO ASSEMBLER A51 V7.07
OBJECT MODULE PLACED IN hongwai.OBJ
ASSEMBLER INVOKED BY: E:\Program Files\C51\BIN\A51.EXE hongwai.asm SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1
2
0000 3 ORG 0000H
0000 4 MAIN:
0000 30B203 5 JNB P3.2,IR ;遥控扫描
0003 020000 6 LJMP MAIN ;主循环
0006 7 IR: ;解码开始
0006 7E0A 8 MOV R6,#10
9
0008 10 IR_SB:
11 ;CPL P1.0
12 ;LCALL DELAY882;延时882微秒
13
14
0008 7FCA 15 MOV R7,#202
000A 16 DELAY882_A:;882us延时
000A 00 17 NOP
000B 00 18 NOP
000C DFFC 19 DJNZ R7,DELAY882_A
000E B2B5 20 CPL P3.5
21
0010 20B245 22 JB P3.2,IR_ERROR;数据错误退出解码
0013 DEF3 23 DJNZ R6,IR_SB;重复10次检测
24 ;识别连发码
0015 30B2FD 25 JNB P3.2,$;等待高电平避开9MS低电平引导脉冲
26
27 ;LCALL DELAY2400
0018 7FF5 28 MOV R7,#245
001A 29 DELAY2400_A:
001A 00 30 NOP
001B 00 31 NOP
001C 00 32 NOP
001D 00 33 NOP
001E 00 34 NOP
001F 00 35 NOP
0020 00 36 NOP
0021 DFF7 37 DJNZ R7,DELAY2400_A
38
0023 30B22F 39 JNB P3.2,IR_RP;这里为低电平,认为是连发码
40
41 ;LCALL DELAY2400 ;延时4.74MS避开4.5MS的结果码
0026 7FF5 42 MOV R7,#245
0028 43 DELAY2400_B:
0028 00 44 NOP
0029 00 45 NOP
002A 00 46 NOP
002B 00 47 NOP
002C 00 48 NOP
002D 00 49 NOP
002E 00 50 NOP
002F DFF7 51 DJNZ R7,DELAY2400_B
52
53 ;读取32位数据码
0031 791A 54 MOV R1,#1AH;存放数据的起始地址
0033 7A04 55 MOV R2,#4
56
0035 57 IR_4BYTE:
0035 7B08 58 MOV R3,#8
A51 MACRO ASSEMBLER HONGWAI 11/17/2006 12:06:43 PAGE 2
0037 59 IR_8BIT:
0037 30B2FD 60 JNB P3.2,$;等待地址码第一位的高电平信号
61
62 ;LCALL DELAY882;高电平来后开始延时882uS
003A 7FCA 63 MOV R7,#202
003C 64 DELAY882_B:;882us延时
003C 00 65 NOP
003D 00 66 NOP
003E DFFC 67 DJNZ R7,DELAY882_B
68
0040 A2B2 69 MOV C,P3.2
0042 5006 70 JNC IR_8BIT_0;延时后为为低电平则跳到IR_8BIT_0
71
72 ;LCALL DELAY1000
0044 7FE5 73 MOV R7,#229
0046 74 DELAY1000_A:
0046 00 75 NOP
0047 00 76 NOP
0048 DFFC 77 DJNZ R7,DELAY1000_A
78
004A 79 IR_8BIT_0:
004A E7 80 MOV A,@R1;将R1中的地址给累加器A
004B 13 81 RRC A;将C移入A的最低位
004C F7 82 MOV @R1,A;保存A中的值到RAM中
004D DBE8 83 DJNZ R3,IR_8BIT;接收地址码的高8位
004F 09 84 INC R1;下一地址
0050 DAE3 85 DJNZ R2,IR_4BYTE;接收完成8位数据,8位数据码和16位地址码
0052 02005B 86 LJMP IR_GOTO ;解码结束
0055 87 IR_RP:
0055 02005B 88 LJMP IR_GOTO
0058 89 IR_ERROR:
0058 020000 90 LJMP MAIN
005B 91 IR_GOTO: ;执行部分
005B E51C 92 MOV A,1CH
005D F4 93 CPL A
005E B51DF7 94 CJNE A,1DH,IR_ERROR
0061 851D90 95 MOV P1,1DH ;接收到的数据显示到P1口
0064 751A00 96 MOV 1AH,#00H ;接收区清0
0067 751B00 97 MOV 1BH,#00H
006A 751C00 98 MOV 1CH,#00H
006D 751D00 99 MOV 1DH,#00H
0070 020000 100 LJMP MAIN;回到主循环
101
102 ;DELAY1000:
103 ; MOV R7,#229
104 ;DELAY1000_A:
105 ; NOP
106 ; NOP
107 ; DJNZ R7,DELAY1000_A
108 ; RET
109 ;DELAY2400:
110 ; MOV R7,#245
111 ; DELAY2400_A:
112 ; NOP
113 ; NOP
114 ; NOP
115 ; NOP
116 ; NOP
117 ; NOP
118 ; NOP
119 ; DJNZ R7,DELAY2400_A
120 ; RET
121 ; DELAY882: ;延时函数
122 ; MOV R7,#202
123 ; DELAY882_A:;882us延时
124 ; NOP
A51 MACRO ASSEMBLER HONGWAI 11/17/2006 12:06:43 PAGE 3
125 ; NOP
126 ;DJNZ R7,DELAY882_A
127 ;RET
128 END
A51 MACRO ASSEMBLER HONGWAI 11/17/2006 12:06:43 PAGE 4
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
DELAY1000_A. . . . C ADDR 0046H A
DELAY2400_A. . . . C ADDR 001AH A
DELAY2400_B. . . . C ADDR 0028H A
DELAY882_A . . . . C ADDR 000AH A
DELAY882_B . . . . C ADDR 003CH A
IR . . . . . . . . C ADDR 0006H A
IR_4BYTE . . . . . C ADDR 0035H A
IR_8BIT. . . . . . C ADDR 0037H A
IR_8BIT_0. . . . . C ADDR 004AH A
IR_ERROR . . . . . C ADDR 0058H A
IR_GOTO. . . . . . C ADDR 005BH A
IR_RP. . . . . . . C ADDR 0055H A
IR_SB. . . . . . . C ADDR 0008H A
MAIN . . . . . . . C ADDR 0000H A
P1 . . . . . . . . D ADDR 0090H A
P3 . . . . . . . . D ADDR 00B0H A
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -