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

📄 ex1.asm

📁 基于DS1302日历时钟的单片机汇编程序, 设计电子日历种拿来就可用. 已调试通过.
💻 ASM
字号:
        RST  EQU  P1.2        ;DS1302三条控制线
        PIO  EQU  P1.6
        SCLK EQU  P1.5
	ORG 0000H
	AJMP START
	ORG 0100H

        ;以下为MAX7219初始化
 START: CLR P2.0
        MOV R0,#02H
        MOV R1,#0AH     ;亮度(寄存器)
        ACALL TRT

        MOV R0,#07H
        MOV R1,#0BH     ;扫描位数
        ACALL TRT

        MOV R0,#0FFH
        MOV R1,#09H     ;译码
        ACALL TRT

        MOV R0,#01H
        MOV R1,#0CH
        CALL TRT

 CLOCK:
        MOV  R1,#8EH          ;写控制寄存器
        MOV  R0,#0
        LCALL WRITE

        MOV  R1,#80H          ;写秒寄存器
        MOV  R0,#0
        CALL WRITE

        MOV  R1,#82H          ;写分寄存器
        MOV  R0,#5
        CALL WRITE

        MOV  R1,#84H          ;写时寄存器
        MOV  R0,#6
        CALL WRITE

        MOV  R1,#86H          ;写日寄存器
        MOV  R0,#27H
        CALL WRITE

        MOV  R1,#88H          ;写月寄存器
        MOV  R0,#9
        CALL WRITE

        MOV  R1,#8CH          ;写年寄存器
        MOV  R0,#99H
        CALL WRITE

        MOV  R1,#90H          ;写慢速充电寄存器
        MOV  R0,#0ABH
        CALL WRITE

        
  ;以下为读各个寄存器的状态
  SS:   MOV  R1,#81H         ;读秒寄存器
        CALL READ
        MOV  20H,R0

        MOV  R1,#83H         ;读分寄存器
        CALL READ
        MOV  21H,R0

        MOV  R1,#85H         ;读时寄存器
        CALL READ
        MOV  22H,R0

        MOV  R1,#87H         ;读日寄存器
        CALL READ
        MOV  23H,R0

        MOV  R1,#89H         ;读月寄存器
        CALL READ
        MOV  24H,R0

        MOV  R1,#8DH         ;读年寄存器
        CALL READ
        MOV  25H,R0

        ;以下为显示子程序
DIS:    MOV A,22H       ;字码
        ANL A,#0F0H
        SWAP A
        MOV R0,A
        MOV R1,#01H     ;位置(第一位)
        ACALL TRT

        MOV A,22H
        ANL A,#0FH
        MOV R0, A
        MOV R1,#02H     ;第二位
        ACALL TRT

        MOV A,21H
        ANL A,#0F0H
        SWAP A
        MOV R0,A
        MOV R1,#03H     ;第三位
        ACALL TRT

        MOV A,21H
        ANL A,#0FH
        MOV R0,A
        MOV R1,#04H
        ACALL TRT

        MOV A,20H
        ANL A,#0F0H
        SWAP A
        MOV R0,A
        MOV R1,#05H
        ACALL TRT

        MOV A,20H
        ANL A,#0FH
        MOV R0,A
        MOV R1,#06H
        ACALL TRT

        MOV A,#01H
        MOV R0,A
        MOV R1,#07H
        ACALL TRT

        MOV A,#00H
        MOV R0,A
        MOV R1,#08H
        ACALL TRT

        AJMP  SS

  TRT:  CLR P2.0        ;LOAD
        MOV R2,#08H
        MOV A,R1
  T_1:  CLR P2.2        ;CLK
                     ;CALL TDELAY
        RLC A
        MOV P2.1,C      ;DATA(DIN)
        CALL TDELAY
        SETB P2.2    ;CLR P2.2
        DJNZ R2,T_1
        CALL TDELAY
        MOV R2, #08H
        MOV A,R0
  T_2:  CLR P2.2     ;SETB P2.2
                     ;CALL TDELAY
        RLC A
        MOV P2.1,C
        CALL TDELAY
        SETB P2.2    ;CLR P2.2
        DJNZ R2,T_2
        SETB P2.0    ;CLR P2.0
                     ;CALL TDELAY
        RET

TDELAY: MOV R6,#01H
TMS0:   MOV R7,#03H
TMS1:   DJNZ R7,TMS1
        DJNZ R6,TMS0
        RET

  ;以下为写DS1302子程序
  WRITE:CLR  SCLK
        NOP
        NOP
        SETB RST         ;高电平复位
        NOP
        MOV  A,R1
        MOV  R2,#8
  SF01: RRC  A          ;传送地址到DS1302(先低位后高位)
        MOV  PIO,C
        NOP
        NOP
        SETB SCLK
        NOP
        NOP
        CLR  SCLK
        DJNZ R2,SF01
        NOP
        NOP
  ;*************
        MOV  A,R0
        MOV  R2,#8
  SF02: RRC  A          ;传送数据到DS1302
        MOV  PIO,C
        NOP
        NOP
        SETB SCLK
        NOP
        NOP
        CLR  SCLK
        DJNZ R2,SF02
        NOP
        NOP
        CLR  RST
        NOP
        NOP
        RET
  ;********读DS1302子程序
  READ: SETB  RST
        MOV  A,R1
        MOV  R2,#8
  SS01: RRC  A
        MOV  PIO,C
        NOP
        NOP
        SETB SCLK
        NOP
        NOP
        CLR  SCLK
        DJNZ R2,SS01
        NOP
        NOP
        SETB PIO
        CLR  A
        CLR  C
        MOV  R2,#8
  SS02: MOV  C,PIO
        RRC  A
        NOP
        NOP
        SETB SCLK
        NOP
        NOP
        CLR SCLK
        NOP
        NOP
        DJNZ R2,SS02
        MOV  R0,A
        ANL  A, #7FH
        CLR  RST
        RET
        END

⌨️ 快捷键说明

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