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

📄 pcf8563.txt

📁 认真阅读您的文件包然后写出其具体功能(至少要20个字)。尽量不要让站长把时间都花费在为您修正说明上。压缩包解压时不能有密码。系统会自动删除debug和release目录
💻 TXT
字号:
;**************************定义PCF8563芯片端口*****************************
SCK      EQU     P1.1     ;定义P1.0为I2C总线的时钟线
   SDA      EQU     P1.0     ;定义P1.1为I2C总线的数据线
;************************定义按键位*********************
        SW EQU P1.7        ;定义P1.7调整键
UP EQU P1.6     ;定义P1.6加一键
DOWN EQU     P1.5        ;定义P1.5减一键
        CONF    EQU     P1.4        ;定义P1.4键为确认键
COUNT EQU 48H     ;判别选择键按的次数
;****************液晶变量声明部分*******************
   E1 EQU P3.1
   E2 EQU P3.5
   RES EQU      P3.0
   RW EQU P3.6
    A0 EQU P3.7
    DAT EQU P2
    X EQU 30H
    Y EQU 31H
;******************定义PCF8563 RAM 映射地址******************
;首地址为30H
        CNTRL0   EQU     30H       ;定义控制/状态0数据存储地址
   CNTRL1   EQU     31H       ;定义控制/状态1数据存储地址
   SEC      EQU     32H       ;定义秒初值存储地址
   MIN      EQU 33H       ;定义分初值存储地址
   HOUR     EQU     34H       ;定义时初值存储地址
   DAY EQU     35H       ;定义天初值存储地址
   WEEK     EQU     36H       ;定义周初值存储地址
   MONTH    EQU     37H       ;定义月初值存储地址
   YEAR     EQU     38H       ;定义年初值存储地址
        MINBJ    EQU     39H       ;定义分定时初值存储地址
        HOURBJ   EQU     3AH       ;定义时定时初值存储地址
        DATBJ    EQU     3BH       ;定义日定时初值存储地址
        WEEKJ EQU 3CH    ;定义星定时初值存储地址
        CLOCK    EQU     3DH       ;定义CLOCK 输出频率初值地址
CTIMER EQU 3EH    ;定义定时器控制存储地址
ITIMER EQU 3FH    ;定义定时器倒计数初值存储地址
;********************定义PCF8563 数据读出缓冲地址***********************
;首地址为40H
;数据格式为BCD码
;定义读出时间、日期数据存储地址
        SECBUF   EQU     40H    ;秒
MINBUF EQU 41H    ;分
HOUBUF EQU 42H    ;时
DAYBUF EQU 43H    ;天
WEKBUF EQU     44H    ;星期
MONBUF EQU 45H    ;月
   YERBUF EQU 46H    ;年
;***********************定义LCD显示缓冲区地址******************
;首地址50H
YER1 EQU     50H
YER0 EQU 51H
MON1 EQU     52H
MON0 EQU 53H
DAY1 EQU 54H
DAY0 EQU 55H
WEK EQU 56H
HOU1    EQU     57H
HOU0 EQU     58H
MIN1 EQU 59H
MIN0 EQU 5AH
SEC1 EQU     5BH
SEC0    EQU     5CH
;*****************中断入口跳转部分********************
ORG 0000H   ;主程序跳转入口
AJMP MAIN
ORG 000BH   ;计数器T0跳转入口
AJMP TIMER0

;*****************主程序部分********************
ORG 0030H
MAIN:
;****************写入PCF8563初值***********************
LCALL    LOAD8563         ;载入初值
   MOV R0,#30H          ;指向初值寄存器首地址
   MOV R1,#00H          ;初始化8563寄存器单元地址
   MOV R3,#0CH          ;需初始化字节数
WRDATA:
        LCALL    WR_PCF8563       ;向PCF8563写入初值
        INC      R0
        INC      R1
        DJNZ     R3,WRDATA
;******************设置PCF8563频率端口***********************
MOV CLOCK,#82H;启动32HZ脉冲
        mov R0,#3DH
        MOV R1,#0DH
        MOV R3,#01H
LCALL    WR_PCF8563       ;向PCF8563写入启动脉冲命令
;********************读取PCF8563时钟时间*************
LCALL    TIMEBUF
     LCALL    LCDBUF
;*********************计数器T0设置*******************
MOV SP,#60H
MOV TMOD,#05H
MOV TH0,#0FFH
MOV TL0,#0E0H
SETB EA
SETB ET0
SETB TR0
;***********************液晶初始化**********************
SETB    RES
LCALL INITIAL ;调用初始化
MOV COUNT,#00H
;**********************清屏*****************************
      MOV       30H,#0
      MOV       31H,#0
      LCALL     DISPLAY1
      lcall      delay1s
;****************** 静态显示*************
         MOV DPTR, #TAB2     ;星
         MOV X,#00
         MOV Y,#16
         MOV    R3,#2
         MOV    A,#00H
         MOV    B,#16
         MUL    AB
         MOV    R2,A
         LCALL DISPLAY6

         MOV DPTR, #TAB2 ;期
         MOV X,#00
         MOV Y,#32
         MOV    R3,#2
         MOV    A,#01H
         MOV    B,#32
         MUL    AB
         MOV    R2,A
         LCALL DISPLAY6
         
         MOV DPTR, #TAB1 ;-
         MOV X,#00
         MOV Y,#32
         MOV    R3,#2
         MOV    A,#11
         MOV    B,#16
         MUL    AB
         MOV    R2,A
         LCALL DISPLAY3
         
         MOV DPTR, #TAB1 ;-
         MOV X,#00
         MOV Y,#56
         MOV    R3,#2
         MOV    A,#11
         MOV    B,#16
         MUL    AB
         MOV    R2,A
         LCALL DISPLAY3


         MOV DPTR, #TAB1 ;:
         MOV X,#02
         MOV Y,#16
         MOV    R3,#2
         MOV    A,#10
         MOV    B,#16
         MUL    AB
         MOV    R2,A
         LCALL DISPLAY4

      MOV DPTR, #TAB1 ;:
       MOV X,#02
      MOV Y,#56
      MOV     R3,#2
      MOV     A,#10
       MOV     B,#16
        MUL     AB
        MOV     R2,A
      LCALL DISPLAY3
;*******************按键输入程序****************

KEY:    CLR     TR0
JB SW,KEY0 ;调整程序
LCALL DELAY250MS
        JB SW,KEY0
INC COUNT
MOV A,COUNT
CJNE A,#8,KEYOVER
MOV COUNT,#00H
KEYOVER:
JB SW,KEY0
LJMP KEYOVER

;**********************秒钟调整程序********

KEY0: MOV A,COUNT;秒钟加1
CJNE A,#1,KEY1
JB UP,KEY00
LCALL DELAY250MS
        JB UP,KEY00
INC SEC0
MOV A,SEC0
CJNE A,#10,KEY0OVER
MOV SEC0,#00H
INC SEC1
MOV A,SEC1
CJNE A,#6,KEY0OVER
MOV SEC1,#00H
LJMP KEY0OVER
KEY0OVER:
JB UP,KEY00
LJMP KEY0OVER


KEY00:
JB DOWN,KEY1;秒钟减1
LCALL DELAY250MS
JB DOWN, KEY1
MOV A,SEC0
CJNE A,#0,CCC
MOV SEC0,#9
MOV A,SEC1
CJNE A,#0,CCCC
MOV SEC1,#5
LJMP KEY00OVER
CCCC: DEC SEC1
LJMP KEY00OVER
CCC: DEC SEC0
KEY00OVER:
JB DOWN,KEY1
LJMP KEY00OVER


;*************分钟调整程序*********************
KEY1: MOV A,COUNT;分钟加1
CJNE A,#2,KEY2
JB UP,KEY11
LCALL DELAY250MS
        JB UP,KEY11
INC MIN0
MOV A,MIN0
CJNE A,#10,KEY1OVER
MOV MIN0,#00H
INC MIN1
MOV A,MIN1
CJNE A,#6,KEY1OVER
MOV MIN1,#00H
LJMP KEY1OVER
KEY1OVER:JB UP,KEY11
LJMP KEY1OVER


KEY11: JB DOWN,KEY2;分钟减1
LCALL DELAY250MS
JB DOWN, KEY2
MOV A,MIN0
CJNE A,#0,AAA
MOV MIN0,#9
MOV A,MIN1
CJNE A,#0,AAAA
MOV MIN1,#5
LJMP KEY11OVER
AAAA: DEC MIN1
LJMP KEY11OVER
AAA: DEC MIN0
KEY11OVER:JB DOWN,KEY2
LJMP KEY11OVER

;***********时调整程序******************
KEY2: MOV A,COUNT;时加1
CJNE A,#3,KEY3
JB UP,KEY22
LCALL DELAY250MS
JB UP,KEY22
INC HOU0
MOV A,HOU1
CJNE A,#2,HOURS
MOV A,HOU0
CJNE A,#4,KEY2OVER
MOV HOU0,#00H
MOV HOU1,#00H
LJMP KEY2OVER
HOURS: MOV A,HOU0
CJNE A,#10,KEY2OVER
MOV HOU0,#00H
INC HOU1
KEY2OVER:JB UP,KEY22
LJMP KEY2OVER


KEY22: JB DOWN,KEY3;时钟减1
LCALL DELAY250MS
JB DOWN, KEY3
MOV A,HOU0
CJNE A,#0,H4
MOV A,HOU1
CJNE A,#0,H5
MOV HOU0,#3
MOV HOU1,#2
LJMP KEY22OVER
H5: MOV HOU0,#9
DEC HOU1
LJMP KEY22OVER
H4: DEC HOU0
KEY22OVER:JB DOWN,KEY3
LJMP KEY22OVER
;************星期调整程序****************
KEY3: MOV A,COUNT;星期加1
CJNE A,#4,KEY4
JB UP,KEY33
LCALL DELAY250MS
        JB UP,KEY33
INC WEK
MOV A,WEK
CJNE A,#7,KEY3OVER
MOV WEK,#00H
KEY3OVER:JB UP,KEY33
LJMP KEY3OVER


KEY33: JB DOWN,KEY4;星期减1
LCALL DELAY250MS
JB DOWN, KEY4
MOV A,WEK
CJNE A,#0,A2
MOV WEK,#6
LJMP KEY33OVER
A2: DEC WEK
KEY33OVER:JB DOWN,KEY4
LJMP KEY33OVER

;*******************日调整*****************
KEY4: MOV A,COUNT;日加1
CJNE A,#5,KEY5
JB UP,KEY44
LCALL DELAY250MS
JB UP,KEY44
INC DAY0
MOV A,DAY1
CJNE A,#3,DAYY
MOV A,DAY0
CJNE A,#2,KEY4OVER
MOV DAY0,#1
MOV DAY1,#00H
LJMP KEY4OVER
DAYY:    MOV A,DAY0
CJNE A,#10,KEY4OVER
MOV DAY0,#00H
INC DAY1
KEY4OVER:JB UP,KEY44
LJMP KEY4OVER


KEY44: JB DOWN,KEY5;日减1
LCALL DELAY250MS
JB DOWN,KEY5
MOV A,DAY0
CJNE A,#0,D4
MOV A,DAY1
CJNE A,#0,D0
MOV DAY0,#1
MOV DAY1,#3
LJMP KEY44OVER

D0: MOV DAY0,#9
DEC DAY1
LJMP KEY44OVER
D4: DEC DAY0
KEY44OVER:JB DOWN,KEY5
LJMP KEY44OVER

;**************月调整程序*******************
KEY5: MOV A,COUNT;月加1
CJNE A,#6,KEY6
JB UP,KEY55
LCALL DELAY250MS
JB UP,KEY55
INC MON0
MOV A,MON1
CJNE A,#1,MUNTCOUNT
MOV A,MON0
CJNE A,#3,KEY5OVER
MOV MON0,#1
MOV MON1,#00H
LJMP KEY5OVER
MUNTCOUNT: MOV A,MON0
CJNE A,#10,KEY5OVER
MOV MON0,#00H
INC MON1
KEY5OVER:JB UP,KEY55
LJMP KEY5OVER


KEY55: JB DOWN,KEY6;月减1
LCALL DELAY250MS
JB DOWN, KEY6
MOV A,MON0
CJNE A,#0,M2
MOV A,MON1
CJNE A,#0,M3
MOV MON0,#2
MOV MON1,#1
LJMP KEY55OVER
M3: MOV MON0,#9
DEC MON1
LJMP KEY55OVER
M2: DEC MON0
KEY55OVER:JB DOWN,KEY6
LJMP KEY55OVER


;****************年调整程序*******************
KEY6: MOV A,COUNT;年加1
CJNE A,#7,KEY7
JB UP,KEY66
LCALL DELAY250MS
        JB UP,KEY66
INC YER0
MOV A,YER0
CJNE A,#10,KEY6OVER
MOV YER0,#00H
INC YER1
MOV A,YER1
CJNE A,#10,KEY66OVER
MOV YER1,#00H
KEY6OVER:JB UP,KEY66
LJMP KEY6OVER


KEY66: JB DOWN,KEY7;年减1
LCALL DELAY250MS
JB DOWN, KEY7
MOV A,YER0
CJNE A,#0,Y3
MOV YER0,#9
MOV A,YER1
CJNE A,#0,Y4
MOV YER1,#9
LJMP KEY66OVER

Y4: DEC YER1
LJMP KEY66OVER
Y3: DEC YER0
KEY66OVER:JB DOWN,KEY7
LJMP KEY66OVER

;**************************确认键*********************

KEY7:
         JB CONF,KEY77
LCALL DELAY250MS
        JB CONF,KEY77
         LCALL PCF8563BUF
         LCALL TIMEBUF
         LCALL LCDBUF


KEY77:   SETB     TR0
         LCALL    DISPLAY
KEY7OVER: LJMP    KEY

;****************计数中断T0响应*******************
TIMER0:
PUSH ACC;中断程序
PUSH PSW
MOV TH0,#0FFH
MOV TL0,#0E0H

INC SEC0
MOV A,SEC0
CJNE A,#10,LOOP1
MOV SEC0,#00H
INC SEC1
MOV A,SEC1
       CJNE     A,#6,LOOP1

MOV SEC1,#00H

INC MIN0
MOV A,MIN0
CJNE A,#10,LOOP1
MOV MIN0,#00H
INC MIN1
MOV A,MIN1
CJNE A,#6,LOOP1
MOV MIN1,#00H

INC HOU0
MOV A,HOU1
CJNE A,#2,HOUR1
MOV A,HOU0
CJNE A,#4,LOOP1
MOV HOU1,#00H
MOV HOU0,#00H

INC WEK
MOV A,WEK
CJNE A,#07,DAY89
MOV WEK,#00H

DAY89:
INC DAY0 ;天加一
MOV A,MON1
CJNE A,#0,ZZ1
MOV A,MON0
CJNE A,#1,MUNTH2

DMUNTH:    ; 大月31天
MOV A,DAY1
CJNE A,#3,ZZ3
MOV A,DAY0
CJNE A,#2,LOOP1
MOV DAY1,#0
MOV DAY0,#1
LJMP MUNTHADD

LOOP1: LJMP TIMER0END

HOUR1: MOV A,HOU0
CJNE A,#10,LOOP1
MOV HOU0,#00h
INC     HOU1
LJMP TIMER0END
ZZ3:
MOV A,DAY0
CJNE A,#10,LOOP1
MOV DAY0,#0
INC DAY1
LJMP TIMER0END

MUNTH2:     ;二月
CJNE A,#2,MUNTH3
MOV A,YER1
MOV B,#10
MUL AB
ADD A,YER0
MOV B,#4
DIV AB
MOV A,B
JZ YUNNIAN
MOV A,DAY1
CJNE A,#2,ZZ4
MOV A,DAY0
        CJNE A,#9,LOOP1
MOV DAY1,#0
MOV DAY0,#1
INC MON0

MUNTH3:     ;三月
CJNE A,#3,MUNTH4
LJMP DMUNTH

ZZ1:    MOV A,MON0
CJNE A,#0,MUNTH11
LJMP DMUNTH

MUNTH4: CJNE A,#4,MUNTH5 ;四月
SMUNTH: MOV A,DAY1   ;小月30天
CJNE A,#3,ZZZ3
MOV A,DAY0
CJNE A,#1,LOOP1
MOV DAY1,#0
MOV DAY0,#1
LJMP MUNTHADD

ZZZ3:
MOV A,DAY0
CJNE A,#10,LOOP1
MOV DAY0,#0
INC DAY1
LJMP TIMER0END

YUNNIAN:    ;闰年
MOV A,DAY1
CJNE A,#2,ZZ4
MOV A,DAY0
        CJNE A,#10,LOOP1
MOV DAY1,#0
MOV DAY0,#1
LJMP MUNTHADD

ZZ4:    MOV A,DAY0
CJNE A,#10,TIMER0END
INC DAY1
MOV DAY0,#0
LJMP LOOP1

MUNTH5:CJNE A,#5,MUNTH6   ;五月
LJMP DMUNTH
MUNTH6:CJNE A,#6,MUNTH7   ;六月
   LJMP SMUNTH
MUNTH7:CJNE A,#7,MUNTH8   ;七月
      LJMP DMUNTH
MUNTH8:CJNE A,#8,MUNTH9   ;八月
     LJMP DMUNTH
MUNTH9:CJNE A,#9,ZZ1   ;九月
        LJMP SMUNTH
MUNTH11:CJNE A,#1,MUNTH12 ;十一月
LJMP SMUNTH
MUNTH12:LJMP DMUNTH   ;十二月

MUNTHADD:
INC MON0
MOV A,MON1
CJNE A,#0,ZZ6
MOV A,MON0
CJNE A,#10,TIMER0END
INC MON1
MOV MON0,#0
       LJMP TIMER0END
ZZ6:     MOV A,MON0
CJNE A,#3,TIMER0END
MOV MON0,#1
MOV MON1,#0
INC YER0
MOV A,YER0
CJNE A,#10,TIMER0END
MOV YER0,#0
INC YER1

TIMER0END:
         POP PSW
   POP ACC
   RETI


;****************液晶显示*******************
DISPLAY:
      ; SETB     TR0
       MOV DPTR, #TAB1
       MOV X,#2
       MOV Y,#32
       MOV       R3,#2
       MOV       A,SEC0
       MOV       B,#16
       MUL       AB
       MOV       R2,A
       LCALL DISPLAY4

       MOV DPTR, #TAB1
       MOV X,#2
       MOV Y,#24
       MOV       R3,#2
       MOV       A,SEC1
       MOV       B,#16
       MUL       AB
       MOV       R2,A
       LCALL DISPLAY4

       MOV DPTR, #TAB1
       MOV X,#2
       MOV Y,#08
       MOV       R3,#2
       MOV       A,MIN0
       MOV      B,#16
       MUL      AB
       MOV       R2,A
       LCALL DISPLAY4

       MOV DPTR, #TAB1
       MOV X,#2
       MOV Y,#00
       MOV        R3,#2
       MOV         A,MIN1
       MOV       B,#16
       MUL       AB
       MOV       R2,A
       LCALL DISPLAY4

       MOV DPTR, #TAB1
       MOV X,#2
       MOV Y,#48
       MOV       R3,#2
       MOV       A,HOU0
       MOV       B,#16
       MUL       AB
       MOV       R2,A
       LCALL DISPLAY3

       MOV DPTR, #TAB1
       MOV X,#2
       MOV Y,#40
       MOV       R3,#2
       MOV       A,HOU1
       MOV      B,#16
       MUL       AB
       MOV      R2,A
       LCALL DISPLAY3

       MOV DPTR, #TAB1
       MOV X,#0
       MOV Y,#48
       MOV       R3,#2
       MOV       A,WEK
       MOV      B,#16
       MUL       AB
       MOV      R2,A
       LCALL DISPLAY4

       MOV DPTR, #TAB1
       MOV X,#0
       MOV Y,#08
       MOV       R3,#2
       MOV       A,DAY0
       MOV      B,#16
       MUL       AB
       MOV      R2,A
       LCALL DISPLAY4

       MOV DPTR, #TAB1
       MOV X,#0
       MOV Y,#00
       MOV       R3,#2
       MOV       A,DAY1
       MOV      B,#16
       MUL       AB
       MOV      R2,A
       LCALL DISPLAY4


       MOV DPTR, #TAB1
       MOV X,#0
       MOV Y,#48
       MOV       R3,#2
       MOV       A,MON0
       MOV      B,#16
       MUL       AB
       MOV      R2,A
       LCALL DISPLAY3

       MOV DPTR, #TAB1
       MOV X,#0
       MOV Y,#40
       MOV       R3,#2
       MOV       A,MON1
       MOV      B,#16
       MUL       AB
       MOV      R2,A
       LCALL DISPLAY3

       MOV DPTR, #TAB1
       MOV X,#0
       MOV Y,#24
       MOV       R3,#2
       MOV       A,YER0
       MOV      B,#16
       MUL       AB
       MOV      R2,A
       LCALL DISPLAY3

       MOV DPTR, #TAB1
       MOV X,#0
       MOV Y,#16
       MOV       R3,#2
       MOV       A,YER1
       MOV      B,#16
       MUL       AB
       MOV      R2,A
       LCALL DISPLAY3

RET

⌨️ 快捷键说明

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