📄 clock.lst
字号:
A51 MACRO ASSEMBLER CLOCK 08/27/2007 21:37:42 PAGE 1
MACRO ASSEMBLER A51 V7.08a
OBJECT MODULE PLACED IN clock.OBJ
ASSEMBLER INVOKED BY: E:\Program files\Keil\C51\BIN\A51.EXE clock.asm SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2 ;
3 ;实例七:时钟 clock
4 ;
5 ;现象:当系统上电复位时,时钟开始走时
6 ;
7 ;作者:杨欣,刘长焕,张延强 电路飞翔网 eedesign@163.com
8 ;
9 ; http://www.circuitfly.com
10 ;
11 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
12
13
0000 14 ORG 00H ; 起始地址00H
0000 800B 15 JMP MAIN ; 跳转到MAIN
000B 16 ORG 0BH ; Timer 0中断向量地址
000B 801D 17 JMP TIM0 ; 跳转到TIM0
18
19 ; 这里是主程序段,使能中断、装载计数初始值等
000D 20 MAIN:
000D 75A882 21 MOV IE, #82H ; 使能Timer 0中断
0010 758901 22 MOV TMOD, #01H ; 使用Timer 0工作在模式1下
0013 758CF0 23 MOV TH0, #0F0H ; 装载计数初始值,每4ms中断
一次
0016 758A60 24 MOV TL0, #60H ;
0019 7800 25 MOV R0, #00H ; Timer 0的中断计数器
001B 753000 26 MOV 30H, #00H ; 秒的计数器
001E 753100 27 MOV 31H, #00H ; 分的计数器
0021 753200 28 MOV 32H, #00H ; 时的计数器
0024 7900 29 MOV R1, #00H ; 6位七段数码管扫描计数器
0026 D28C 30 SETB TR0 ; 启动Timer 0中断
31
0028 80FE 32 JMP $
33
34 ; 这里是Timer 0中断服务子程序,用于秒、分、时计时及扫描显示
002A 35 TIM0:
002A C0E0 36 PUSH ACC ; ACC压栈
002C B8FA36 37 CJNE R0, #250, SCAN ; 如果R0≠250,即不到1秒,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -