; DS1302_INI
; 作用:初始化1302,写使能寄存器
;********************************************************
;入口参数:无
;出口参数:TIME_TX
DS1302_INI
BCF SCLK
BCF RST ;先禁止
MOV LW B’10001110’ ;写使能寄存器
MOV WF TIME_TX
BSF RST ;允许1302工作
CALL TIME_WRITE_1 ;调用写一个数据程序
MOV LW 0H ;允许写使能
MOV WF TIME_TX
CALL TIME_WRITE_1 ;发送一个字节的数据
BCF RST
RETURN
;***********************写时间程序*************************
; SET_TIME
; 作用:一次输入7个数据来一次性的设定时间,同时使能写寄存器
; 突发模式写入,必须写入8个数据,不是7个
; INPUT:要设定的8个数据已经写入到TIME_TX_ADD开始的8个字节里面
;********************************************************
;入口参数:20H--27H的8个RAM单元
SET_TIME
MOV LW B’10111110’ ;多字节写方式
MOV WF TIME_TX
BSF RST
CALL TIME_WRITE_1
MOV LW TIME_TX_ADD ;发送数据的起始地址
MOV WF FSR
MOV LW D’8’ ;一起发送8个数据
MOV WF COUNT2
TW1
MOV F INDF,W
MOV WF 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个寄存器里面
;*********************************************************
;入口参数:无
;出口参数:20H--26H的7个RAM单元
GET_TIME
MOV LW B’10111111’ ;多字接读取方式
MOV WF TIME_TX
BSF RST
CALL TIME_WRITE_1
MOV LW TIME_RX_ADD ;保存数据的起始地址
MOV WF FSR
MOV LW D’7’ ;连续读取7个数据
MOV WF COUNT2
TR2
CALL TIME_READ_1
MOV F TIME_RX,W
MOV WF INDF
INCF FSR,F
DECFSZ COUNT2,F
GOTO TR2
BCF RST
RETURN
;**********************写一个字节程序*****************
; TIME_WRITE_1
; 作用:一次发送一个字节的数据,用于发送1302的
; 控制字或者发送一个数据
;************************************************
;入口参数:TIME_TX
;出口参数:无
TIME_WRITE_1
MOV LW D’8’ ;8位
MOV WF 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一个字节的数据
; 原理:在SCLK下降沿接收数据,低字节在前,根据I_O的
; 的电平的高低,采取带进位和不带进位右移.
;***********************************************
;入口参数:无
;出口参数:TIME_RX
TIME_READ_1
BANK1
BSF TRISB,4 ; I_O 设置为输入
BANK0
MOV LW D’8’
MOV WF 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 TRISB,4 ;I_O恢复为输出
BANK0
BCF SCLK
RETURN
NOP
;******************端口/寄存器设置********************
PORT_INI
BANK1
MOV LW B’00000000’
MOV WF TRISA ;A口输出
MOV WF TRISD ;D口输出
MOV LW 06H
MOV WF ADCON1 ;A口配置为普通数字I/O
MOV LW B’00000010’
MOV WF TRISB ;RB1口为输入,其他口为输出
CLRF OPTION_REG ;开启B口的弱上拉
上一页 [1] [2] [3] 下一页
本文关键字:暂无联系方式PIC单片机,单片机-工控设备 - PIC单片机