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

📄 clock.asm

📁 单片机只是别人的东西
💻 ASM
字号:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; 中断入口程序 ;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;

ORG 0000H

LJMP START

ORG 0003H

RETI

ORG 000BH

LJMP INTT0

ORG 0013H

RETI

ORG 001BH

LJMP INTT1

ORG 0023H

RETI

ORG 002BH

RETI

;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; 主 程 序 ;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;

START: MOV R0, #70H

MOV R7, #0BH

MOV 20H, #00H

CLEARDISP: MOV @R0, #00H

INC R0

DJNZ R7,CLEARDISP

MOV 7AH,#0AH

MOV TMOD,#11H

MOV TL0, #0B0H

MOV TH0, #3CH

MOV TL1, #0B0H

MOV TH1, #3CH

SETB EA

SETB ET0

SETB TR0

MOV R4,#14H

start1: LCALL DISPLAY

JNB P3.2,SETMM1

SJMP Start1

SETMM1: LJMP SETMM

;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; 1秒定时程 序 ;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;

INTT0: PUSH ACC

PUSH PSW

CLR ET0

CLR TR0

MOV A,#0B7H ;中断同步修正

ADD A,TL0

MOV TL0,A

MOV A,#3CH

ADD A,TH0

MOV TH0,A

SETB TR0

DJNZ R4, OUTT0

ADDSS: MOV R4,#14H

MOV R0,#71H

ACALL ADD1 ;加1程序

MOV A,R3

CLR C

CJNE A,#60H,ADDMM

ADDMM: JC OUTT0

ACALL CLR0

MOV R0,#77H

ACALL ADD1

MOV A,R3

CLR C

CJNE A,#60H,ADDHH

ADDHH: JC OUTT0

ACALL CLR0

MOV R0,#79H

ACALL ADD1

MOV A,R3

CLR C

CJNE A,#24H,HOUR

HOUR: JC OUTT0

ACALL CLR0

OUTT0: MOV 72H,76H

MOV 73H,77H

MOV 74H,78H

MOV 75H,79H

POP PSW

POP ACC

SETB ET0

RETI

;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; 闪动调时程 序 ;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;

INTT1: PUSH ACC

PUSH PSW

MOV TL1, #0B0H

MOV TH1, #3CH

DJNZ R2,INTT1OUT

MOV R2,#06H

CPL 02H

JB 02H,FLASH1

MOV 72H,76H

MOV 73H,77H

MOV 74H,78H

MOV 75H,79H

INTT1OUT: POP PSW

POP ACC

RETI

FLASH1: JB 01H,FLASH2

MOV 72H,7AH

MOV 73H,7AH

MOV 74H,78H

MOV 75H,79H

AJMP INTT1OUT

FLASH2: MOV 72H,76H

MOV 73H,77H

MOV 74H,7AH

MOV 75H,7AH

AJMP INTT1OUT

;

;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; 加1程序 ;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;

ADD1: MOV A,@R0

DEC R0

SWAP A

ORL A,@R0

ADD A,#01H

DA A

MOV R3,A

ANL A,#0FH

MOV @R0,A

MOV A,R3

INC R0

SWAP A

ANL A,#0FH

MOV @R0,A

RET

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; 清零程序 ;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;

CLR0: CLR A

MOV @R0,A

DEC R0

MOV @R0,A

RET

;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; 时钟调整程序 ;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;

SETMM: cLR ET0

CLR TR0

LCALL DL1S

JB P3.4,CLOSEDIS

MOV R2,#06H

SETB ET1

SETB TR1

SET2: JNB P3.4,SET1

SETB 00H

SET4: JB p3.4,SET3

LCALL DL05S

JNB p3.4,SETHH

MOV R0,#77H ;加1分程序

LCALL ADD1

MOV A,R3

CLR C

CJNE A,#60H,HHH

HHH: JC SET4

LCALL CLR0

CLR C

AJMP SET4

CLOSEDIS: SETB ET0

SETB TR0

CLOSE: JB p3.4,CLOSE

LCALL DISPLAY

JB p3.4,CLOSE

WAITH: JNB p3.4,WAITH

LJMP START1

SETHH: CLR 00H

SETHH1: JNB p3.4,SET5

SETB 01H

SET6: JB p3.4,SET7

LCALL DL05S

JNB p3.4,SETOUT

MOV R0,#79H

LCALL ADD1

MOV A,R3

CLR C

CJNE A,#24H,HOUU

HOUU: JC SET6

LCALL CLR0

AJMP SET6

SETOUT: JNB p3.4,SETOUT1

LCALL DISPLAY

JNB p3.4,SETOUT

CLR 01H

CLR 00H

CLR 02H

CLR TR1

CLR ET1

SETB TR0

SETB ET0

LJMP START1

SET1: LCALL DISPLAY

AJMP SET2

SET3: LCALL DISPLAY

AJMP SET4

SET5: LCALL DISPLAY

AJMP SETHH1

SET7: LCALL DISPLAY

AJMP SET6

SETOUT1: LCALL DISPLAY

AJMP SETOUT

;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; 显示程序 ;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;

DISPLAY: MOV R1,#70H

MOV R5,#0BFH

PLAY: MOV A,R5

MOV P2,A

MOV A,@R1



MOV DPTR,#TAB

MOVC A,@A+DPTR

MOV P0,A

LCALL DL1MS

INC R1

MOV A,R5

JNB ACC.1,ENDOUT

RR A

MOV R5,A

AJMP PLAY

ENDOUT: SETB P2.1

MOV P0,#0FFH

RET

TAB: DB 28h,7eh,0a2h,62h,74h,61h,21h,7ah,20h,60h

;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; 延时程序 ;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;

DL1MS: MOV R6,#14H

DL1: MOV R7,#19H

DL2: DJNZ R7,DL2

DJNZ R6,DL1

RET

;

DS20MS: ACALL DISPLAY

ACALL DISPLAY

ACALL DISPLAY

RET

DL1S: LCALL DL05S

LCALL DL05S

RET

DL05S: MOV R3,#20H

DL05S1: LCALL DISPLAY

DJNZ R3,DL05S1

RET

END

⌨️ 快捷键说明

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