PIC单片机控制时钟芯片DS1302汇编程序

来源:本站
导读:目前正在解读《PIC单片机控制时钟芯片DS1302汇编程序》的相关信息,《PIC单片机控制时钟芯片DS1302汇编程序》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《PIC单片机控制时钟芯片DS1302汇编程序》的详细说明。
简介:这篇文章是叙述PIC单片机控制时钟芯片DS1302汇编程序,希望对需要的读者带来参考。

#INCLUDE

CBLOCK 20H

SEC ;秒

MIN ;分

HOU ;小时

DATE ;日期

MON ;月

DAY ;日

YERR ;年

DDD ;写使能位

TIME_TX ;1302发送寄存器

TIME_RX ;1302接收寄存器

COUNT1 ;

COUNT2 ;

DELAY1

DELAY2

ENDC

*******************************

; ; 1302子程序说明

; ;******************************

; DS1302INI ;1302初始化,先禁止RST,设定充电方式

; SET_TIME ;一次发送7个数据设定时间,包含写使能寄存器,8个数据

; GET_TIME ;一次接收7个数据显示时间

; TIME_WRITE_1;一次写入1302一个字节

; TIME_READ_1 ;一次接收一个字节数据

; ;******* 1302定义**************

; ;******************************

#DEFINE I_O PORTC,7 ;1302I_O

#DEFINE SCLK PORTC,6 ;1302时钟

#DEFINE RST PORTA,0 ;1302使能位

#DEFINE RX_ADD 40H ;保存接受的7个数据

#DEFINE TX_ADD 20H ;开始保存7个要写入的时间数据

BANK1 MACRO

BSF STATUS,RP0

ENDM

BANK0 MACRO

BCF STATUS,RP0

ENDM

ORG 000H

NOP

GOTO MAIN

MAIN

CALL CLR_RAM 清除RAN

CALL PORT_INI 端口定义

CALL DS1302_INI

CALL SET_TIME 一次写入7个时间数据

CALL GET_TIME ; 一次读回7个时间数据

GOTO $

;; 写入秒,可以写任意的7个时间数据,单字节

MOVLW B'10000000'

MOVWF TIME_TX

BSF RST

CALL TIME_WRITE_1

MOVLW B'00100101'

MOVWF TIME_TX

CALL TIME_WRITE_1

BCF RST

读秒,可以读任意7个时间,单字节

MOVLW B'10000001'

MOVWF TIME_TX

BSF RST

CALL TIME_WRITE_1

CALL TIME_READ_1

BCF RST

GOTO $

:子程序

**************************************************

; DS1302_INI

; 作用:初始化1302,先禁止RST,允许写使能

;**************************************************

DS1302_INI

BCF SCLK

BCF RST ;先禁止

MOVLW B'10001110' ;写使能寄存器

MOVWF TIME_TX

BSF RST

CALL TIME_WRITE_1

MOVLW B'0' ;允许写使能

MOVWF TIME_TX

CALL TIME_WRITE_1;发送一个字节的数据

BCF RST

;设定充电方式

没有设定

RETURN

;**************************************************

; SET_TIME

; 作用:一次输入7个数据来一次性的设定时间,同时使能写寄存器

; 突发模式写入,必须写入8个数据,不是7个

; INPUT:要设定的8个数据已经写入到TIME_TX_ADD开始的8个字节里面

;**************************************************

SET_TIME

MOVLW B'10111110' ;标志位

MOVWF TIME_TX

BSF RST

CALL TIME_WRITE_1

;TIME_WRITE_8 ;发送8个数据

MOVLW TIME_TX_ADD ;发送数据的起始地址

MOVWF FSR

MOVLW D'8'

MOVWF COUNT2

TW1

MOVF INDF,W

MOVWF TIME_TX

CALL TIME_WRITE_1

INCF FSR,F

DECFSZ COUNT2,F

GOTO TW1

BCF RST

RETURN

;***********************************************

; GET_TIME

; 作用:一次接受7个字节的时间数据,突发模式读取

; INPUT:NONE

; OUTPUT:把7个时间数据保存在TIME_RX_ADD开始的7个寄存器里面

;***********************************************

GET_TIME

MOVLW B'10111111'

MOVWF TIME_TX

BSF RST

CALL TIME_WRITE_1

;TIME_READ_7 ;接收7个数据

MOVLW TIME_RX_ADD ;保存数据的起始地址

MOVWF FSR

MOVLW D'7'

MOVWF COUNT2

TR2

CALL TIME_READ_1

MOVF TIME_RX,W

MOVWF INDF

INCF FSR,F

DECFSZ COUNT2,F

GOTO TR2

BCF RST

RETURN

;************************************************

; TIME_WRITE_1

; 作用:一次发送一个字节的数据,用于发送1302的

; 控制字或者发送一个数据

; INPUT: TIME_TX

;************************************************

TIME_WRITE_1

MOVLW D'8'

MOVWF COUNT1

TLOP

BCF I_O ;初始值是低电平

BCF SCLK

BTFSC TIME_TX,0

BSF I_O

RRF TIME_TX,F

BSF SCLK ;高电平发送数据

DECFSZ COUNT1,F

GOTO TLOP

BCF SCLK ;恢复

RETURN

;************************************************

; TIME_READ_1

; 作用:读取1302一个字节的数据

; INPUT: NONE

; OUTPUT:接收数据保存在TIME_RX里面

; 原理:在SCLK下降沿接收数据,低字节在前,根据I_O的

; 的电平的高低,采取带进位和不带进位右移.

;***********************************************

TIME_READ_1

BANK1

BSF TRISC,7 ;I_O IS INPUT

BANK0

MOVLW D'8'

MOVWF COUNT1 ;读取8个字节

TR1

BCF SCLK ;下降沿读取

BCF STATUS,C

BTFSC I_O

BSF STATUS,C

RRF TIME_RX,F

BSF SCLK ;恢复高电平

DECFSZ COUNT1,F

GOTO TR1

BANK1

BCF TRISC,7 ;OUTPUT

BANK0

BCF SCLK ;恢复

RETURN

NOP

PORT_INI

BANK1

MOVLW B'00000000'

MOVWF TRISC

MOVLW B'0'

MOVWF TRISB

MOVLW B'00000111'

MOVWF ADCON1

MOVLW B'00000000'

MOVWF TRISA

BANK0

MOVLW 18H

MOVWF 20H

MOVLW 19H

MOVWF 21H

MOVLW 05H

MOVWF 22H

MOVLW 13H

MOVWF 23H

MOVLW 14H

MOVWF 24H

MOVLW 15H

MOVWF 25H

MOVLW 16H

MOVWF 26H

RETURN

CLR_RAM

MOVLW 20H

MOVWF FSR

LOOP

CLRF INDF

INCF FSR,F

BTFSS FSR,7

GOTO LOOP ;清除32个

RETURN

END

提醒:《PIC单片机控制时钟芯片DS1302汇编程序》最后刷新时间 2024-03-14 01:08:13,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《PIC单片机控制时钟芯片DS1302汇编程序》该内容的真实性请自行鉴别。