网站公告列表     本站全新改版正在建设中!  [admin  2007年10月22日]        
加入收藏
设为首页
联系站长
您现在的位置: 东方电子科技有限公司 >> 技术文章 >> 51单片机更多 >> 文章正文
  [图文]用DS1302制作的6位数字钟           ★★★ 【字体:
用DS1302制作的6位数字钟
用DS1302制作的6位数字钟
作者:佚名    文章来源:本站原创    点击数:    更新时间:2007-10-18    
用DS1302制作的6位数字钟

org 00h
;显示缓冲单元在70H—75H,70H—71H显示秒,72H—73H显示分,74H—75H显示时

;时间计数单元在70H—71H(秒)、76H—77H(分)、78H—79H(时),7AH单元放熄灭符(#0AH)

;计数单元采用BCD码计数,定时器T0设置为50MS溢出中断,为秒计数用,定时器T1为调整时闪烁用

;P3.2为调整按钮,P1口为字符输出口,采用共阳显示管。



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

;; 中断入口程序 ;;

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

;

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.2,CLOSEDIS 

MOV R2,#06H

SETB ET1

SETB TR1

SET2: JNB P3.2,SET1

SETB 00H

SET4: JB P3.2,SET3

LCALL DL05S

JNB P3.2,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.2,CLOSE

LCALL DISPLAY

JB P3.2,CLOSE

WAITH: JNB P3.2,WAITH

LJMP START1

SETHH: CLR 00H

SETHH1: JNB P3.2,SET5

SETB 01H

SET6: JB P3.2,SET7

LCALL DL05S

JNB P3.2,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.2,SETOUT1

LCALL DISPLAY

JNB P3.2,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
文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    没有相关文章
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    Copyright © 2005-2008 东方电子科技. All Rights Reserved. 本网站由东方电子科技制作与维护 地址:东莞市塘厦镇林村环村路190号二三楼整层(林村小学对面) 电话:076987282024 手机:13712641904 Email: sanplug@126.com 粤ICP备06051393号 站长:admin