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

📄 hongwai.lst

📁 红外收发遥控的51单片机例子程序,基于STC89C52单片机,通用51汇编指令
💻 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 + -