下午弄了哈,但是测的是1.37v的交流电;但是还是不能从芯片读出数据,我又从新写了另一个程序还是不行~12楼帮忙看看~我都要急死了 sclk equ p1.0 io equ p1.1 rst equ p1.2 org 0 jmp start org 30h start: clr sclk clr rst nop setb rst mov r0,#8fh;控制寄存器,写寄存器 call wr_ds mov r0,#00;允许写寄存器 call wr_ds setb sclk clr rst nop clr sclk setb rst mov r0,#81h call wr_ds mov r0,#00;给秒初值,并启动芯片 call wr_ds clr rst setb sclk nop setb rst clr sclk mov r0,#83h call wr_ds mov r0,#55 call wr_ds clr rst setb sclk nop setb rst clr sclk mov r0,#8fh call wr_ds mov r0,#80h;写保护,禁止写寄存器 call wr_ds clr rst setb sclk nop rd_ds1302: setb rst clr sclk mov r0,#8eh call wr_ds mov r0,#00;读控制寄存器,允许读 call wr_ds clr rst setb sclk nop mov r0,#80h call wr_ds call rd_ds mov 21h,a clr rst setb sclk nop setb rst clr sclk mov r0,#82h call wr_ds call rd_ds mov 22h,a clr rst setb sclk nop mov r0,#21h mov r2,#2 show_again: call show call delay mov p2,#0ffh call delay inc r0 djnz r2,show_again ;================================================ ;程序名: wd_ds ;程序功能: 给芯片送一个数据 ; r0为入口参数 ; 没有返回值 ;================================================ wr_ds: mov r7,#8 mov a,r0 clr io clr c lp1: setb sclk rrc a mov io,c nop clr sclk nop djnz r7,lp1 clr io ret ;================================================ ;程序名称: rd_ds ;程序功能: 读出芯片的一个数据 ; 读出的数据存在 acc中 ;================================================ rd_ds: mov r7,#8 clr c clr io clr a lp2: setb sclk nop mov c,io rrc a clr sclk nop djnz r7,lp2 clr io ret ;================================================= ; 程序名称: show ;程序功能: 将读出来的数据通过P2口,显示出来 ; 无返回值 ;================================================= show: mov a,@r0 mov b,#10 div ab mov r1,#28h mov @r1,b swap a xchd a,@r1 mov p2,a ret ;================================================= ;程序名称:delay ;程序功能:延时1秒,让数据显示 ; 无返回值 ;================================================= delay: mov r5,#20 d1:mov r6,#250 d2:mov r7,#200 djnz r7,$ djnz r6,d2 djnz r5,d1 ret ;================================================= end |