📄 clock24.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 + -