1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > ds12c887程序C语言 时钟芯片DS12C887使用说明详解.doc

ds12c887程序C语言 时钟芯片DS12C887使用说明详解.doc

时间:2019-09-03 03:51:59

相关推荐

ds12c887程序C语言 时钟芯片DS12C887使用说明详解.doc

汇编程序:

ORG 0000H

AJMP START

START:

ACALL SETTIME;设置初始时间

LOOP: ACALL GETTIME;循环读取当前时间

AJMP LOOP;

SETTIME:

MOV DPTR,#7D0AH;DS12C887的A寄存器

MOV A,#20H

MOVX @DPTR,A;打开DS12C887的内部晶振并使RTC(实时时钟)记录时间

INC DPTR;DS12C887的B寄存器

MOV A,#08H

MOVX @DPTR,A;设十进制BCD码,24小时制,不定时

MOV DPTR,#7D0DH;DS12C887的D寄存器

MOVX A,@DPTR;如果D寄存器的第7位为0,表示电池耗尽

JNB ACC.7,ERROR

MOV DPTR,#7D00H;DS12C887的秒单元

MOV A,#00H

MOVX @DPTR,A;写入秒

MOV DPTR,#7D02H;DS12C887分单元

MOV A,#21H

MOVX @DPTR,A;写入分

MOV DPTR,#7D04H;DS12C887时单元

MOV A,#03H

MOVX @DPTR,A;写入时

MOV DPTR,#7D06H;DS12C887星期单元

MOV A,#03H

MOVX @DPTR,A;写入星期

MOV DPTR,#7D07H;DS12C887日单元

MOV A,#20H

MOVX @DPTR,A;写入日

MOV DPTR,#7D08H;DS12C887月单元

MOV A,#07H

MOVX @DPTR,A;写入月

MOV DPTR,#7D09H;DS12C887年单元

MOV A,#05H

MOVX @DPTR,A;写入年时间

ERROR:RET

GETTIME:

MOV DPTR,#7D0AH

MOVX A,@DPTR

JB ACC.7,GETTIME ;REGISTER A的UIP位=0时才可以读数据

MOV DPTR,#7D00H

MOVX A,@DPTR

MOV R2,A ;SECONDS

ACALL DISPLAY

MOV DPTR,#7D02H

MOVX A,@DPTR

MOV R1,A

ACALL DISPLAY ;MINUTES

MOV DPTR,#7D04H

MOVX A,@DPTR

MOV R0,A ;HOURS

ACALL DISPLAY

ACALL DELAY

RET

DISPLAY:

MOV DPTR,#TAB

MOV SCON,#00H

MOV R3,A

ANL A,#0FH

MOVC A,@A+DPTR

MOV SBUF,A

JNB TI,$

CLR TI

MOV A,R3

SWAP A

ANL A,#0FH

MOVC A,@A+DPTR

MOV SBUF,A

JNB TI,$

CLR TI

RET

DELAY:

MOV R4,#0FH

DE1:MOV R5,#0FFH

DJNZ R5,$

DJNZ R4,DE1

RET

TAB: DB 03H,9FH,25H,0DH,99H,49H,41H,1FH,01H,09H,11H,0C1H,63H,85H,61H,71H

END

C语言源程序:

#include "reg52.h"

#include "absacc.h"

#define DSA XBYTE[0x7F0A]//12c887寄存器A地址

#define DSB XBYTE[0x7F0B]//B地址

#def

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。