下午去试了但是还是不行,我用示波器测试但是没有检测到晶振的波形,但是在x1脚(第三管褪)检测到2.27v的电压,芯片第2,3管褪之间接32768hz的无源晶振;并接6pf的电容,我把程贴上,各位大虾们帮帮忙,看看有什么问题~! ;================================================ ;程序名称: ds1302 ;程序功能: 读出芯片的数据 ;数据存储: 21h 年 变量: year ; 22h 星期 week ; 23h 月 month ; 24h 日 day ; 25h 时 hour ; 26h 分 min ; 27h 秒 second ;================================================ year equ 21h week equ 22h month equ 23h day equ 24h hour equ 25h min equ 26h second equ 27h sclk equ p1.0 io equ p1.1 rst equ p1.2 ;================================================ org 0 jmp start org 30h start: mov p1,#0ffh clr sclk clr rst clr io setb rst;初始化结束 sat: mov r1,#81h call wr_ds mov r1,#01h;启动芯片 call wr_ds call delay call delay mov r1,#10001101b;年的起始地址 mov r6,#7 mov r0,#21h lp: call wr_ds setb rst call rd_ds mov @r0,a inc r0 dec r1 dec r1 djnz r6,lp nop nop nop mov r0,#21h mov r2,#7 show_again: call show call delay mov p2,#0ffh call delay inc r0 djnz r2,show_again jmp sat ;================================================ ;程序名: wd_ds ;程序功能: 给芯片送一个数据 ; r1为入口参数 ; 没有返回值 ;================================================ wr_ds: mov r7,#8 mov a,r1 setb rst clr io clr c lp1: clr sclk rrc a mov io,c nop nop nop setb sclk nop nop nop djnz r7,lp1 clr io ret ;================================================ ;程序名称: rd_ds ;程序功能: 读出芯片的一个数据 ; 读出的数据存在 acc中 ;================================================ rd_ds: mov r7,#8 clr c clr io clr a lp2: clr sclk nop nop nop mov c,io rrc a setb sclk nop nop nop djnz r7,lp2 clr rst 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
|