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

📄 mine.lst

📁 实时钟 实时钟 实时钟 实时钟
💻 LST
字号:
A51 MACRO ASSEMBLER  MINE                                                                 06/28/2007 21:40:12 PAGE     1


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

LOC  OBJ            LINE     SOURCE

0000                   1             ORG 0000H
0000 020030            2             LJMP MAIN
000B                   3             ORG 000BH       ;定时器0溢出中断入口
000B 020064            4             LJMP TIME
0030                   5             ORG 0030H
0030 752000            6     MAIN:   MOV 20H,#00H    ;存毫秒
0033 752100            7             MOV 21H,#00H    ;存秒
0036 752200            8             MOV 22H,#00H    ;存分
0039 752300            9             MOV 23H,#00H    ;存小时
003C 75B802           10             MOV IP,#02H     ;IP初始化,将定时器0中断优先级设为高优先级
003F 75A882           11             MOV IE,#82H     ;IE初始化,EA=1,ET0=1
0042 758901           12             MOV TMOD,#01H   ;设定定时器工作方式,方式1,16位工作方式
0045 758AB0           13             MOV TL0,#0B0H
0048 758C3C           14             MOV TH0,#3CH    ;计数初值
004B D28C             15             SETB TR0         ;启动定时
004D 758140           16             MOV SP,#40H      ;重设堆栈指针
0050 752400           17             MOV 24H,#00H    ;24H中存选择键按下次数
0053 1200A6           18     NEXT:   LCALL DISP      ;调用显示子程序
0056 1200FB           19             LCALL KEY       ;调用按键检测子程序
0059 60F8             20             JZ NEXT                 ;A=0无键按下,继续检测
005B 12011B           21             LCALL ANKEY     ;调用按键处理子程序
005E 020053           22             LJMP NEXT        ;重新循环
0061 00               23             NOP
0062 00               24             NOP
0063 00               25             NOP
                      26     
                      27     ;定时中断处理程序:
0064 C0E0             28     TIME:    PUSH ACC       ;保护现场
0066 C0D0             29             PUSH PSW
0068 758AB0           30             MOV TL0,#0B0H   ;赋定时初值定时50MS
006B 758C3C           31             MOV TH0,#3CH
006E 0520             32             INC 20H          ;毫秒加一
0070 E520             33             MOV A,20H
0072 B4142A           34             CJNE A,#20,RETI1        ;50mS*20=1S要循环20次,秒才加一
0075 752000           35             MOV 20H,#00H    ;一秒钟时间到
0078 E521             36             MOV A,21H
007A 2401             37             ADD A,#01H      ;秒加一
007C D4               38             DA A            ;BCD码十进制校准
007D F521             39             MOV 21H,A
007F B43C1D           40             CJNE A,#3CH,RETI1
0082 752100           41             MOV 21H,#00H    ;一分钟时间到
0085 E522             42             MOV A,22H
0087 2401             43             ADD A,#01H
0089 D4               44             DA A
008A F522             45             MOV 22H,A
008C B43C10           46             CJNE A,#3CH,RETI1
008F 752200           47             MOV 22H,#00H    ;一小时时间到
0092 E523             48             MOV A,23H
0094 2401             49             ADD A,#01H
0096 D4               50             DA A
0097 F523             51             MOV 23H,A
0099 B41803           52             CJNE A,#18H,RETI1
009C 752300           53             MOV 23H,#00H     ;到时间达到24小时,清零.
009F D0D0             54     RETI1:  POP PSW         ;恢复现场
00A1 D0E0             55             POP ACC
00A3 32               56             RETI             ;中断返回?
00A4 00               57             NOP
00A5 00               58             NOP
A51 MACRO ASSEMBLER  MINE                                                                 06/28/2007 21:40:12 PAGE     2

                      59     
                      60     ;显示子程序
00A6 E521             61     DISP:   MOV A,21H       ;处理秒21H-->2EH,2FH
00A8 540F             62             ANL A,#0FH
00AA F52F             63             MOV 2FH,A       ;秒个位
00AC E521             64             MOV A,21H 
00AE 54F0             65             ANL A,#0F0H
00B0 C4               66             SWAP A
00B1 F52E             67             MOV 2EH,A       ;秒十位
                      68     
00B3 E522             69             MOV A,22H       ;处理分钟22H-->2CH,2DH
00B5 540F             70             ANL A,#0FH
00B7 F52D             71             MOV 2DH,A
00B9 E522             72             MOV A,22H
00BB 54F0             73             ANL A,#0F0H
00BD C4               74             SWAP A
00BE F52C             75             MOV 2CH,A
                      76     
00C0 E523             77             MOV A,23H       ;处理小时23H-->2AH,2BH
00C2 540F             78             ANL A,#0FH
00C4 F52B             79             MOV 2BH,A
00C6 E523             80             MOV A,23H
00C8 54F0             81             ANL A,#0F0H
00CA C4               82             SWAP A
00CB F52A             83             MOV 2AH,A
                      84     
00CD 782F             85             MOV R0,#2FH     ;显示偏移量,秒个位
00CF 7B06             86             MOV R3,#06H     ;要显示六位数
00D1 9000E9           87             MOV DPTR,#TABLE 
00D4 7420             88             MOV A,#20H      ;00100000, P2.5有效,送秒个位
00D6 F5F0             89     LOOP1:   MOV B,A                 ;B暂存A值
00D8 F5A0             90             MOV P2,a                ;P2数码管控制端
00DA E6               91             MOV A,@R0       ;查表,7段译码
00DB 93               92             MOVC A,@A+DPTR
00DC F580             93             MOV P0,a        ;送显示
00DE 7A80             94             MOV R2,#80H      ;延时
00E0 DAFE             95             DJNZ R2,$
00E2 18               96             DEC R0
00E3 E5F0             97             MOV A,B
00E5 03               98             RR A            ;动态显示,数码管控制端循环有效
00E6 DBEE             99             DJNZ R3,LOOP1    ;循环显示
00E8 22              100             RET
                     101     
00E9 287EA262        102     TABLE:  db 28h,7eh,0a2h,62h,74h,61h,21h ;不带小数点
00ED 746121                  
00F0 7A206000        103             DB 7ah,20h,60h,00,00,00,00,00,00
00F4 00000000                
00F8 00                      
00F9 00              104             NOP
00FA 00              105             NOP
                     106     
                     107     ;按键判断程序 P1.3-P1.5功能键 低电平有效
00FB E590            108     KEY:    MOV A,P1
00FD F4              109             CPL A           ;低电平有效,取反判断
00FE 5438            110             ANL A,#38H      ;00111000判断有无键按下
0100 6016            111             JZ RETX                 ;A=0无键按下则返回
0102 1201A0          112             LCALL DELAY             ;LCALL DISP ;延时
0105 E590            113             MOV A,P1        ;再次判断,以便去抖
0107 F4              114             CPL A
0108 5438            115             ANL A,#38H
010A 600C            116             JZ RETX                 ;键盘去抖动
010C FE              117             MOV R6,A        ;将键值存入R6。
010D 1200A6          118     LOOP2:  LCALL DISP      ;
0110 E590            119             MOV A,P1
0112 F4              120             CPL A
0113 5438            121             ANL A,#38H
A51 MACRO ASSEMBLER  MINE                                                                 06/28/2007 21:40:12 PAGE     3

0115 70F6            122             JNZ LOOP2       ;等待键释放
0117 EE              123             MOV A,R6
0118 22              124             RETX: RET
0119 00              125             NOP
011A 00              126             NOP
                     127     
                     128     ;按键处理子程序
011B C2AF            129     ANKEY:   CLR EA ;关中断
011D EE              130     LX:      MOV A,R6
011E 20E306          131             JB ACC.3,L1      ;是选择键转L1,选择是小时、分还是秒调整
0121 20E423          132             JB ACC.4,L2     ;是数值增加键转L2
0124 20E574          133             JB ACC.5,L3      ;是确认键转L3
                     134     
0127 E524            135     L1:     MOV A,24H
0129 B40303          136             CJNE A,#03H,NEXTT;不为3,继续增加
012C 752400          137             MOV 24H,#00H    ;为3清零
012F 0524            138     NEXTT:  INC 24H         ;累计选择键按下次数
0131 E524            139             MOV A,24H
0133 B40104          140             CJNE  A,#01H,LED23      ;不为一,则转
0136 D2B0            141             SETB P3.0               ;为一,点亮秒指示灯
0138 8053            142             JMP L12
013A E524            143     LED23:  MOV A,24H
013C B40204          144             CJNE A,#02H,LED3;
013F D2B1            145             SETB P3.1       ;为二,点亮分指示灯
0141 804A            146             JMP L12
0143 D2B4            147     LED3:      SETB P3.4    ;点亮小时指示灯
0145 8046            148             JMP L12         ;结束
                     149     
0147 A824            150     L2:     MOV R0,24H      ;判断是哪一位增加       
0149 B80002          151             CJNE R0,#00H,J0  ;R0不为0,转J0 
014C 803F            152             JMP L12
                     153     
014E B80113          154     J0:     CJNE R0,#01H,MIN   ;R0不为一,转
0151 A921            155             MOV R1,21H      ;R0为一,处理秒
0153 B93B05          156             CJNE R1,#3BH,J1   ;秒不为59,则加一
0156 752100          157             MOV 21H,#00H    ;秒为59,则清零
0159 8032            158             JMP L12
015B E521            159     J1:     MOV A,21H
015D 2401            160             ADD A,#01H
015F D4              161             DA A
0160 F521            162             MOV 21H,A
0162 8029            163             JMP L12
                     164     
0164 B80213          165     MIN:    CJNE R0,#02H,HOUR   ;R0不为2,转
0167 A922            166             MOV R1,22H      ;R0为2,处理分
0169 B93B05          167             CJNE R1,#3BH,J2   ;分不为59,则加一
016C 752200          168             MOV 22H,#00H    ;分为59,则清零
016F 801C            169             JMP L12
0171 E522            170     J2:     MOV A,22H
0173 2401            171             ADD A,#01H
0175 D4              172             DA A
0176 F522            173             MOV 22H,A
0178 8013            174             JMP L12
                     175     
017A A923            176     HOUR:   MOV R1,23H      ;剩下为处理小时
017C B91705          177             CJNE R1,#17H,J3   ;小时不为23,则加一
017F 752300          178             MOV 23H,#00H    ;小时为23,则清零
0182 8009            179             JMP L12
0184 E523            180     J3:     MOV A,23H
0186 2401            181             ADD A,#01H
0188 D4              182             DA A
0189 F523            183             MOV 23H,A
018B 8000            184             JMP L12
                     185             
018D 1200A6          186     L12:     LCALL DISP 
0190 1200A6          187             LCALL DISP
A51 MACRO ASSEMBLER  MINE                                                                 06/28/2007 21:40:12 PAGE     4

0193 1200FB          188             LCALL KEY        ;判断有无键按下
0196 60F5            189             JZ L12
0198 02011D          190             LJMP LX
                     191     
019B D2AF            192     L3:             SETB EA         ;开中断
019D C224            193             CLR 24H 
019F 22              194             RET
                     195     
                     196     ;延时10mS
01A0 7F14            197     DELAY:   MOV R7,#14H    ;1周期
01A2 7EFF            198     TM:     MOV R6,#0FFH    ;1
01A4 DEFE            199     TM1:    DJNZ R6,TM1     ;2
01A6 DFFA            200             DJNZ R7,TM      ;2
01A8 22              201             RET             ;2
                     202     ;1+[1+(2*255)+2]*20+2=10.263ms
                     203     
                     204             END
                                     
A51 MACRO ASSEMBLER  MINE                                                                 06/28/2007 21:40:12 PAGE     5

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


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

ACC. . . . . . . .  D ADDR   00E0H   A   
ANKEY. . . . . . .  C ADDR   011BH   A   
B. . . . . . . . .  D ADDR   00F0H   A   
DELAY. . . . . . .  C ADDR   01A0H   A   
DISP . . . . . . .  C ADDR   00A6H   A   
EA . . . . . . . .  B ADDR   00A8H.7 A   
HOUR . . . . . . .  C ADDR   017AH   A   
IE . . . . . . . .  D ADDR   00A8H   A   
IP . . . . . . . .  D ADDR   00B8H   A   
J0 . . . . . . . .  C ADDR   014EH   A   
J1 . . . . . . . .  C ADDR   015BH   A   
J2 . . . . . . . .  C ADDR   0171H   A   
J3 . . . . . . . .  C ADDR   0184H   A   
KEY. . . . . . . .  C ADDR   00FBH   A   
L1 . . . . . . . .  C ADDR   0127H   A   
L12. . . . . . . .  C ADDR   018DH   A   
L2 . . . . . . . .  C ADDR   0147H   A   
L3 . . . . . . . .  C ADDR   019BH   A   
LED23. . . . . . .  C ADDR   013AH   A   
LED3 . . . . . . .  C ADDR   0143H   A   
LOOP1. . . . . . .  C ADDR   00D6H   A   
LOOP2. . . . . . .  C ADDR   010DH   A   
LX . . . . . . . .  C ADDR   011DH   A   
MAIN . . . . . . .  C ADDR   0030H   A   
MIN. . . . . . . .  C ADDR   0164H   A   
NEXT . . . . . . .  C ADDR   0053H   A   
NEXTT. . . . . . .  C ADDR   012FH   A   
P0 . . . . . . . .  D ADDR   0080H   A   
P1 . . . . . . . .  D ADDR   0090H   A   
P2 . . . . . . . .  D ADDR   00A0H   A   
P3 . . . . . . . .  D ADDR   00B0H   A   
PSW. . . . . . . .  D ADDR   00D0H   A   
RETI1. . . . . . .  C ADDR   009FH   A   
RETX . . . . . . .  C ADDR   0118H   A   
SP . . . . . . . .  D ADDR   0081H   A   
TABLE. . . . . . .  C ADDR   00E9H   A   
TH0. . . . . . . .  D ADDR   008CH   A   
TIME . . . . . . .  C ADDR   0064H   A   
TL0. . . . . . . .  D ADDR   008AH   A   
TM . . . . . . . .  C ADDR   01A2H   A   
TM1. . . . . . . .  C ADDR   01A4H   A   
TMOD . . . . . . .  D ADDR   0089H   A   
TR0. . . . . . . .  B ADDR   0088H.4 A   


REGISTER BANK(S) USED: 0 

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

⌨️ 快捷键说明

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