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

📄 arm.asm

📁 一个基于51单片机的报警系统。包含有电路图
💻 ASM
字号:
;///////////////////////////////////////////

;本程序实现实时时钟模块 时钟芯片型号:DS1302

;///////////////////////////////////////////

T_CLK   EQU   P1.0 ;实时时钟时钟线引脚
T_IO    EQU   P1.1 ;实时时钟数据线引脚
T_RST   EQU   P1.2 ;实时时钟复位线引脚
;40h--46h 存放 "秒 分 时 日 月 星期 年 "
Second  EQU  40H

   ORG    0000H
   AJMP   MAIN
   ORG    0030H
MAIN:
      MOV     40H,#00         ;秒
      MOV     41H,#46         ;分
      MOV     42H,#16         ;时
      MOV     43H,#27         ;日
      MOV     44H,#8         ;月
      MOV     45h,#07         ;星期
      MOV     46h,#06         ;年

      CLR     T_RST
      CLR     T_CLK
      SETB    T_RST
      MOV     B,#80H
      LCALL   RTInputByte
      MOV     B,#0
      LCALL   RTInputByte
      SETB    T_CLK
      CLR     T_RST
get:
      CLR     T_RST
      CLR     T_CLK
      SETB    T_RST
      MOV     B,#81H
      LCALL   RTInputByte
      LCALL   RTOutputByte
      SETB    T_CLK
      CLR     T_RST

      LCALL   SET1302
LOOP:
      LCALL   Get1302
      AJMP    LOOP



;**********************************************************
;子程序名:Set1302
;功 能:设置DS1302 初始时间,并启动计时。
;调 用:RTInputByte
;入口参数:初始时间在:Second,Minute,Hour,Day,Month,Week.Year(地址连续)
;出口参数:无
;影响资源:A B R0 R1 R4 R7
;**********************************************************
Set1302:
      CLR     T_RST
      CLR     T_CLK
      SETB    T_RST
      MOV     B,#8EH      ;控制寄存器
      LCALL   RTInputByte
      MOV     B,#00H      ;写操作前WP=0
      LCALL   RTInputByte
      SETB    T_CLK
      CLR     T_RST
      MOV     R0,#Second;
      MOV     R7,#7      ;秒 分 时 日 月 星期 年
      MOV     R1,#80H    ;秒写地址
S13021:
      CLR     T_RST
      CLR     T_CLK
      SETB    T_RST
      MOV     B,#80H
      LCALL   RTInputByte
      MOV     B,#00H
      LCALL   RTInputByte
      MOV     B,R1       ;写秒 分 时 日 月 星期 年 地址
      LCALL   RTInputByte
      MOV     A,@R0      ;写秒数据
      MOV     B,A
      LCALL   RTInputByte
      INC     R0
      INC     R1
      INC     R1
      SETB    T_CLK
      CLR     T_RST
      DJNZ    R7,S13021
      CLR     T_RST
      CLR     T_CLK
      SETB    T_RST
      MOV     B,#8EH     ;控制寄存器
      LCALL   RTInputByte
      MOV     B,#80H     ;控制,WP=1,写保护
      LCALL   RTInputByte
      SETB    T_CLK
      CLR     T_RST
      RET

;**********************************************************
;子程序名:Get1302
;功 能:从DS1302 读时间
;调 用:RTInputByte,RTOutputByte
;入口参数:时间保存在:Second,Minute,Hour,Day,Month,Week.Year
;出口参数:无
;影响资源:A B R0 R1 R4 R7
;**********************************************************
Get1302:
      MOV     R0,#Second;
      MOV     R7,#7
      MOV     R1,#81H;秒地址
G13021:
      CLR     T_RST
      CLR     T_CLK
      SETB    T_RST
      MOV     B,R1      ;秒 分 时 日 月 星期 年 地址
      LCALL   RTInputByte
      LCALL   RTOutputByte
      MOV     @R0,A     ;秒
      INC     R0
      INC     R1
      INC     R1
      SETB    T_CLK
      CLR     T_RST
      DJNZ    R7,G13021
      RET

;**********************************************************
;功 能:写1302一字节(内部子程序)
;**********************************************************
RTInputByte:
      MOV     R4,#8
Inbit1:
      MOV     A,B
      RRC     A
      MOV     B,A
      MOV     T_IO,C
      SETB    T_CLK
      CLR     T_CLK
      DJNZ    R4,Inbit1
      RET

;**********************************************************
;功 能:读1302一字节(内部子程序)
;**********************************************************
RTOutputByte:
      MOV     R4,#8
Outbit1:
      MOV     C,T_IO
      RRC     A
      SETB    T_CLK
      CLR     T_CLK
      DJNZ    R4,Outbit1
      RET
;/////////////////////////////////////////////////////////////////////////////

END

⌨️ 快捷键说明

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