《DS130251单片机汇编程序.docx》由会员分享,可在线阅读,更多相关《DS130251单片机汇编程序.docx(4页珍藏版)》请在三一办公上搜索。
1、DS130251单片机汇编程序DS1302汇编程序,51单片机汇编程序,仅需修改引脚定义即可。晶振大小12M,程序测试完全正确。 ;端口引脚定义区 SCLK BIT P3.6 ;1302时钟线 IO BIT P3.4 ;1302数据线 RST BIT P3.5 ;1302复位线 ;变量声明区 ALL_FLAG EQU 20H ;标志位 SEC EQU 32H ;秒 MIN EQU 33H ;分 HOUR EQU 34H ;时 DAY EQU 35H ;日 MON EQU 36H ;月 WEEK EQU 37H ;星期 YEAR EQU 38H ;年 DS_DAT EQU 39H DS_ADD
2、EQU 3AH DS_DATA EQU 3BH /* 延时函数,延时时间为DELAYED*0.5毫秒 0100毫秒的延时 */ DELAY_MS: MOV R7,DELAYED D1: MOV R6,#0F8H D2: DJNZ R6,D2 DJNZ R7,D1 RET /* 延时函数,延时时间为DELAYED*2微秒 0500微秒的延时 */ DELAY_US: MOV R7,A DU1: DJNZ R7,DU1 RET /* DS1302写字节函数 */ DS_W_BYTE: MOV R0,#08 MOV A,DS_DAT DS_W1: RRC A MOV IO,C CLR SCLK NO
3、P SETB SCLK DJNZ R0,DS_W1 RET /* DS1302读字节函数 */ DS_R_BYTE: SETB IO MOV A,#00H MOV R0,#08 CLR SCLK DS_R1: MOV C,IO RRC A SETB SCLK NOP CLR SCLK DJNZ R0,DS_R1 MOV DS_DAT,A RET /* DS1302读数据函数 入口地址存至DS_ADD;读取到的数据存入DS_DAT */ DS_R_DAT: CLR RST NOP CLR SCLK NOP SETB RST NOP MOV DS_DAT,DS_ADD LCALL DS_W_BYT
4、E LCALL DS_R_BYTE SETB SCLK CLR RST RET /* DS1302写数据函数 入口地址DS_ADD,入口数据DS_DATA */ DS_W_DAT: CLR RST NOP CLR SCLK NOP SETB RST NOP MOV DS_DAT,DS_ADD LCALL DS_W_BYTE MOV DS_DAT,DS_DATA LCALL DS_W_BYTE MOV DS_DAT,A SETB SCLK CLR RST RET /* DS1302读时间函数 入口地址DS_ADD, */ DS_R_TIME: MOV DS_ADD,#81H LCALL DS_R
5、_DAT MOV SEC,DS_DAT MOV DS_ADD,#83H LCALL DS_R_DAT MOV MIN,DS_DAT MOV DS_ADD,#85H LCALL DS_R_DAT MOV HOUR,DS_DAT MOV DS_ADD,#87H LCALL DS_R_DAT MOV DAY,DS_DAT MOV DS_ADD,#89H LCALL DS_R_DAT MOV MON,DS_DAT MOV DS_ADD,#8BH LCALL DS_R_DAT MOV WEEK,DS_DAT MOV DS_ADD,#8DH LCALL DS_R_DAT MOV YEAR,DS_DAT R
6、ET /* DS1302写时间函数 入口地址DS_ADD,入口数据 */ DS_W_TIME: CLR RST CLR SCLK MOV DS_ADD,#8EH MOV DS_DATA,#00H LCALL DS_W_DAT MOV DS_ADD,#80H MOV DS_DATA,SEC LCALL DS_W_DAT MOV DS_ADD,#82H MOV DS_DATA,MIN LCALL DS_W_DAT MOV DS_ADD,#84H MOV DS_DATA,HOUR LCALL DS_W_DAT MOV DS_ADD,#86H MOV DS_DATA,DAY LCALL DS_W_DA
7、T MOV DS_ADD,#88H MOV DS_DATA,MON LCALL DS_W_DAT MOV DS_ADD,#8AH MOV DS_DATA,WEEK LCALL DS_W_DAT MOV DS_ADD,#8CH MOV DS_DATA,YEAR LCALL DS_W_DAT MOV DS_ADD,#8EH MOV DS_DATA,#80H ;语序写 ;写保护 LCALL DS_W_DAT RET /* DS1302初始化 */ DS_INIT: CLR RST CLR SCLK MOV DS_ADD,#8EH MOV DS_DATA,#00H LCALL DS_W_DAT MOV DS_ADD,#80H MOV DS_DATA,#00H LCALL DS_W_DAT MOV DS_ADD,#90H MOV DS_DATA,#0A6H LCALL DS_W_DAT MOV DS_ADD,#8EH MOV DS_DATA,#80H LCALL DS_W_DAT RET ;允许写;写保护