资源预览内容
第1页 / 共6页
第2页 / 共6页
第3页 / 共6页
第4页 / 共6页
第5页 / 共6页
第6页 / 共6页
亲,该文档总共6页全部预览完了,如果喜欢就下载吧!
资源描述
#INCLUDECBLOCK 20HSEC ;秒MIN ;分HOU ;小时DATE ;日期MON ;月DAY ;日YERR ;年DDD ;写使能位TIME_TX ;1302 发送寄存器TIME_RX ;1302接收寄存器COUNT1 ;COUNT2 ;DELAY1DELAY2ENDC*; ; 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 MACROBSF STATUS,RP0ENDMBANK0 MACROBCF STATUS,RP0ENDM ORG 000HNOPGOTO MAINMAINCALL CLR_RAM 清除 RANCALL PORT_INI 端口定义CALL DS1302_INICALL SET_TIME 一次写 入 7 个时间数据CALL GET_TIME ; 一次读回 7 个时间数据GOTO $; 写入秒,可以写任意的 7 个时间数据,单字节MOVLW B10000000MOVWF TIME_TXBSF RSTCALL TIME_WRITE_1MOVLW B00100101MOVWF TIME_TXCALL TIME_WRITE_1BCF RST读秒,可以读任意 7 个时间,单字节MOVLW B10000001MOVWF TIME_TXBSF RSTCALL TIME_WRITE_1CALL TIME_READ_1BCF RSTGOTO $:子程序*; DS1302_INI; 作用:初始化 1302,先禁止 RST,允许写使能;*DS1302_INIBCF SCLKBCF RST ;先禁止MOVLW B10001110 ;写使能寄存器MOVWF TIME_TXBSF RSTCALL TIME_WRITE_1MOVLW B0 ;允许写使能MOVWF TIME_TXCALL TIME_WRITE_1;发送一个字节的数据BCF RST;设定充电方式没有设定RETURN;*; SET_TIME; 作用:一次输入 7 个数据来一次性的设定时间, 同时使能写寄存器; 突发模式写入,必须写入 8 个数据,不是 7个; INPUT:要设定的 8个数据已经写入到 TIME_TX_ADD 开始的 8 个字节里面;*SET_TIMEMOVLW B10111110 ;标志位MOVWF TIME_TXBSF RSTCALL TIME_WRITE_1;TIME_WRITE_8 ;发送8 个数据MOVLW TIME_TX_ADD ;发送数据的起始地址MOVWF FSRMOVLW D8MOVWF COUNT2TW1MOVF INDF,WMOVWF TIME_TXCALL TIME_WRITE_1INCF FSR,FDECFSZ COUNT2,FGOTO TW1BCF RSTRETURN;*; GET_TIME; 作用:一次接受 7 个字节的时间数据,突发模式 读取; INPUT:NONE; OUTPUT:把 7 个时间数据保存在TIME_RX_ADD 开始的 7个寄存器里面;*GET_TIMEMOVLW B10111111MOVWF TIME_TXBSF RSTCALL TIME_WRITE_1;TIME_READ_7 ;接收 7个数据MOVLW TIME_RX_ADD ;保存数据的起始地址MOVWF FSRMOVLW D7MOVWF COUNT2TR2CALL TIME_READ_1MOVF TIME_RX,WMOVWF INDFINCF FSR,FDECFSZ COUNT2,FGOTO TR2BCF RSTRETURN;*; TIME_WRITE_1; 作用:一次发送一个字节的数据,用于发送 1302的; 控制字或者发送一个数据; INPUT: TIME_TX;*TIME_WRITE_1MOVLW D8MOVWF COUNT1TLOPBCF I_O ;初始值是低电平BCF SCLKBTFSC TIME_TX,0BSF I_ORRF TIME_TX,FBSF SCLK ;高电平发送数据DECFSZ COUNT1,FGOTO TLOPBCF SCLK ;恢复RETURN;*; TIME_READ_1; 作用:读取 1302 一个字节的数据; INPUT: NONE; OUTPUT:接收数据保存在 TIME_RX 里面; 原理:在 SCLK 下降沿接收数据,低字节在前,根据 I_O的; 的电平的高低,采取带进位和不带进位右移.;*TIME_READ_1BANK1BSF TRISC,7 ;I_O IS INPUTBANK0MOVLW D8MOVWF COUNT1 ;读取 8 个字节TR1BCF SCLK ;下降沿读取BCF STATUS,CBTFSC I_OBSF STATUS,CRRF TIME_RX,FBSF SCLK ;恢复高电平DECFSZ COUNT1,FGOTO TR1BANK1BCF TRISC,7 ;OUTPUTBANK0BCF SCLK ;恢复RETURNNOPPORT_INIBANK1MOVLW B00000000MOVWF TRISCMOVLW B0MOVWF TRISBMOVLW B00000111MOVWF ADCON1MOVLW B00000000MOVWF TRISABANK0MOVLW 18HMOVWF 20HMOVLW 19HMOVWF 21HMOVLW 05HMOVWF 22HMOVLW 13HMOVWF 23HMOVLW 14HMOVWF 24HMOVLW 15HMOVWF 25HMOVLW 16HMOVWF 26HRETURNCLR_RAMMOVLW 20HMOVWF FSRLOOPCLRF INDFINCF FSR,FBTFSS FSR,7GOTO LOOP ;清除 32个RETURNEND
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号