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

📄 ex3-7.asm

📁 《PIC单片机应用开发典型模块》源代码及图片
💻 ASM
字号:
;--------------程序信息-----------------
;文件名   : ex3-7.asm
;版本     : 1.0
;作者     :
;修改时间 :

;--------------程序说明------------------
;CHAP 3.7  实时时钟实例

;-----------常量和变量声明---------------

               ;ACC EQU A;
;--------------预定义--------------------

               ORG 0000H
               LJMP START

;------------中断入口地址分配------------
               ;ORG 0003H
               ;LJMP INT0PRG
               ;ORG 000BH
               ;LJMP INT1PRG
               ;ORG 0013H;
               ;LJMP
               ;ORG 0030H

START:
      LCALL RTCINIT;       RTC实时时钟初始化
;--------------初始化子程序--------------
     MOV SP,60H;
;--------------主程序--------------------
MAIN: 	LCALL RTCREAD;      RTC实时时钟寄存器读取
        LCALL DELAY100MS;   延时间隔100ms

LJMP MAIN


;----------------子程序------------------
;---------------------------------
;  DS12887初始化子程序
;---------------------------------
RTCINIT:
        MOV DPTR,#800AH;		寄存器A的地址为800AH
        MOV A,  # 70H;			关闭晶振,并分频器复位
        MOVX @DPTR, A;			将累加器A的内容传送给寄存器A
        INC DPTR;			DPTR为寄存器B的地址
        MOV A, #8AH;			停止更新,允许中断,选择BCD码,24小时制
        MOVX @DPTR, A;
        MOV  DPL,  # 00H;		 DPTR中为秒单元地址
        CLR   A;			累加器清零
        MOVX  @DPTR, A;		        秒单元送00
        MOV  DPL,  # 02H;		DPTR中为分单元地址
        CLR  A
        MOVX  @DPTR, A;		       分单元送00
        MOV  DPL,  # 04H;		DPTR中为小时单元地址
        MOV  A,#00H;			0时
        MOVX  @DPTR, A;		        时单元送00H
        MOV  DPL,  # 07H;		日单元
        MOV  A,#01H;			1日
        MOVX  @DPTR, A;		        日单元送01
        INC  DPTR;			DPTR中为月单元地址
        MOV  A, 01H;			1月
        MOVX  @DPTR , A;		月单元送01
        INC DPTR;			DPTR中为年单元地址
        MOV  A ,#06H;			2006年
        MOVX  @DPTR, A;		        年单元送06
        INC  DPTR;		    	DPTR中的值为800AH,是寄存器A的地址
        MOV  A,  # 26H;	     	         DV2一DV0,打开晶振
        MOVX  @DPTR, A;
        INC  DPTR;			DPTR中为寄存器B的地址
        MOV A,#1AH;		        更新正常,周期中断禁止,定闹中断禁止,允许更新中断。
        MOVX  @DPTR, A;		        时钟开始运行
RET


;---------------------------------
;  DS12887查询法读取时间和日历子程序
;---------------------------------
RTCREAD:
        MOV  DPTR, # 800AH;		寄存器A的地址送DPTR地址指针寄存器
 WAIT:  MOVX  A, @DPTR;	读寄存器A
        JB ACC.7, WAIT;			UIP= 1则等待更新完毕
        MOV DPL,#00H;
        MOV R0,#30H;
        MOV R2,#03H;
LOOP1: MOVX A, @DPTR;	读秒,分,时
       MOV @R0, A;		秒,分,时,送30H, 31H, 32H
       INC DPTR
       INC DPTR
       INC R0
       DJNZ R2,LOOP1;

       DEC DPL;		DPTR中为星期地址
       MOV R2,#04H;
LOOP2: MOVX A, @DPTR;	读星期,日,月,年
       MOV @R0,A;		星期,日,月,年送33H, 34H, 35H, 36H
       INC DPTR;			DPTR中为日地址
       INC R0;
       DJNZ R2, LOOP2;
RET;

;--------------中断子程序----------------

;---------------延时子程序---------------

DELAY100MS: MOV R5,#04H;
 DELAY00: MOV R6,#00F4H;
 DELAY01: MOV R7,#0FFH;
 DELAY02: DJNZ R7,DELAY02;
        DJNZ R6,DELAY01;
        DJNZ R5,DELAY00;
        RET;

END

;---------------注意事项-----------------

⌨️ 快捷键说明

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