基于单片机的课程设计
_nop_();
inbyte=inbyte>>1; } }
/********************************************************/
/********************************************************/
uchar read_byte() //sclk的下跳沿读数据 {
uchar i,temp=0;
io=1; //设置为输入口
for(i=0;i<7;i++) { sclk=0; if(io==1) temp=temp|0x80; else
temp=temp&0x7f;
sclk=1; //产生下跳沿
temp=temp>>1; }
return (temp); }
/********************************************************/
// 往ds1302的某个地址写入数据 /********************************************************/
void write_ds1302(uchar cmd,uchar indata) {
sclk=0;
reset=1;
write_byte(cmd); write_byte(indata); sclk=0; reset=0; }
/********************************************************/ // 读ds1302某地址的的数据 /********************************************************/ uchar read_ds1302(uchar addr) {
uchar backdata; sclk=0; reset=1;
write_byte(addr); //先写地址 backdata=read_byte(); //然后读数据 sclk=0; reset=0;
return (backdata); }
/*********************************************************/ // 设置初始时间
/*********************************************************/
void set_ds1302(uchar addr,uchar *p,uchar n) //写入n个数据 {
write_ds1302(0x8e,0x00); //写控制字,允许写操作 for(;n>0;n--)