ds1302时序怎么写

1.如何利用ds1302的时序图来编写汇编语言:给你当参考..;************** DS1302 端口位定义 ************** IO_DATA BIT P1.1 ; 数据传送总线 SCLK BIT P1.0 ; 时钟控制总线 RST BIT P1.2 ; 复位总线;--------------------------------------------;DS1302 初始化子程序; (R0)=数据 (R1)=地址;--------------------------------------------PROSET: CLR RST ;DS1302复位 CLR SCLK NOP NOP SETB RST MOV R1,#90H ;写充电寄存器 MOV R0,#0ABH LCALL WRITE RET;================================================;写 DS1302 子程序;================================================WRITE: CLR SCLK NOP NOP SETB RST NOP MOV A,R1 MOV R2,#08HWRI_01: RRC A ;传输地址到DS1302 NOP NOP CLR SCLK NOP NOP MOV IO_DATA,C NOP NOP SETB SCLK NOP NOP DJNZ R2,WRI_01 CLR SCLK NOP NOP MOV A,R0 MOV R2,#08HWRI_02: RRC A ;传输数据到DS1302 NOP CLR SCLK NOP NOP MOV IO_DATA,C NOP NOP SETB SCLK NOP NOP DJNZ R2,WRI_02 CLR SCLK NOP NOP CLR RST NOP NOP RET;=================================================;读 DS1302 子程序;=================================================READ: CLR SCLK NOP NOP SETB RST NOP NOP MOV A,R1 MOV R2,#08HREAD_01: RRC A NOP ;先传输地址到DS1302 MOV IO_DATA,C NOP NOP SETB SCLK NOP NOP CLR SCLK NOP NOP DJNZ R2,READ_01 NOP NOP SETB IO_DATA CLR A CLR C MOV R2,#08HREAD_02: CLR SCLK NOP NOP MOV C,IO_DATA NOP NOP RRC A ;再从DS1302接收数据 NOP NOP SETB SCLK NOP NOP DJNZ R2,READ_02 MOV R0,A CLR RST RET;===============================================;读时间、日期数据子程序;存放单元 40H - 46H;===============================================GET_TIME: MOV R1,#81H ;读秒 LCALL READ MOV 40H,R0 MOV R1,#83H ;读分 LCALL READ MOV 41H,R0 MOV R1,#85H ;读时 LCALL READ MOV 42H,R0 MOV R1,#87H ;读出日期 LCALL READ MOV 43H,R0 MOV R1,#89H ;读出月份 LCALL READ MOV 44H,R0 MOV R1,#8BH ;读出星期 LCALL READ MOV 46H,R0 MOV R1,#8DH ;读出年 LCALL READ MOV 45H,R0 RET 。
2.如何利用ds1302的时序图来编写汇编语言:给你当参考..;************** DS1302 端口位定义 ************** IO_DATA BIT P1.1 ; 数据传送总线 SCLK BIT P1.0 ; 时钟控制总线 RST BIT P1.2 ; 复位总线;--------------------------------------------;DS1302 初始化子程序; (R0)=数据 (R1)=地址;--------------------------------------------PROSET: CLR RST ;DS1302复位 CLR SCLK NOP NOP SETB RST MOV R1,#90H ;写充电寄存器 MOV R0,#0ABH LCALL WRITE RET;================================================;写 DS1302 子程序;================================================WRITE: CLR SCLK NOP NOP SETB RST NOP MOV A,R1 MOV R2,#08HWRI_01: RRC A ;传输地址到DS1302 NOP NOP CLR SCLK NOP NOP MOV IO_DATA,C NOP NOP SETB SCLK NOP NOP DJNZ R2,WRI_01 CLR SCLK NOP NOP MOV A,R0 MOV R2,#08HWRI_02: RRC A ;传输数据到DS1302 NOP CLR SCLK NOP NOP MOV IO_DATA,C NOP NOP SETB SCLK NOP NOP DJNZ R2,WRI_02 CLR SCLK NOP NOP CLR RST NOP NOP RET;=================================================;读 DS1302 子程序;=================================================READ: CLR SCLK NOP NOP SETB RST NOP NOP MOV A,R1 MOV R2,#08HREAD_01: RRC A NOP ;先传输地址到DS1302 MOV IO_DATA,C NOP NOP SETB SCLK NOP NOP CLR SCLK NOP NOP DJNZ R2,READ_01 NOP NOP SETB IO_DATA CLR A CLR C MOV R2,#08HREAD_02: CLR SCLK NOP NOP MOV C,IO_DATA NOP NOP RRC A ;再从DS1302接收数据 NOP NOP SETB SCLK NOP NOP DJNZ R2,READ_02 MOV R0,A CLR RST RET;===============================================;读时间、日期数据子程序;存放单元 40H - 46H;===============================================GET_TIME: MOV R1,#81H ;读秒 LCALL READ MOV 40H,R0 MOV R1,#83H ;读分 LCALL READ MOV 41H,R0 MOV R1,#85H ;读时 LCALL READ MOV 42H,R0 MOV R1,#87H ;读出日期 LCALL READ MOV 43H,R0 MOV R1,#89H ;读出月份 LCALL READ MOV 44H,R0 MOV R1,#8BH ;读出星期 LCALL READ MOV 46H,R0 MOV R1,#8DH ;读出年 LCALL READ MOV 45H,R0 RET 。
3.怎么读时钟芯片DS1302的时间说明p1.2是用了非门按制RST脚,所以SETBP1.2;令=0