数字时钟中断程序汇编程序及原理(3)

发布时间:2021-06-10

AT89S51 单片机实验及实践教程开 始

计数单元清零 TH0,TL0 装入初值 开中断, 并允许 T0 中断 秒按键识别成功否? SECOND 加 1 SECOND=60 吗? SECOND=0 显示数据处理 分按键识别成功否? MINITE 加 1 MINITE=60 吗? MINITE=0 显示数据处理 时按键识别成功否? HOUR 加 1 HOUR=24 吗? HOUR=0 显示数据处理

- 107 -

AT89S51 单片机实验及实践教程T0 中断入口

通过查表方式显示数据

数码位选加 1

位选数值=8 吗?

位选数值=0

秒计数加 1

秒计数=500 吗?

秒计数=0

SECOND 加 1

SECOND=60 吗? SECOND=0, MINITE 加 1 并 MINITE=60 吗? MINITE=0,并 HOUR 加 1 HOUR=24 吗? HOUR=0 显示数据处理 中断返回

- 108 -

6. 汇编源程序

SECOND EQU 30H

MINITE EQU 31H

HOUR EQU 32H

HOURK BIT P0.0

MINITEK BIT P0.1

SECONDK BIT P0.2

DISPBUF EQU 40H

DISPBIT EQU 48H

T2SCNTA EQU 49H

T2SCNTB EQU 4AH

TEMP EQU 4BH

ORG 00H

LJMP START

ORG 0BH

LJMP INT_T0

START: MOV SECOND,#00H

MOV MINITE,#00H

MOV HOUR,#12

MOV DISPBIT,#00H

MOV T2SCNTA,#00H

MOV T2SCNTB,#00H

MOV TEMP,#0FEH

LCALL DISP

MOV TMOD,#01H

MOV TH0,#(65536-2000) / 256

MOV TL0,#(65536-2000) MOD 256

SETB TR0

SETB ET0

SETB EA

WT: JB SECONDK,NK1

LCALL DELY10MS

JB SECONDK,NK1

INC SECOND

MOV A,SECOND

CJNE A,#60,NS60

MOV SECOND,#00H

NS60: LCALL DISP

JNB SECONDK,$

NK1: JB MINITEK,NK2

LCALL DELY10MS

JB MINITEK,NK2

INC MINITE

MOV A,MINITE

CJNE A,#60,NM60

MOV MINITE,#00H

NM60: LCALL DISP

JNB MINITEK,$

NK2: JB HOURK,NK3

LCALL DELY10MS

JB HOURK,NK3

INC HOUR

精彩图片

热门精选

大家正在看