📄 ds1302.plm
字号:
ds_head:procedure(addt);
DECLARE (ii,addt) BYTE;
DO ii=0 TO 7;
IF (addt AND 1)=1 THEN SI=1;
ELSE SI=0;
SCK=1;
addt=SHR(addt,1);
SCK=0;
END;
END ds_HEAD;
ds_read:PROCEDURE(addt) BYTE;
DECLARE (addt,ii) byte;
SCK=0;CS=0;CS=1;
addt=addt+81h;
CALL ds_head(addt);
addt=0;
DO ii=0 TO 7;
addt=shr(addt,1);
IF SI THEN addt=addt OR 80h;
SCK=1;SCK=0;
END;
RETURN(addt);
CS=0;
END ds_read;
ds_wrt:PROCEDURE(addt,dataz) ;
DECLARE (addt,dataz) byte;
SCK=0;CS=0;CS=1;
CALL ds_head(10001110b);
CALL ds_head(0);
CS=0;CS=1;
addt=addt+10000000b;
CALL ds_head(addt);
CALL ds_head(dataz);
CS=0;CS=1;
CALL ds_head(10001110b);
CALL ds_head(80h);
CS=0;
END ds_wrt;
ds_con:PROCEDURE;
IF ds_key_b
THEN DO;
CALL ds_wrt(4,ds_hr);
CALL ds_wrt(2,ds_min);
ds_key_b=0;
END;
ELSE DO;ds_hr=ds_read(4);ds_min=ds_read(2);END;
END ds_con;
ds_wy_con:procedure;
declare (i,j) byte;
declare s bit;
call ds_wrt(70h,0aah);
j=ds_read(40H);
IF J<59 THEN call ds_wrt(40h,J+1);
ELSE DO;
call ds_wrt(40h,0);
j=ds_read(42H);
IF J<59 THEN call ds_wrt(42h,J+1);
ELSE DO;
s=1; call ds_wrt(42h,0);
I=44h;
DO while (s and i<4eh);
j=ds_read(I);
IF J>=9 THEN DO;s=1; call ds_wrt(i,0);I=I+2;END;
ELSE DO;s=0; call ds_wrt(i,j+1);END;
END;
END;
END;
call ds_wrt(70h,055h);
call ds_wrt(72h,0aah);
i=40h;
DO WHILE i<4eh;
j=ds_read(i);call ds_wrt(i+10h,J);
i=i+2;
END;
call ds_wrt(72h,055h);
END ds_wy_con;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -