99网
您的当前位置:首页数字时钟代码

数字时钟代码

来源:99网


;定义地址

SECOND EQU 30H

MINITE EQU 31H

HOUR EQU 32H

TCNT EQU 34H

HOURK BIT P3.0;时调整端口

MINITEK BIT P3.1;分调整端口

SECONDK BIT P3.2;秒调整端口

ORG 00H

SJMP START

ORG 0BH

LJMP INT_0

;初始化程序

START: MOV HOUR,#00H

MOV MINITE,#00H

MOV SECOND,#00H

SETB SECONDK

SETB MINITEK

SETB HOURK

MOV TCNT,#00H

MOV TMOD,#01H

MOV TH0,#4CH

MOV TL0,#01H

mov dptr,#0ff23h

mov a,#81h

movx @dptr,a

;开中断

SETB EA

SETB ET0

SETB TR0

;查询外界中断

WT: LCALL DISP

;查询秒按键是否按下

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

MOV A,HOUR

CJNE A,#24,NH24

MOV HOUR,#00H

NH24:

LCALL DISP

JNB HOURK,$

NK3: LJMP WT

;显示时钟子程序

DISP:

;秒显示

MOV A,SECOND

MOV B,#0AH

DIV AB

MOV 40H,A

MOV DPTR,#0FF20H

MOV A,#0FDH

MOVX @DPTR,A

MOV DPTR,#TABLE

MOV A,40H

MOVC A,@A+DPTR

MOV DPTR,#0FF21H

MOVX @DPTR,A

LCALL DELAY

MOV DPTR,#0FF20H

MOV A,#0FEH

MOVX @DPTR,A

MOV A,B

MOV DPTR,#TABLE

MOVC A,@A+DPTR

MOV DPTR,#0FF21H

MOVX @DPTR,A

LCALL DELAY

;分显示

MOV A,MINITE

MOV B,#0AH

DIV AB

MOV 41H,A

MOV DPTR,#0FF20H

MOV A,#0F7H

MOVX @DPTR,A

MOV DPTR,#TABLE

MOV A,41H

MOVC A,@A+DPTR

MOV DPTR,#0FF21H

MOVX @DPTR,A

LCALL DELAY

MOV DPTR,#0FF20H

MOV A,#0FBH

MOVX @DPTR,A

MOV A,B

MOV DPTR,#TABLE

MOVC A,@A+DPTR

ANL A,#7FH ;分和秒之间加点

MOV DPTR,#0FF21H

MOVX @DPTR,A

LCALL DELAY

;时显示

MOV A,HOUR

MOV B,#0AH

DIV AB

MOV 42H,A

MOV DPTR,#0FF20H

MOV A,#0DFH

MOVX @DPTR,A

MOV DPTR,#TABLE

MOV A,42H

MOVC A,@A+DPTR

MOV DPTR,#0FF21H

MOVX @DPTR,A

LCALL DELAY

MOV DPTR,#0FF20H

MOV A,#0EFH

MOVX @DPTR,A

MOV A,B

MOV DPTR,#TABLE

MOVC A,@A+DPTR

ANL A,#7FH ;时和分之间加点

MOV DPTR,#0FF21H

MOVX @DPTR,A

LCALL DELAY

RET

;定时中断子程序

INT_0:

MOV TH0,#4CH

MOV TL0,#01H

INC TCNT

MOV A,TCNT

CJNE A,#14H,RETUNE

INC SECOND

MOV TCNT,#00H

MOV A,SECOND

CJNE A,#3CH,RETUNE

INC MINITE

MOV SECOND,#00H

MOV A,MINITE

CJNE A,#3CH,RETUNE

INC HOUR

MOV MINITE,#00H

MOV A,HOUR

CJNE A,#18H,RETUNE

MOV HOUR,#00H

MOV MINITE,#00H

MOV SECOND,#00H

MOV TCNT,#00H

RETUNE:RETI

;数码管代码段

TABLE: DB 0C0H,0F9H,0A4H,0B0H,99H

DB 92H,82H,0F8H,80H,90H

DB 88H,83H,0C6H,0A1H,86H,8EH

;选择数码管延时子程序

DELAY: MOV R6,#0AH

D1: MOV R7,#0FFH

DJNZ R7,$

DJNZ R6,D1

RET

;按键去抖动子程序

DELY10MS:

MOV R4,#20

D2: MOV R5,#248

DJNZ R5,$

DJNZ R4,D2

RET

END

;外部接线:P3.0接按键开关S1调整时

接按键开关S2调整分 P3.1

;P3.2接拨码开关K1调整秒

因篇幅问题不能全部显示,请点此查看更多更全内容