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

📄 clock.asm

📁 SCOND EQU 30H MINUTE EQU 31H HOUR EQU 32H CLOCKM EQU 33H CLOCKH EQU 34H DISPM EQU 35H DISP
💻 ASM
字号:

SCOND   EQU  30H;秒寄存器
MINUTE  EQU  31H;分寄存器
HOUR    EQU  32H;小时寄存器
CLOCKM  EQU  33H;闹钟分寄存器
CLOCKH  EQU  34H;闹钟小时寄存器
DISPM   EQU  35H;显示分寄存器
DISPH   EQU  36H;显示小时寄存器
XSD     EQU  37H;秒点寄存器



        ORG	00H
	AJMP	START
	ORG	0BH;定时器T0中断
	AJMP	T0ZD
	RETI
      	ORG	50H
;*********************************
;程序开始
;*********************************
START:  MOV P0,#00
        MOV P2,#00
	MOV 37H,#00
       	MOV SP,#60H
        MOV HOUR,#12
	MOV MINUTE,#00
	MOV SCOND,#00
        MOV CLOCKH,#06
	MOV CLOCKM,#00;闹钟为6:00
	MOV TMOD,#01H;定时器0方式1
        MOV TH0,#03CH
        MOV TL0,#0B0H;50ms的定时赋值
        MOV R0,#10;0.5S计时
	MOV R1,#2;一秒记数
	MOV R2,#0;
	SETB EA;开中断
	SETB ET0;开定时中断
        SETB TR0;启动定时器0 
MAIN:   ACALL DESPLAY
        JNB P3.3,CLOCKSET
        JNB P1.6,HSET
        JNB P1.7,MSET
        AJMP MAIN
CLOCKSET:ACALL DESPLAY
        JNB P3.3,CLOCKSET
        CLR P1.2
LOOP:   ACALL DESPLAY
        JNB P1.6,CLOCKHSET
        JNB P1.7,CLOCKMSET
	JNB P3.3,SETOVER
	AJMP LOOP
CLOCKHSET:ACALL DESPLAY
	JNB P1.6,CLOCKHSET
	INC CLOCKH
	MOV A,CLOCKH
	CJNE A,#24,LOOP
	MOV CLOCKH,#0
	AJMP LOOP
CLOCKMSET:ACALL DESPLAY
	JNB P1.7,CLOCKMSET
	INC CLOCKM
	MOV A,CLOCKM
	CJNE A,#60,LOOP
	MOV CLOCKM,#0
	AJMP LOOP
SETOVER:ACALL DESPLAY
        JNB P3.3,SETOVER
	SETB P1.2
	CLR P1.0
        AJMP MAIN
;****************************************
HSET:   ACALL DESPLAY
	JNB P1.6,HSET
	INC HOUR
	MOV A,HOUR
	CJNE A,#24,MAIN
	MOV HOUR,#0
	AJMP MAIN
MSET:   ACALL DESPLAY
	JNB P1.7,MSET
	INC MINUTE
	MOV A,MINUTE
	CJNE A,#60,MAIN
	MOV MINUTE,#0
	AJMP MAIN
;*********************************
;程序显示
;*********************************
DESPLAY:JNB P1.2,CLOCK
        MOV A,MINUTE
        MOV DISPM,A
        MOV A,HOUR
        MOV DISPH,A
        AJMP DES

CLOCK:  MOV A,CLOCKM
        MOV DISPM,A
	MOV A,CLOCKH
	MOV DISPH,A

DES:    MOV A,DISPM
        MOV B,#10
        DIV AB
	ADD A,R2
	MOV DPTR,#TAB
	MOVC A,@A+DPTR
	MOV P2,A
        setb P0.6
	ACALL DELAY
	clr P0.6

        MOV A,B
        ADD A,R2
	MOVC A,@A+DPTR
	MOV P2,A
        setb P0.7
	ACALL DELAY
	clr P0.7

        MOV A,DISPH
        MOV B,#10
        DIV AB
        JZ  JUMP
        ADD A,R2
        MOV DPTR,#TAB
	MOVC A,@A+DPTR
       	MOV P2,A
        SETB P0.4
JUMP:	ACALL DELAY
	clr P0.4
        
        MOV A,B
        ADD A,R2
	MOVC A,@A+DPTR
	MOV P2,A
        SETB P0.5
        ACALL DELAY
	clr P0.5
	RET
;*********************************
;程序T0中断
;*********************************
T0ZD:	PUSH ACC
	PUSH PSW
        MOV TH0,#03CH
        MOV TL0,#0B0H;50ms的定时赋值 
        DJNZ R0,EXIT
	MOV R0,#10
	CPL 37H
	JNB 37H,MD
	MOV R2,#0
	AJMP TIME
MD:     MOV R2,#10
TIME:   DJNZ R1,EXIT
	MOV R1,#2
	INC SCOND
	MOV A,SCOND
        CJNE A,#60,CLOCKING
	MOV SCOND,#0
	
	INC MINUTE
	MOV A,MINUTE
	CJNE A,#60,CLOCKING
	MOV MINUTE,#0
	
	INC HOUR
	MOV A,HOUR
	CJNE A,#24,CLOCKING
	MOV HOUR,#0
	AJMP TIME
CLOCKING:JB P1.0,EXIT
         MOV A,MINUTE
	 CJNE A,CLOCKM,EXIT
	 MOV A,HOUR
	 CJNE A,CLOCKH,EXIT
	 SETB P1.0
EXIT:   POP PSW	;出棧
  	POP ACC
	RETI
DELAY:  MOV R6,#100
D0:     MOV R7,#10
        DJNZ R7,$
        DJNZ R6,D0
        RET
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
TAB:
	DB 03FH,006H,05BH,04FH,066H,06DH,07DH,007H,07FH,06FH
	DB 0BFH,086H,0DBH,0CFH,0E6H,0EDH,0FDH,087H,0FFH,0EFH
	;共阴显示0,1,2,3,4,5,6,7,8,9
END	

⌨️ 快捷键说明

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