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

📄 单片机红外遥控解码中断子程序.lst

📁 使用INT1边沿触发
💻 LST
字号:
A51 MACRO ASSEMBLER  __芲籣篲外襙縚解码謃_献觃___                                         02/23/2009 09:52:07 PAGE     1


MACRO ASSEMBLER A51 V8.00d
OBJECT MODULE PLACED IN 单片机红外遥控解码中断子程序.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE 单片机红外遥控解码中断子程序.asm SET(SMALL) DEBUG EP

LOC  OBJ            LINE     SOURCE

0000                   1     ORG 0000H
0000 0162              2     AJMP MAIN;
                       3     
0013                   4     ORG 0013H;外部中断P3.3脚INT1入口地址 
0013 C2AF              5     CLR EA ;暂时关闭CPU的所有中断请求
0015 7E0A              6     MOV R6,#10
0017 1185              7     SB: ACALL YS4;调用882微秒延时子程序
0019 20B343            8     JB P3.3,EXIT;延时882微秒后判断P3.3脚是否出现高电平如果有就退出解码程序
001C DEF9              9     DJNZ R6, SB;重复10次,目的是检测在8820微秒内如果出现高电平就退出解码程序 
                      10     ;以上完成对遥控信号的9000微秒的初始低电平信号的识别。
001E 30B3FD           11     JNB P3.3, $ ;等待高电平避开9毫秒低电平引导脉冲
0021 118E             12     ACALL YS5 ;延时4.74毫秒避开4.5毫秒的结果码
                      13     
0023 7F1A             14     MOV R7,#26;忽略前26位系统识别码 
                      15     
0025 30B3FD           16     JJJJA:JNB P3.3,$;等待地址码第一位的高电平信号
0028 120085           17     LCALL YS4;高电平开始后用882微秒的时间尺去判断信号此时的高低电平状态
002B A2B3             18     MOV C,P3.3;将P3.3引脚此时的电平状态0或1存入C中
002D 5003             19     JNC UUUA;如果为0就跳转到UUUA
002F 12007C           20     LCALL YS3;检测到高电平1的话延时1毫秒等待脉冲高电平结束
0032 DFF1             21     UUUA: DJNZ R7,JJJJA
                      22     
0034 791A             23     MOV R1,#1AH ;设定1AH为起始RAM区
0036 7A02             24     MOV R2,#2;接收从1AH到1BH的2个内存,用于存放操作码和操作反码 
0038 7B08             25     PP: MOV R3,#8;每组数据为8位 
                      26     
003A 30B3FD           27     JJJJ: JNB P3.3,$;等待地址码第一位的高电平信号
003D 120085           28     LCALL YS4;高电平开始后用882微秒的时间尺去判断信号此时的高低电平状态
0040 A2B3             29     MOV C,P3.3;将P3.3引脚此时的电平状态0或1存入C中
0042 5003             30     JNC UUU;如果为0就跳转到UUU
0044 12007C           31     LCALL YS3;检测到高电平1的话延时1毫秒等待脉冲高电平结束
0047 E7               32     UUU: MOV A,@R1;将R1中地址的给A
0048 13               33     RRC A;将C中的值0或1移入A中的最低位
0049 F7               34     MOV @R1,A;将A中的数暂时存放在R1数值的内存中
004A DBEE             35     DJNZ R3,JJJJ;接收满8位换一个内存
004C 09               36     INC R1;对R1中的值加1,换下一个RAM
004D DAE9             37     DJNZ R2,PP ;接收完8位数据码和8位数据反码,存放在1AH/1BH中
                      38     
004F E51A             39     MOV A,1AH
0051 F4               40     CPL A;对1AH取反后和1BH比较
0052 B51B0A           41     CJNE A,1BH,EXIT;如果不等表示接收数据发生错误,放弃
0055 851A90           42     MOV P1,1AH;将按键的键值通过P1口的8个LED显示出来!
0058 C2A3             43     CLR P2.3;蜂鸣器鸣响-嘀嘀嘀-的声音,表示解码成功
005A 12006A           44     LCALL YS1
005D D2A3             45     SETB P2.3;蜂鸣器停止
005F D2AF             46     EXIT: SETB EA ;允许中断
0061 32               47     RETI ;退出解码子程序
                      48     ;以下为主程序进行CPU中断方式设置
0062                  49     MAIN:
0062 D2AF             50     SETB EA ;打开CPU总中断请求
0064 D28A             51     SETB IT1 ;设定INT1的触发方式为脉冲负边沿触发
0066 D2AA             52     SETB EX1 ;打开INT1中断请求
0068 80FE             53     JMP $;
                      54     
006A 7C14             55     YS1:MOV R4,#20;10ms延时
006C 7DF8             56     D1:MOV R5,#248
006E DDFE             57     DJNZ R5,$
0070 DCFA             58     DJNZ R4,D1
A51 MACRO ASSEMBLER  __芲籣篲外襙縚解码謃_献觃___                                         02/23/2009 09:52:07 PAGE     2

0072 22               59     RET
                      60     
0073 7C01             61     YS2:MOV R4,#1;0.5ms延时
0075 7DF8             62     D2:MOV R5,#248
0077 DDFE             63     DJNZ R5,$
0079 DCFA             64     DJNZ R4,D2
007B 22               65     RET
                      66     
007C 7C02             67     YS3:MOV R4,#2;1ms延时
007E 7DF8             68     D3:MOV R5,#248
0080 DDFE             69     DJNZ R5,$
0082 DCFA             70     DJNZ R4,D3
0084 22               71     RET
                      72     
0085 7C14             73     YS4: MOV R4,#20 ;(占用R4/R5)延时子程序4,精确延时882微秒
0087 7D14             74     D4: MOV R5,#20
0089 DDFE             75     DJNZ R5,$
008B DCFA             76     DJNZ R4,D4 
008D 22               77     RET
                      78     
008E 7C0A             79     YS5: MOV R4,#10 ;(占用R4/R5)延时子程序5,精确延时4740微秒
0090 7DEB             80     D5: MOV R5,#235
0092 DDFE             81     DJNZ R5,$
0094 DCFA             82     DJNZ R4,D5 
0096 22               83     RET
                      84     
                      85     END
                             
                             
A51 MACRO ASSEMBLER  __芲籣篲外襙縚解码謃_献觃___                                         02/23/2009 09:52:07 PAGE     3

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


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

D1 . . . . . . . .  C ADDR   006CH   A   
D2 . . . . . . . .  C ADDR   0075H   A   
D3 . . . . . . . .  C ADDR   007EH   A   
D4 . . . . . . . .  C ADDR   0087H   A   
D5 . . . . . . . .  C ADDR   0090H   A   
EA . . . . . . . .  B ADDR   00A8H.7 A   
EX1. . . . . . . .  B ADDR   00A8H.2 A   
EXIT . . . . . . .  C ADDR   005FH   A   
IT1. . . . . . . .  B ADDR   0088H.2 A   
JJJJ . . . . . . .  C ADDR   003AH   A   
JJJJA. . . . . . .  C ADDR   0025H   A   
MAIN . . . . . . .  C ADDR   0062H   A   
P1 . . . . . . . .  D ADDR   0090H   A   
P2 . . . . . . . .  D ADDR   00A0H   A   
P3 . . . . . . . .  D ADDR   00B0H   A   
PP . . . . . . . .  C ADDR   0038H   A   
SB . . . . . . . .  C ADDR   0017H   A   
UUU. . . . . . . .  C ADDR   0047H   A   
UUUA . . . . . . .  C ADDR   0032H   A   
YS1. . . . . . . .  C ADDR   006AH   A   
YS2. . . . . . . .  C ADDR   0073H   A   
YS3. . . . . . . .  C ADDR   007CH   A   
YS4. . . . . . . .  C ADDR   0085H   A   
YS5. . . . . . . .  C ADDR   008EH   A   


REGISTER BANK(S) USED: 0 

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

⌨️ 快捷键说明

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