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