📄 hongwai.lst
字号:
A51 MACRO ASSEMBLER HONGWAI 12/11/2006 11:28:08 PAGE 1
MACRO ASSEMBLER A51 V7.07
OBJECT MODULE PLACED IN hongwai.OBJ
ASSEMBLER INVOKED BY: e:\Keil\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
0008 9 IR_SB:
0008 1153 10 ACALL DELAY882;延时882微秒
000A 20B22B 11 JB P3.2,IR_ERROR;数据错误退出解码
000D DEF9 12 DJNZ R6,IR_SB;重复10次检测
13 ;识别连发码
000F 30B2FD 14 JNB P3.2,$;等待高电平避开9MS低电平引导脉冲
0012 1161 15 ACALL DELAY2400
0014 30B21F 16 JNB P3.2,IR_RP;这里为低电平,认为是连发码
0017 1161 17 ACALL DELAY2400 ;延时4.74MS避开4.5MS的结果码
18 ;读取32位数据码
0019 791A 19 MOV R1,#1AH;存放数据的起始地址
001B 7A04 20 MOV R2,#4
001D 21 IR_4BYTE:
001D 7B08 22 MOV R3,#8
001F 23 IR_8BIT:
001F 30B2FD 24 JNB P3.2,$;等待地址码第一位的高电平信号
0022 120053 25 LCALL DELAY882;高电平来后开始延时882uS
0025 A2B2 26 MOV C,P3.2
0027 5003 27 JNC IR_8BIT_0;延时后为为低电平则跳到IR_8BIT_0
0029 12005A 28 LCALL DELAY1000
002C 29 IR_8BIT_0:
002C E7 30 MOV A,@R1;将R1中的地址给累加器A
002D 13 31 RRC A;将C移入A的最低位
002E F7 32 MOV @R1,A;保存A中的值到RAM中
002F DBEE 33 DJNZ R3,IR_8BIT;接收地址码的高8位
0031 09 34 INC R1;下一地址
0032 DAE9 35 DJNZ R2,IR_4BYTE;接收完成8位数据,8位数据码和16位地址码
0034 8005 36 JMP IR_GOTO ;解码结束
0036 37 IR_RP:
0036 8003 38 JMP IR_GOTO
0038 39 IR_ERROR:
0038 020000 40 LJMP MAIN
003B 41 IR_GOTO: ;执行部分
003B E51C 42 MOV A,1CH
003D F4 43 CPL A
003E B51DF7 44 CJNE A,1DH,IR_ERROR
0041 851D90 45 MOV P1,1DH ;接收到的数据显示到P1口
0044 751A00 46 MOV 1AH,#00H ;接收区清0
0047 751B00 47 MOV 1BH,#00H
004A 751C00 48 MOV 1CH,#00H
004D 751D00 49 MOV 1DH,#00H
0050 020000 50 LJMP MAIN;回到主循环
0053 51 DELAY882: ;延时函数
0053 7FCA 52 MOV R7,#202
0055 53 DELAY882_A:;882us延时
0055 00 54 NOP
0056 00 55 NOP
0057 DFFC 56 DJNZ R7,DELAY882_A
0059 22 57 RET
005A 58 DELAY1000:
A51 MACRO ASSEMBLER HONGWAI 12/11/2006 11:28:08 PAGE 2
005A 7FE5 59 MOV R7,#229
005C 60 DELAY1000_A:
005C 00 61 NOP
005D 00 62 NOP
005E DFFC 63 DJNZ R7,DELAY1000_A
0060 22 64 RET
0061 65 DELAY2400:
0061 7FF5 66 MOV R7,#245
0063 67 DELAY2400_A:
0063 00 68 NOP
0064 00 69 NOP
0065 00 70 NOP
0066 00 71 NOP
0067 00 72 NOP
0068 00 73 NOP
0069 00 74 NOP
006A DFF7 75 DJNZ R7,DELAY2400_A
006C 22 76 RET
77 END
A51 MACRO ASSEMBLER HONGWAI 12/11/2006 11:28:08 PAGE 3
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
DELAY1000. . . . . C ADDR 005AH A
DELAY1000_A. . . . C ADDR 005CH A
DELAY2400. . . . . C ADDR 0061H A
DELAY2400_A. . . . C ADDR 0063H A
DELAY882 . . . . . C ADDR 0053H A
DELAY882_A . . . . C ADDR 0055H A
IR . . . . . . . . C ADDR 0006H A
IR_4BYTE . . . . . C ADDR 001DH A
IR_8BIT. . . . . . C ADDR 001FH A
IR_8BIT_0. . . . . C ADDR 002CH A
IR_ERROR . . . . . C ADDR 0038H A
IR_GOTO. . . . . . C ADDR 003BH A
IR_RP. . . . . . . C ADDR 0036H 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 + -