;先设置时间和日期为:秒(08),分(58),时(05),日(13),月(01),年(55)
;六位数码观显示时间和日期,默认显示的是时间,通过小数点区分时与分、分与秒
;按下RB1键不放,显示切换到日期显示。
#INCLUDE<p16f877a.inc> ;包含头文件
__CONFIG _DEBUG_OFF&_CP_ALL&_WRT_HALF&_CPD_ON&_LVP_OFF&_BODEN_OFF&_PWRTE_ON&_WDT_OFF&_HS_OSC
;**********************引脚定义****************************
#DEFINE I_O PORTB,4 ;1302I_O
#DEFINE SCLK PORTB,0 ;1302时钟
#DEFINE RST PORTB,5 ;1302使能位
;*********************寄存器定义***************************
TIME_TX_ADD EQU 20H ;连续发送8个数据起始地址
TIME_RX_ADD EQU 20H ;连续接收7个数据起始地址
ERRORLEVEL -302
CBLOCK 20H
SEC ;秒
MIN ;分
HOU ;小时
DATE ;日期
MON ;月
DAY ;日
YERR ;年
TIME_TX ;1302发送寄存器
TIME_RX ;1302接收寄存器
COUNT1 ;循环次数计数器
COUNT2 ;
ENDC
;*******************宏定义*********************************
BANK1 MACRO ;体1
BSF STATUS,RP0
ENDM
BANK0 MACRO ;体0
BCF STATUS,RP0
ENDM
ORG 000H ;复位入口地址
NOP ;ICD所需要的空指令
GOTO MAIN ;跳转到主程序
;********************查表程序*****************************
TABLE
ADDWF PCL,1
RETLW 0C0H ;0的编码(公阳极数码管)
RETLW 0F9H ;1的编码
RETLW 0A4H ;2的编码
RETLW 0B0H ;3的编码
RETLW 99H ;4的编码
RETLW 92H ;5的编码
RETLW 082H ;6
RETLW 0F8H ;7
RETLW 080H ;8
RETLW 090H ;9
;**********************主程序*****************************
MAIN
CALL PORT_INI ;端口定义
CALL DS1302_INI ;1302初始化程序
CALL SET_TIME ;一次写入7个时间数据
CALL GET_TIME ;一次读回7个时间数据
CALL DISPLAY ;调用显示程序
GOTO $-2 ;循环读取时间
;**********************DS1302初始化程序******************
本文关键字:暂无联系方式PIC单片机,单片机-工控设备 - PIC单片机