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

📄 hwfs.lst

📁 遥控电扇的红外遥控模块,它的红外解码以及接收源程序.
💻 LST
字号:
A51 MACRO ASSEMBLER  HWFS                                                                 08/06/2005 09:10:52 PAGE     1


MACRO ASSEMBLER A51 V7.07
OBJECT MODULE PLACED IN HWFS.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE HWFS.asm SET(SMALL) DEBUG EP

LOC  OBJ            LINE     SOURCE

                       1     ;=============电风扇红外发射(遥控器)程序=====================================
                       2     ;按键说明:
                       3     ;K1:低风档,键值为 01
                       4     ;K2:中风档,键值为 02
                       5     ;K3:高风档,键值为 03
                       6     ;K4:彩灯档,键值为 04
                       7     ;K5:自然风档,键值为05
                       8     ;K6:睡眠风档,键值为06
                       9     ;K7:正常风档,键值为07
                      10     ;K8:定时档,键值为08
                      11     ;K9:开关机,键值为9
                      12     ;采用+5V供电,用89C2051作主芯片,当没有按键按下时,进入待机状态
                      13     ;按键采用INT0进行中断,只采用了8个按键
                      14     ;==============================================================================
                      15     ;$include (2051RAM.INC)
                +1    16     ;-------------------------------------------------------------------------------
                +1    17     ; AT89C2051 内存RAM分配  Fiel = 2051ram.INC
                +1    18     ;-------------------------------------------------------------------------------
                +1    19  +1 $save 
                +1    35  +1 $restore 
                +1    36     
                      37     
                      38     ;$include(REG51.INC)
                      39     
0000                  40             ORG     0000H
0000 2100             41             JMP     MAIN
0003                  42             ORG     0003H                   ;INT0的中断入口
0003 213D             43             JMP     KEY_INT0
000B                  44             ORG     000BH                   ;T0的中断入口
000B 2195             45             JMP     FM_T0
0100                  46             ORG     0100H
                      47     ;------------------------------------------------------------------------------
                      48     ;进入主程序
                      49     ;------------------------------------------------------------------------------
0100 787F             50     MAIN:   MOV     R0,#7FH         ;预使用单元清0
0102 E4               51             CLR     A
0103                  52     MAIN0:
0103 F6               53             MOV     @R0,A
0104 D8FD             54             DJNZ    R0,MAIN0                ;清缓冲的地址单元值
                      55     
0106 758160           56             MOV     SP,#60H
                      57                             
0109 75900F           58             MOV     P1,#00001111B           ;将P1置输入
010C C200             59             CLR     KEYON                   
010E C288             60             CLR     IT0                     ;设置电平触发
0110 D2B9             61             SETB    PT0                     
0112 D2A8             62             SETB    EX0
0114 D2AF             63             SETB    EA      
                      64             
                      65             
0116 7540FF           66             MOV     40H,#0FFH
0119 7541FF           67             MOV     41H,#0FFH
011C 7542FF           68             MOV     42H,#0FFH
                      69             
011F C2B0             70             CLR     DATAOUT
                      71                                             
0121 C2B3             72             CLR     FMOUT                   ;38K的中断初始值
0123 758902           73             MOV     TMOD,#02H               ;T0的工作方式2
A51 MACRO ASSEMBLER  HWFS                                                                 08/06/2005 09:10:52 PAGE     2

0126 758CF7           74             MOV     TH0,#0F7H               ;送初值
                      75                     
0129 D2B3             76             SETB    FMOUT                   
012B C28C             77             CLR     TR0                     ;1/3的高电平标志
012D 7A02             78             MOV     R2,#02H                 ;2/3的循环次数
                      79             
012F D54009           80             DJNZ    40H,LOOP1
0132 D54106           81             DJNZ    41H,LOOP1
0135 D54203           82             DJNZ    42H,LOOP1
0138 758701           83             MOV     PCON,#01H               ;进入待机
013B 80C3             84     LOOP1:  JMP     MAIN
                      85                     
                      86     ;=============================================================  
                      87     ;中断程序:完成其按键按下的标志位
                      88     ;=============================================================
013D                  89     KEY_INT0:
013D C0E0             90             PUSH    ACC
013F C0D0             91             PUSH    PSW
0141 C2A8             92             CLR     EX0
0143 E590             93             MOV     A,P1                    
0145 F4               94             CPL     A                       
0146 540F             95             ANL     A,#0FH
0148 FA               96             MOV     R2,A                    ;将行号存入R2中
0149 7590F0           97             MOV     P1,#0F0H                ;将列置输入端
014C E590             98             MOV     A,P1                    
014E F4               99             CPL     A
014F 54F0            100             ANL     A,#0F0H                 ;取列号并存入A中
0151 7903            101             MOV     R1,#03H                 ;置列初号
0153 7B03            102             MOV     R3,#03H                 ;置循环次数
0155 C3              103             CLR     C
0156 33              104     PINT01: RLC     A                       ;取列号
0157 40FD            105             JC      PINT01                  
0159 19              106             DEC     R1
015A DBFA            107             DJNZ    R3,PINT01
                     108                     
015C EA              109     PINT02: MOV     A,R2                    ;取行号
015D 7A00            110             MOV     R2,#00H
015F 7B03            111             MOV     R3,#03H                 ;置循环次数
0161 13              112     PINT03: RRC     A                       
0162 4003            113             JC      PINT04
0164 0A              114             INC     R2
0165 DBFA            115             DJNZ    R3,PINT03
0167 EA              116     PINT04: MOV     A,R2
0168 C3              117             CLR     C                       
0169 33              118             RLC     A                       
016A 33              119             RLC     A
016B 29              120             ADD     A,R1
016C F532            121             MOV     SENDBUF+2,A             ;键号存于32H单元中
016E F4              122             CPL     A
016F F533            123             MOV     SENDBUF+3,A             ;存键号的反码
0171 7530FF          124             MOV     SENDBUF,#0FFH           ;系统码在30H单元中
0174 753100          125             MOV     SENDBUF+1,#00H          ;系统反码在31H单元中
0177 1201A1          126             LCALL   SEND
017A D2A9            127             SETB    ET0                     ;发送引导码
017C D28C            128             SETB    TR0                     ;启动T0
017E 1201AC          129             LCALL   PP                      ;发送一帧数据.包括系统码和数据码
0181 C28C            130             CLR     TR0                     ;当发送完后关断定时器
0183 C2A9            131             CLR     ET0                     ;关T0的中断
0185 D2A8            132             SETB    EX0                     ;执行完后打开外INT0
0187 7540FF          133             MOV     40H,#0FFH
018A 7541FF          134             MOV     41H,#0FFH
018D 7542FF          135             MOV     42H,#0FFH
0190 D0D0            136             POP     PSW
0192 D0E0            137             POP     ACC
0194 32              138             RETI
                     139     ;=============================================================================
A51 MACRO ASSEMBLER  HWFS                                                                 08/06/2005 09:10:52 PAGE     3

0195 20D504          140     FM_T0:  JB      F0,IT01
0198 DA06            141             DJNZ    R2,GRET
019A 7A02            142             MOV     R2,#2
019C B2B3            143     IT01:   CPL     FMOUT
019E B2D5            144             CPL     F0
01A0 32              145     GRET:   RETI
                     146     ;==============================================================================            
                                  
                     147     ;引导脉冲子程序

⌨️ 快捷键说明

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