最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

DS1302电子时钟,51单片机汇编程序编写,1602显示

来源:动视网 责编:小OO 时间:2025-10-05 03:58:21
文档

DS1302电子时钟,51单片机汇编程序编写,1602显示

FLAGEQUR2MONMAXDATA48HYEARDATA46HWEEKDATA45HMONTHDATA44HDAYDATA43HHOURDATA42HMINUTEDATA41HSECONDDATA40HADRDATA38HDATDATA36HSCLKEQUP3.3RSTEQUP3.5IOEQUP3.4RSBITP2.0RWBITP2.1EBITP2.2FIRSTEQUP1.6ORG0000HAJMPSTARTORG000BHLJMPINTORG0100HSTART:SETBEAMOVTMO
推荐度:
导读FLAGEQUR2MONMAXDATA48HYEARDATA46HWEEKDATA45HMONTHDATA44HDAYDATA43HHOURDATA42HMINUTEDATA41HSECONDDATA40HADRDATA38HDATDATA36HSCLKEQUP3.3RSTEQUP3.5IOEQUP3.4RSBITP2.0RWBITP2.1EBITP2.2FIRSTEQUP1.6ORG0000HAJMPSTARTORG000BHLJMPINTORG0100HSTART:SETBEAMOVTMO
FLAGEQUR2

MONMAX DATA 48H

YEAR DATA 46H

WEEK DATA 45H

MONTHDATA 44H

DAY DATA 43H

HOUR DATA 42H

MINUTE DATA 41H

SECOND DATA 40H

ADR DATA 38H

DAT DATA 36H

SCLK EQU P3.3

RST EQU P3.5

IO EQU P3.4

RS BIT P2.0

RW BIT P2.1

E BIT P2.2

FIRST EQU P1.6

ORG 0000H

AJMP START

ORG 000BH

LJMP INT

ORG 0100H

START:SETB EA

MOV TMOD,#01H

MOV TH0,#0FCH

MOV TL0,#18H

SETB EA

SETB ET0

SETB TR0

MOV SCON,#00H

MOV ADR,#8EH

MOV DAT,#00H

LCALL WRITE

MOV ADR,#90H

MOV DAT,#0A6H

LCALL WRITE

MOV ADR,#84H

JB P2.1,MAIN

MOV ADR,#80H

MOV DAT,#00H

LCALLWRITE

MOV ADR,#82H;将调节后的新值写入各对应寄存器

MOV DAT,#11H

LCALL WRITE

MOV ADR,#84H

MOV DAT,#22H

LCALL WRITE

MOV ADR,#86H

MOV DAT,DAY

LCALL WRITE

MOV ADR,#8AH

MOV DAT,WEEK

LCALL WRITE

MOV ADR,#88H

MOV DAT,MONTH

LCALL WRITE

MOV ADR,#8CH

MOV DAT,YEAR

LCALL WRITE

MAIN:JB P2.2,KEYEND ;判断设置键是否按下

JNB P2.2,$

KEYEND:

MOV ADR,#81H ;从DS1302读秒

LCALL READ

MOV SECOND,DAT

MOV ADR,#83H;从DS1302读分

LCALL READ

MOV MINUTE,DAT

MOV ADR,#85H;从DS1302读时

LCALL READ

MOV HOUR,DAT

MOV ADR,#87H;从DS1302读天

LCALL READ

DISPLAY3:MOV DAY,DAT

MOV ADR,#8BH;从DS1302读周

LCALL READ

DISPLAY4:MOV WEEK,DAT

MOV ADR,#H;从DS1302读月

LCALL READ

DISPLAY5:MOV MONTH,DAT

MOV ADR,#8DH;从DS1302读年

LCALL READ

DISPLAY6:MOV YEAR,DAT

LCALL DELAY

;LCALL DELAY

;LCALL DELAY

;LCALL DELAY

LCALL DELAY

AJMP MAIN

INT:PUSH ACC

MOV TH0,#0FFCH

MOV TL0,#1FH

CJNE FLAG,#0,NEXTT

MOV FLAG,#1

MOV A,MINUTE

SWAP A

ANL A,#0FH

CLR P2.5

SETB P2.6

AJMP DISPLAY

NEXTT:CJNE FLAG,#1,NEXTT1

MOV FLAG,#2

MOV A,SECOND

ANL A,#0FH

CLR P2.6

SETB P2.7

AJMP DISPLAY

NEXTT1:CJNE FLAG,#2,NEXTT2

MOV FLAG,#3

MOV A,HOUR

SWAP A

ANL A,#0FH

CLR P2.7

SETB P2.4

AJMP DISPLAY

NEXTT2:MOV FLAG,#0

MOV A,HOUR

ANL A,#0FH

CLR P2.4

SETB P2.5

DISPLAY:

ME:MOV DPTR,#TAB

MOVC A,@A+DPTR

MOV P0,A

NOTOVER:POP ACC

RETI

WRITE:CLR SCLK

SETB RST

MOV A,ADR

MOV R4,#8

WRITE1:RRC A

CLR SCLK

MOV IO,C

SETB SCLK

DJNZ R4,WRITE1

CLR SCLK

MOV A,DAT

MOV R4,#8

WRITE11:RRC A

CLR SCLK

MOV IO,C

SETB SCLK

DJNZ R4,WRITE11

CLR RST

RET

READ: CLR SCLK;从DS1302读数据子程序

SETB RST

MOV A,ADR

MOV R4,#8

READ1:RRC A

MOV IO,C

SETB SCLK

CLR SCLK

DJNZ R4,READ1

MOV R4,#8

READ2:CLR SCLK

MOV C,IO

RRC A

SETB SCLK

DJNZ R4,READ2

MOV DAT,A

CLR RST

RET

ENABLE:CLR RS ;LCD写命令子程序

CLR RW

CLR E

ACALL DELAY

SETB E

RET

DELAY: MOV R4,#0H

D1: MOV R5,#0H

DJNZ R5,$

DJNZ R4,D1

RET

KEY:JB P1.2,NEXT1 ;调时间/日期子程序

JNB P1.2,$

INC A

NEXT1:JB P1.3,NEXT2

JNB P1.3,$

DEC A

NEXT2:CJNE R1,#1,J

LCALL MINTURN

;调分标志打开,调用调分子程序

J:CJNE R1,#2,J1

LCALL HOUTURN ;调时标志打开,调用调时子程序

J1:CJNE R1,#3,J2

LCALL WEETURN ;调周标志打开,调用调周子程序

J2:CJNE R1,#4,J3

LCALL DAYTURN ;调日标志打开,调用调日子程序

J3:CJNE R1,#5,J4

LCALL MONTURN ;调月标志打开,调用调月子程序

J4:CJNE R1,#6,J5

LCALL YEATURN ;调年标志打开,调用调年子程序

J5:RET

MINTURN:MOV R0,A

ANL A,#0FH ;调分子程序

CJNE A,#0AH,MIN

MOV A,R0

ADD A,#6

MOV R0,A

MIN:MOV A,R0

ANL A,#0F0H ;超过六十分,分变为一

CJNE A,#60H,MIN1

MOV R0,#00H

MIN1:MOV A,R0

CJNE A,#0FFH,MIN2 ;小于一分,分变为五十九

MOV R0,#59H

MIN2:MOV A,R0

ANL A,#0FH

CJNE A,#0FH,MIN3

MOV A,R0

SUBB A,#6H

MOV R0,A

MIN3:MOV A,R0

RET

HOUTURN:MOV R0,A ;调时子程序

CJNE A,#24H,HOU ;超过二十三点,时变为零

MOV R0,#00H

HOU:MOV A,R0

CJNE A,#0FFH,HOU1 ;小于零点,时变为二十三

MOV R0,#23H

HOU1:MOV A,R0

ANL A,#0FH

CJNE A,#0AH,HOU2

MOV A,R0

ADD A,#6H

MOV R0,A

HOU2:MOV A,R0

ANL A,#0FH

CJNE A,#0FH,HOU3

MOV A,R0

SUBB A,#6H

MOV R0,A

HOU3:MOV A,R0

RET

WEETURN:MOV R0,A ;调周子程序

CJNE A,#8H,WEE ;超过周七,周变为一

MOV R0,#01H

WEE:MOV A,R0

CJNE A,#0H,WEE1 ;小于周一,周变为七

MOV R0,#7H

WEE1:MOV A,R0

RET

DAYTURN:MOV R0,A

MOV A,MONTH ;判断月大/月小

SUBB A,#2H

JNZ NOTTWO

MOV MONMAX,#28H

AJMP OK

NOTTWO:MOV A,MONTH

SUBB A,#4H

JNZ JUDGE

MOV MONMAX,#30H

AJMP OK

JUDGE:MOV A,MONTH

SUBB A,#6H

JNZ JUDGE1

MOV MONMAX,#30H

AJMP OK

JUDGE1:MOV A,MONTH

SUBB A,#9H

JNZ JUDGE2

MOV MONMAX,#30H

AJMP OK

JUDGE2:MOV A,MONTH

SUBB A,#11H

JNZ JUDGE3

MOV MONMAX,#30H

AJMP OK

JUDGE3:MOV MONMAX,#31H

OK:MOV A,R0 ;调日子程序

ANL A,#0FH

CJNE A,#0AH,DAYDAY

MOV A,R0

ADD A,#6

MOV R0,A

DAYDAY:MOV A,R0 ;超过最大天,天变为一

SUBB A,MONMAX

MOV A,PSW

ANL A,#80H

JNZ DAYDAY1

MOV R0,#1H

DAYDAY1:MOV A,R0 ;小于一天,天变为最大天

CJNE A,#0H,DAYDAY2

MOV R0,MONMAX

DAYDAY2:MOV A,R0

ANL A,#0FH

CJNE A,#0FH,DAYDAY3

MOV A,R0

SUBB A,#6H

MOV R0,A

DAYDAY3:MOV A,R0

RET

MONTURN:MOV R0,A ;调月字子程序

CJNE A,#13H,MON;超过十二月,变为一月

MOV R0,#1H

MON:MOV A,R0

CJNE A,#0H,MON1;小于一月,变为十二月

MOV R0,#12H

MON1:MOV A,R0

ANL A,#0FH

CJNE A,#0AH,MON2

MOV A,R0

ADD A,#6H

MOV R0,A

MON2:MOV A,R0

ANL A,#0FH

CJNE A,#0FH,MON3

MOV A,R0

SUBB A,#6H

MOV R0,A

MON3:MOV A,R0

RET

YEATURN:MOV R0,A;调年子程序

CJNE A,#9AH,YEA;超过九九年,年变为零零年

MOV R0,#0H

YEA:MOV A,R0

CJNE A,#0FFH,YEA1;小于零零年,年变为九九年

MOV R0,#99H

YEA1:MOV A,R0

ANL A,#0FH

CJNE A,#0AH,YEA2

MOV A,R0

ADD A,#6H

MOV R0,A

YEA2:MOV A,R0

ANL A,#0FH

CJNE

A,#0FH,YEA3

MOV A,R0

SUBB A,#6H

MOV R0,A

YEA3:MOV A,R0

RET

;调节状态下的显示字程序

AGAIN:MOV P0,#83H;光标置年位

LCALL ENABLE

MOV R1,#6

MOV A,YEAR

LCALL KEY

MOV R3,A

MOV R2,YEAR

XRL A,R2

JZ SAME

MOV A,R3

MOV YEAR,A

LCALL YEADIS

SAME:JB P1.1,AGAIN

JNB P1.1,$

AGAIN1: MOV P0,#87H;光标置月位

LCALL ENABLE

MOV R1,#5

MOV A,MONTH

LCALL KEY

MOV R3,A

MOV R2,MONTH

XRL A,R2

JZ SAME1

MOV A,R3

MOV MONTH,A

LCALL MONDIS

SAME1:JB P1.1,AGAIN1

JNB P1.1,$

AGAIN2:MOV P0,#8BH;光标置天位

LCALL ENABLE

MOV R1,#4

MOV A,DAY

LCALL KEY

MOV R3,A

MOV R2,DAY

XRL A,R2

JZ SAME2

MOV A,R3

MOV DAY,A

LCALL DAYDIS

SAME2:JB P1.1,AGAIN2

JNB P1.1,$

AGAIN3:MOV P0,#8FH;光标置周位

LCALL ENABLE

MOV R1,#3

MOV A,WEEK

LCALL KEY

MOV R3,A

MOV R2,WEEK

XRL A,R2

JZ SAME3

MOV A,R3

MOV WEEK,A

LCALL WEEDIS

SAME3:JB P1.1,AGAIN3

JNB P1.1,$

AGAIN4:MOV P0,#0C5H;光标置小时位

LCALL ENABLE

MOV R1,#2

MOV A,HOUR

LCALL KEY

MOV R3,A

MOV R2,HOUR

XRL A,R2

JZ SAME4

MOV A,R3

MOV HOUR,A

LCALL HOUDIS

SAME4:JB P1.1,AGAIN4

JNB P1.1,$

AGAIN5:MOV P0,#0C8H;光标置分位

LCALL ENABLE

MOV R1,#1

MOV A,MINUTE

LCALL KEY

MOV R3,A

MOV R2,MINUTE

XRL A,R2

JZ SAME5

MOV A,R3

MOV MINUTE,A

LCALL MINDIS

SAME5:JB P1.1,AGAIN5

JNB P1.1,$

MOV ADR,#82H;将调节后的新值写入各对应寄存器

MOV DAT,MINUTE

LCALL WRITE

MOV ADR,#84H

MOV DAT,HOUR

LCALL WRITE

MOV ADR,#86H

MOV DAT,DAY

LCALL WRITE

MOV ADR,#8AH

MOV DAT,WEEK

LCALL WRITE

MOV ADR,#88H

MOV DAT,MONTH

LCALL WRITE

MOV ADR,#8CH

MOV DAT,YEAR

LCALL WRITE

RET

YEADIS:ANL A,#0FH;将读的年送LCD显示

ADD A,#30H

MOV P0,#83H

LCALL ENABLE

MOV A,YEAR

SWAP A

ANL A,#0FH

ADD A,#30H

RET

MONDIS:ANL A,#0FH;将读的月送LCD显示

ADD A,#30H

MOV P0,#87H

LCALL ENABLE

;LCALL WRITE2

MOV A,MONTH

SWAP A

ANL A,#1

ADD A,#30H

;LCALL WRITE2

RET

WEEDIS:MOV B,#3;将读的周送LCD显示

MOV A,WEEK

DEC A

MUL AB

MOV R1,A

MOV R2,#3

MOV DPTR,#TABLE

NEXT3:MOV A,R1

MOVC A,@A+DPTR

MOV P0,A

;LCALL WRITE2

INC DPTR

DJNZ R2,NEXT3

RET

HOUDIS:ANL A,#0FH;将读的时送LCD显示

ADD A,#30H

MOV P0,#0C5H

LCALL ENABLE

;LCALL WRITE2

MOV A,HOUR

SWAP A

ANL A,#3

ADD A,#30H

;LCALL WRITE2

RET

DAYDIS:ANL A,#0FH

ADD A,#30H

MOV P0,#8BH

LCALL ENABLE

;LCALL WRITE2

MOV A,DAY

SWAP A

ANL A,#3

ADD A,#30H

;LCALL WRITE2

RET

MINDIS:ANL A,#0FH;将读的分送LCD显示

ADD A,#30H

MOV P0,#0C8H

LCALL ENABLE

;LCALL WRITE2

MOV A,MINUTE

SWAP A

ANL A,#7

ADD A,#30H

;LCALL WRITE2

RET

TAB:DB 0A0H,0BBH,62H,2AH,39H,2CH,24H,0BAH,20H,28H

TABLE:DB 'NUSNOMEUTNEWUHTIRFTAS',00H

END

文档

DS1302电子时钟,51单片机汇编程序编写,1602显示

FLAGEQUR2MONMAXDATA48HYEARDATA46HWEEKDATA45HMONTHDATA44HDAYDATA43HHOURDATA42HMINUTEDATA41HSECONDDATA40HADRDATA38HDATDATA36HSCLKEQUP3.3RSTEQUP3.5IOEQUP3.4RSBITP2.0RWBITP2.1EBITP2.2FIRSTEQUP1.6ORG0000HAJMPSTARTORG000BHLJMPINTORG0100HSTART:SETBEAMOVTMO
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top