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

📄 定时器3.lst

📁 定时报警器汇编源程序
💻 LST
字号:
A51 MACRO ASSEMBLER  禵蔩芲3                                                              06/02/2007 23:21:22 PAGE     1


MACRO ASSEMBLER A51 V7.07
OBJECT MODULE PLACED IN 定时器3.OBJ
ASSEMBLER INVOKED BY: E:\Program Files\Keil 51\C51\BIN\A51.EXE 定时器3.ASM SET(COMPACT) DEBUG EP

LOC  OBJ            LINE     SOURCE

  0040                 1     Timecount    EQU 40H;记时一秒循环20次的记数标志
  0041                 2     FLAG         EQU 41H;高低位片选的标志
  0042                 3     SETFLAG      EQU 42H;设置键的标志
  0043                 4     PreCious     EQU 43H;按键的缓冲内容
  0044                 5     KEYFLAG      EQU 44H;按键去抖的参考变量
  0045                 6     BUF1         EQU 45H;高位显示数字的偏移量
  0046                 7     BUF0         EQU 46H;低位显示数字的偏移量
                       8     
0000                   9     ORG 0000H
0000 0150             10     AJMP START;主程序
                      11     
000B                  12     ORG 000BH
000B 214B             13     AJMP TIMEINTTF0;定时器0的中断服务子程序
                      14     
001B                  15     ORG 001BH
001B 020110           16     LJMP TIMEINTTF1;定时器1的中断服务子程序
                      17     
0050                  18     ORG 0050H
                      19     
0050 754509           20     START:MOV BUF1,#09H
0053 754609           21           MOV BUF0,#09H
0056 754100           22           MOV FLAG,#00H
0059 754000           23           MOV TIMECOUNT,#00H
005C 754200           24           MOV SETFLAG,#00H
005F 75440D           25           MOV KEYFLAG,#0DH
0062 7543FF           26           MOV PreCious,#0FFH
                      27                                 ;变量初始化
0065 758911           28           MOV TMOD,#11H         ;选择定时器,工作模式
0068 758160           29           MOV SP,#60H
006B 75A800           30           MOV IE,#00H
006E 758BB0           31           MOV TL1,#0B0H
0071 758D3C           32           MOV TH1,#3CH
0074 758AEF           33           MOV TL0,#0EFH
0077 758CCF           34           MOV TH0,#0CFH         ;定时器初值
007A D2AF             35           SETB EA
007C D2AB             36           SETB ET1
007E D2A9             37           SETB ET0
0080 D28C             38           SETB TR0
0082 D28E             39           SETB TR1               ;开中断
0084 D2A6             40           SETB P2.6
0086 900179           41     LOOP:MOV DPTR,#BCD           ;主循环
0089 120093           42          LCALL BCDDISPLAY        ;数码管显示
008C AF43             43          MOV R7,PreCious
008E 1200B7           44          LCALL KEYCHECK          ;键盘查询
0091 80F3             45     SJMP LOOP
                      46     
                      47     
0093                  48     BCDDISPLAY:                  ;数码管动态显示子程序
0093 C0D0             49                PUSH PSW
0095 75D018           50                MOV PSW,#18H
0098 E546             51                MOV A,BUF0
009A 93               52                MOVC A,@A+DPTR
009B F8               53                MOV R0,A
009C E545             54                MOV A,BUF1
009E 93               55                MOVC A,@A+DPTR
009F F9               56                MOV R1,A
00A0 E541             57                MOV A,FLAG
00A2 6009             58                JZ C00
A51 MACRO ASSEMBLER  禵蔩芲3                                                              06/02/2007 23:21:22 PAGE     2

00A4 E8               59                MOV A,R0
00A5 F580             60                MOV P0,A
00A7 D2A5             61                SETB P2.5
00A9 C2A4             62                CLR P2.4
00AB 8007             63                SJMP C01          ;显示高位
00AD E9               64            C00:MOV A,R1
00AE F580             65                MOV P0,A
00B0 D2A4             66                SETB P2.4
00B2 C2A5             67                CLR P2.5          ;显示低位
00B4 D0D0             68            C01:POP PSW
00B6 22               69                RET
                      70     
00B7                  71     KEYCHECK:                    ;键盘查询子程序
00B7 BF0E05           72              CJNE R7,#0EH,C011   ;K1是否按下(暂停键)
00BA B28E             73              CPL TR1
00BC 7F00             74              MOV R7,#00H
00BE 22               75              RET
00BF AF43             76         C011:MOV R7,PreCious
00C1 BF0D1E           77              CJNE R7,#0DH,C014   ;K2是否按下(设置键)
00C4 0542             78              INC SETFLAG
00C6 75430F           79              MOV PRECIOUS,#0FH
00C9 7942             80              MOV R1,#SETFLAG
00CB E7               81              MOV A,@R1
00CC 6020             82              JZ C015
00CE B70305           83              CJNE @R1,#03H,C012  ;K2按3次,SETFLAG返回初值
00D1 754200           84              MOV SETFLAG,#00H
00D4 8018             85              SJMP C015
00D6 B70104           86         C012:CJNE @R1,#01H,C013   ;高位显示内容
00D9 7945             87              MOV R1,#BUF1
00DB 8005             88              SJMP C014
00DD B70202           89         C013:CJNE @R1,#02H,C014   ;低位显示内容
00E0 7946             90              MOV R1,#BUF0
00E2 E542             91         C014:MOV A,SETFLAG
00E4 6008             92              JZ C015
00E6 1200EF           93              LCALL TIMESET        ;时间设置
00E9 120093           94              LCALL BcdDisplay     ;数码管显示
00EC 80D1             95              SJMP C011
00EE 22               96         C015:RET
                      97     
00EF                  98     TIMESET:                      ;时间设置子程序
00EF BF0B0C           99             CJNE R7,#0BH,C031     ;K3是否按下(上)
00F2 07              100             INC @R1               ;显示内容加1
00F3 75430F          101             MOV PRECIOUS,#0FH
00F6 E7              102             MOV A,@R1
00F7 B40A11          103             CJNE A,#0AH,C032      ;加到9返回0
00FA 7700            104             MOV @R1,#00H
00FC 800D            105             SJMP C032
00FE BF070A          106        C031:CJNE R7,#07H,C032     ;K4是否按下(下)
0101 17              107             DEC @R1               ;显示内容减1
0102 75430F          108             MOV PRECIOUS,#0FH
0105 E7              109             MOV A,@R1
0106 B4FF02          110             CJNE A,#0FFH,C032     ;减到0返回9
0109 7709            111             MOV @R1,#09H
010B D2A6            112        C032:SETB P2.6
010D D28E            113             SETB TR1
010F 22              114             RET
                     115     
                     116     
0110 C0D0            117     TIMEINTTF1:PUSH PSW
0112 C0E0            118               PUSH ACC
0114 758BB0          119               MOV TL1,#0B0H
0117 758D3C          120               MOV TH1,#3CH        ;重装初值
011A 0540            121               INC TIMECOUNT
011C E540            122               MOV A,TIMECOUNT
011E B41425          123               CJNE A,#14H,C045    ;计时20次,到达1秒钟
0121 754000          124               MOV TIMECOUNT,#00H  ;置0,进行下次计时1秒
A51 MACRO ASSEMBLER  禵蔩芲3                                                              06/02/2007 23:21:22 PAGE     3

0124 E542            125               MOV A,SETFLAG
0126 B4001D          126               CJNE A,#00H,C045    ;判断是否在计时状态
0129 E546            127               MOV A,BUF0
012B 6004            128               JZ C043             ;低位减到0,转
012D 1546            129               DEC BUF0            ;时间显示减1秒
012F 8015            130               SJMP C045
0131 E545            131          C043:MOV A,BUF1          
0133 6007            132               JZ C044             ;高位也减到0,转
0135 1545            133               DEC BUF1            ;高位减1
0137 754609          134               MOV BUF0,#09H       ;低位变9
013A 800A            135               SJMP C045
013C 754600          136          C044:MOV BUF0,#00H
013F 754500          137               MOV BUF1,#00H
0142 C2A6            138               CLR P2.6            ;计时时间到,LED灯亮
0144 C28E            139               CLR TR1             ;计时停止
0146 D0E0            140          C045:POP ACC
0148 D0D0            141               POP PSW
014A 32              142               RETI
                     143     
                     144          
014B C0D0            145     TIMEINTTF0:PUSH PSW
014D C0E0            146                PUSH ACC
014F 75D010          147                MOV PSW,#10H
0152 758AEF          148                MOV TL0,#0efH
0155 758CCF          149                MOV TH0,#0cfH      ;重装初值
0158 E541            150           C050:MOV A,FLAG
015A F4              151                CPL A
015B F541            152                MOV FLAG,A
015D E5A0            153                MOV A,P2
015F 540F            154                ANL A,#0FH
0161 FF              155                MOV R7,A
0162 1544            156                DEC KEYFLAG
0164 E544            157                MOV A,KEYFLAG
0166 700C            158                JNZ C052
0168 75440D          159                MOV KEYFLAG,#0DH    ;延时判断2次
016B E5A0            160                MOV A,P2
016D 540F            161                ANL A,#0FH
016F 6F              162                XRL A,R7
0170 7002            163                JNZ C052
0172 8F43            164                MOV PreCious,R7     ;按键去抖动
0174 D0E0            165           C052:POP ACC
0176 D0D0            166                POP PSW
0178 32              167                RETI
                     168     
                     169     
0179 C0F9A4B0        170     BCD: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H    ;数码管显示代码
017D 999282F8                
0181 8090                    
                     171     END
A51 MACRO ASSEMBLER  禵蔩芲3                                                              06/02/2007 23:21:22 PAGE     4

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


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

ACC. . . . . . . .  D ADDR   00E0H   A   
BCD. . . . . . . .  C ADDR   0179H   A   
BCDDISPLAY . . . .  C ADDR   0093H   A   
BUF0 . . . . . . .  N NUMB   0046H   A   
BUF1 . . . . . . .  N NUMB   0045H   A   
C00. . . . . . . .  C ADDR   00ADH   A   
C01. . . . . . . .  C ADDR   00B4H   A   
C011 . . . . . . .  C ADDR   00BFH   A   
C012 . . . . . . .  C ADDR   00D6H   A   
C013 . . . . . . .  C ADDR   00DDH   A   
C014 . . . . . . .  C ADDR   00E2H   A   
C015 . . . . . . .  C ADDR   00EEH   A   
C031 . . . . . . .  C ADDR   00FEH   A   
C032 . . . . . . .  C ADDR   010BH   A   
C043 . . . . . . .  C ADDR   0131H   A   
C044 . . . . . . .  C ADDR   013CH   A   
C045 . . . . . . .  C ADDR   0146H   A   
C050 . . . . . . .  C ADDR   0158H   A   
C052 . . . . . . .  C ADDR   0174H   A   
EA . . . . . . . .  B ADDR   00A8H.7 A   
ET0. . . . . . . .  B ADDR   00A8H.1 A   
ET1. . . . . . . .  B ADDR   00A8H.3 A   
FLAG . . . . . . .  N NUMB   0041H   A   
IE . . . . . . . .  D ADDR   00A8H   A   
KEYCHECK . . . . .  C ADDR   00B7H   A   
KEYFLAG. . . . . .  N NUMB   0044H   A   
LOOP . . . . . . .  C ADDR   0086H   A   
P0 . . . . . . . .  D ADDR   0080H   A   
P2 . . . . . . . .  D ADDR   00A0H   A   
PRECIOUS . . . . .  N NUMB   0043H   A   
PSW. . . . . . . .  D ADDR   00D0H   A   
SETFLAG. . . . . .  N NUMB   0042H   A   
SP . . . . . . . .  D ADDR   0081H   A   
START. . . . . . .  C ADDR   0050H   A   
TH0. . . . . . . .  D ADDR   008CH   A   
TH1. . . . . . . .  D ADDR   008DH   A   
TIMECOUNT. . . . .  N NUMB   0040H   A   
TIMEINTTF0 . . . .  C ADDR   014BH   A   
TIMEINTTF1 . . . .  C ADDR   0110H   A   
TIMESET. . . . . .  C ADDR   00EFH   A   
TL0. . . . . . . .  D ADDR   008AH   A   
TL1. . . . . . . .  D ADDR   008BH   A   
TMOD . . . . . . .  D ADDR   0089H   A   
TR0. . . . . . . .  B ADDR   0088H.4 A   
TR1. . . . . . . .  B ADDR   0088H.6 A   


REGISTER BANK(S) USED: 0 

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

⌨️ 快捷键说明

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