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

📄 ds1302.asm

📁 基于PROTEUS的仿真 含带源代码 C语言编程
💻 ASM
字号:


         ;SDATA_595     EQU  P1.1     ;串行数据输入
         ;SCLK_595       EQU  P1.0   ;移位时钟脉冲
         ;RCK_595         EQU  P1.2    ;输出锁存器控制脉冲
         ;T-CLK Bit P1.1               ;实时时钟时钟线引脚
         ;T-IO  Bit P1.2                        ;实时时钟数据线引脚
         ;T-RES Bit P1.0                         ;实时时钟复位线引脚

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

               ORG  0000H
               LJMP  MAIN
               ORG  0030H

 ;=====================================================
  MAIN:MOV 34H,#55H;秒
       MOV 35H,#59H;分
       MOV 36H,#24H;时
       MOV 37H,#10H;日
       MOV 38H,#09H;月
       MOV 39H,#20H;周
       MOV 3AH,#05H;年
       LCALL SET1302

  SCAN:LCALL GET1302
       MOV A,46H
       SWAP A
       ANL A,#0FH
       MOV 30H,A
       MOV A,46H
       ANL A,#0FH
       MOV 31H,A
       MOV A,45H
       SWAP A
       ANL A,#0FH
       MOV 32H,A
       MOV A,45H
       ANL A,#0FH
       MOV 33H,A
 
      MOV R0,#30H;显示缓冲区首地址
      LCALL DISPLAY
      LJMP SCAN
;================================================
SET1302:
          CLR    P1.0
          CLR    P1.1
          SETB   P1.0
          MOV    B,#8EH        ;控制寄存器
          LCALL  RTInputByte  
          MOV    B,#00H        ;写操作前WP=0
          LCALL  RTInputByte  
          SETB   P1.1
          CLR    P1.0

          MOV    R0,#34H;
          MOV    R7,#7        ;秒 分 时 日 月 星期 年          
          MOV    R1,#80H      ;秒写地址
S13021:   CLR    P1.0
          CLR    P1.1
          SETB   P1.0
          MOV    B,R1        ;写秒 分 时 日 月 星期 年 地址
          LCALL  RTInputByte  
          MOV    A,@R0       ;写秒数据
          MOV    B,A
          LCALL  RTInputByte  
          INC    R0
          INC    R1
          INC    R1
          SETB   P1.1
          CLR    P1.0
          DJNZ   R7,S13021
          CLR    P1.0
          CLR    P1.1
          SETB   P1.0
          MOV    B,#8EH        ;控制寄存器
          LCALL  RTInputByte  
          MOV    B,#80H        ;控制,WP=1,写保护
          LCALL  RTInputByte  
          SETB   P1.1
          CLR    P1.0
          RET
;===================================================
GET1302:      
          MOV    R0,#44H;
          MOV    R7,#7
          MOV    R1,#81H       ;秒地址
G13021:   CLR    P1.0
          CLR    P1.1
          SETB   P1.0
          MOV    B,R1        ;秒 分 时 日 月 星期 年 地址
          LCALL  RTInputByte  
          LCALL  RTOutputByte
          MOV    @R0,A         ;秒
          INC    R0
          INC    R1
          INC    R1
          SETB   P1.1
          CLR    P1.0
          DJNZ   R7,G13021
          RET
;========================================

RTInputByte:  
          MOV    R4,#8
Inbit1:   MOV    A,B
          RRC    A
          MOV    B,A
          MOV    P1.2, C         
	  SETB   P1.1
          CLR    P1.1
          DJNZ   R4,Inbit1
          RET
;====================================
RTOutputByte:
          MOV    R4,#8
Outbit1:  MOV    C,P1.2
          RRC    A
          SETB   P1.1
          CLR    P1.1
          DJNZ   R4,Outbit1
          RET



 
;===================================
DISPLAY:MOV R4,#04H;位数选择
        MOV R5,#00H
DISP:MOV A,R5
     SWAP A
     ORL A,@R0
     MOV P0,A;可更换的LED驱动口
     ACALL DELAY1
     INC R5
     INC R0
     DJNZ R4,DISP
     RET

DELAY1:MOV R6,#10H
LOOP11:MOV R7,#38H
LOOP2:DJNZ R7,LOOP2
      DJNZ R6,LOOP11
      RET
;=============================

 ;---------------------------------------------------------------------
 
 ;延时子程序
 ;--------------------------------------------------------------------
DELAY:       
               MOV  R5,#03H
 DEL0:         
               MOV  R6,#0FFH
 DEL1:         
               MOV  R7,#0FFH
               DJNZ  R7,$
               DJNZ  R6,DEL1
               DJNZ  R5,DEL0
               RET
 ;=====================================================

⌨️ 快捷键说明

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