8位数码管显示

  • 格式:doc
  • 大小:137.50 KB
  • 文档页数:7

下载文档原格式

  / 7
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

;************** DS1302 端口位定义**************

IO_DA TA BIT P1.1 ; 数据传送总线

SCLK BIT P1.0 ; 时钟控制总线

RST BIT P1.2 ; 复位总线

K1 EQU P1.4 ;独立键

K2 EQU P1.5

K3 EQU P1.6

K4 EQU P1.7

BEEP EQU P3.3 ;蜂鸣器

RELAY EQU P3.5 ;继电器

T_CONU EQU 22H ;中断计数

TIME_L EQU 23H ;定时初值

TIME_H EQU 24H

TIME_DA TA EQU 50H ;显示时间单元首地址

DA TE_DATA EQU 60H ;显示日期单元首地址

DS_DA TA EQU 58H ;显示定时时间首地址;------------------------------------------------

ORG 0000H

AJMP MAIN

ORG 000BH

AJMP INT_T0

ORG 0080H

;------------------------------------------------

MAIN:

MOV TMOD,#01H ;T0,方式1

MOV TIME_L,#00H ;50MS定时值

MOV TIME_H,#4CH

MOV T_CONU,#00H ;中断次数

MOV IE,#82H ;EA=1,ET0=1

MOV A,#00H

MOV R0,#40H ;从40H单元开始

MOV R1,#40H ;清64个单元

M_CLEAR: MOV @R0,A

INC R0

DJNZ R1,M_CLEAR

MOV 7FH,#0AH ;送熄灭符

SETB BEEP

LCALL TIME_DELAY ;调显示延时

LCALL PROSET ;DS1302初始化

MAIN1:

LCALL GET_TIME ;从DS1302读数据程序

LCALL CHULI ;实时时间数据处理

MOV R0,#TIME_DATA ;显示时、分、秒

LCALL DISP

MOV R0,#TIME_DATA

LCALL TIME_DISPLAY

LCALL SET_KEY ;键功能程序;001

LCALL COMP ;实时时间与定时时间比较

JB K1,MAIN1

CALL BEEP_BL

MAIN2:

LCALL CHULI ;日期数据处理

MOV R0,#DA TE_DATA

LCALL DISP ;显示年、月、日

MOV R0,#DA TE_DATA

LCALL TIME_DISPLAY

JB K1,MAIN2

CALL BEEP_BL

MAIN3:

LCALL DS_CHULI ;定时时间数据处理

MOV R0,#DS_DA TA

LCALL DS_SP ;显示定时时间

MOV R0,#DS_DA TA

LCALL DS_DISPLAY

JB K1,MAIN3

CALL BEEP_BL

AJMP MAIN1

;--------------------------------------------

;中断服务子程序

;300MS对闪动标记取反一次

;-------------------------------------------- INT_T0:

PUSH ACC

PUSH PSW

MOV TL0,TIME_L

MOV TH0,TIME_H

INC T_CONU

MOV A,T_CONU

CJNE A,#06H,INT_END

MOV T_CONU,#00H

CPL 0AH

INT_END:

POP PSW

POP ACC

RETI

;--------------------------------------------

;DS1302 初始化子程序

; (R0)=数据(R1)=地址

;--------------------------------------------

PROSET:

CLR RST ;DS1302复位

CLR SCLK

NOP

NOP

SETB RST

;MOV R1,#80H ;写秒寄存器

;MOV R0,#00H ;启动振荡器

;LCALL WRITE

;MOV R1,#82H ;写分寄存器

;MOV R0,#58H

;LCALL WRITE

;MOV R1,#84H ;写时寄存器

;MOV R0,#80H

;LCALL WRITE

MOV R1,#90H ;写充电寄存器

MOV R0,#0ABH

LCALL WRITE

RET

;===============================================

;读时间、日期数据子程序

;存放单元40H - 46H

;=============================================== GET_TIME:

MOV R1,#81H ;读秒

LCALL READ

MOV 40H,R0

MOV R1,#83H ;读分

LCALL READ

MOV 41H,R0

MOV R1,#85H ;读时

LCALL READ

MOV 42H,R0

MOV R1,#87H ;读出日期

LCALL READ

MOV 43H,R0

MOV R1,#89H ;读出月份

LCALL READ

MOV 44H,R0

MOV R1,#8BH ;读出星期

LCALL READ

MOV 46H,R0

MOV R1,#8DH ;读出年

LCALL READ

MOV 45H,R0

RET

;================================================

;写DS1302 子程序

;================================================ WRITE:

CLR SCLK

NOP

NOP

1