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

📄 clock24.lst

📁 51系列单片机实验课程:时钟程序 (显示时刻时、分、秒)
💻 LST
字号:
A51 MACRO ASSEMBLER  CLOCK24                                                              11/21/2007 15:45:48 PAGE     1


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

LOC  OBJ            LINE     SOURCE

                       1     ;*****************************************
                       2     ;程序功能:在MCU#3中的数码管上显示一个时钟
                       3     ;*****************************************
0000                   4             ORG     0000H
0000 2100              5             AJMP    START
                       6     ;=============================================
                       7     ;中断入口
000B                   8             ORG     000BH
000B 2182              9             AJMP    T0INT
                      10     ;=============================================
                      11     ;RAM区变量定义
  0030                12             DISBUF  EQU     30H     ;显示参数传递
  0038                13             POSIT   EQU     38H     ;位选
  0040                14             NUM     EQU     40H     ;秒循环次数
  0050                15             SEC     EQU     50H     ;秒
  0051                16             MIN     EQU     51H     ;分钟
  0052                17             HOR     EQU     52H     ;小时
                      18     ;=============================================
                      19     ;程序开始部分(主函数)
0100                  20             ORG     0100H
0100                  21     START:
0100 758160           22             MOV     SP, #60H
0103 758901           23             MOV     TMOD, #01H
0106 758C42           24             MOV     TH0, #42H
0109 758AB0           25             MOV     TL0, #0B0H
010C 753210           26             MOV     DISBUF+2, #16
010F 753510           27             MOV     DISBUF+5, #16
0112 755000           28             MOV     SEC, #0
0115 75513B           29             MOV     MIN, #59
0118 755217           30             MOV     HOR, #23
011B 754013           31             MOV     NUM, #19
011E D28C             32             SETB    TR0
0120 D2A9             33             SETB    ET0
0122 D2AF             34             SETB    EA
0124 12015C           35     LOOP:   LCALL   CHANGE
0127 12012C           36             LCALL   DISPLAY
012A 2124             37             AJMP    LOOP
                      38     
                      39             
                      40     ;=============================================
                      41     ;8路数码管驱动
012C                  42     DISPLAY:
012C 753880           43             MOV     POSIT, #80H     ;用于指示数码管位选,初始化为第一个数码管亮
012F 7908             44             MOV     R1, #08H        ;用于指示程序循环,8个数码管每个送一次数后,本子程序结束
0131 9001B1           45             MOV     DPTR, #DISCODE  ;指向数码管的码表
0134 7830             46             MOV     R0, #DISBUF     ;指向显示数组
0136                  47     DISLOOP:                        ;为方便起见,只将第一个数码管的执行过程讲明,其余依次类推
0136 E6               48             MOV     A, @R0          ;当R0=#DISBUF时,通过间接寻址将DISBUF中的内容放入A中
0137 93               49             MOVC    A, @A+DPTR      ;通过查表,A为地址偏移量,找出A中的数所对应的码值(即段码)
                             ,还放在A中
0138 F580             50             MOV     P0, A           ;将A中的数送至P0端口,单此时并未送至数码管
013A D293             51             SETB    P1.3            ;使能573锁存器,此时,段码才送至数码管的段选端
013C C293             52             CLR     P1.3            ;关闭573锁存器,此时,数据锁存在数码管的段选端
013E 853880           53             MOV     P0, POSIT       ;送位选至P0,以便指示哪一个数码管亮
0141 D292             54             SETB    P1.2            ;使能573锁存器,此时,位选信号才送至数码管的位选端,相应的

⌨️ 快捷键说明

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