Red de conocimiento del abogados - Preguntas y respuestas jurídicas - ¿Cómo conecta el chip de reloj DS1302 los registros del 1302 al microcontrolador? ¿Cómo transferir el contenido del registro en 1302 al chip único?

¿Cómo conecta el chip de reloj DS1302 los registros del 1302 al microcontrolador? ¿Cómo transferir el contenido del registro en 1302 al chip único?

Depurarlo usted mismo

#include?

#define?DS1302_DIR?P1DIR

#define?DS1302_INP1IN

#define?DS1302_OUT?P1OUT

#define?DS1302_RST?BIT1

#define?DS1302_SCLK?BIT3

#define?DS1302_SDI? BIT2?//Definir el puerto de MSP320

#define?DS1302_RST_LO?DS1302_OUT?&=?~DS1302_RST

#define?DS1302_RST_HI?DS1302_OUT?|=?DS1302_RST

#define?DS1302_SCLK_LO?DS1302_OUT?&=?~DS1302_SCLK

#define?DS1302_SCLK_HI?DS1302_OUT?|=?DS1302_SCLK

#define?DS1302_SDI_LO?DS1302_OUT?&=? ~ DS1302_SDI

#define?DS1302_SDI_HI?DS1302_OUT?|=?DS1302_SDI

void?DS1302_Delay(unsigned?int?dtime);

void?DS1302_Reset(void ) ;

void?DS1302_WriteOneByte(unsigned?char?w_dat);

void?DS1302_WriteData(unsigned?char?addr,unsigned?char?w_dat);

void?DS1302_SettingData(void);

void?DS1302_GetData(unsigned?char?*str);

unsigned?char?DS1302_ReadOneByte(void);

unsigned ?char?DS1302_ReadData(unsigned?char?addr);

unsigned?char?Setting_Time[7]={?//bit7?bit6?bit5?bit4?bit3?bit2?bit1?bit0 0x08, / /--------Dígito de la decena-------|-------Dígito de la unidad--------|Año (actualmente 08) 0x01,//|-- ---dígito de las unidades-----|semana (lunes actual) 0x09, //?|decenas|-------dígito de las unidades--------|mes (actualmente septiembre) 0x15,/ /?|--Dígito de las decenas---|-------Dígito de las unidades--------|Fecha (actualmente 01) 0x00,//-12H||--Dígito de las decenas- --| -------Dígito de las unidades--------|Hora (actualmente 11 en punto) 0x19,///-----Dígito de las decenas-----|----- - -Dígito de las unidades--------|Minuto (actualmente 09 minutos) 0x00//|-----Dígito de las decenas-----|-------Dígito de las unidades----- - --|Segundos (actualmente 21 segundos)

};

unsigned?char?ReadingData[7];?//Los datos leídos son los mismos que la definición y el formato de SetData<

/p>

/******************************

¿vacío?principal(vacío)

{ WDTCTL?=?WDTPW?+?WDTHOLD; DS1302_Reset(); //DS1302_SettingData(); mientras(1) { _NOP();

******************************/

//Función de retardo< / p>

void?DS1302_Delay(unsigned?int?dtime)?

{ while(dtime--);

}

//DS1302 restablecer

void?DS1302_Reset(void)?

{ DS1302_DIR?|=?(DS1302_RST?+?DS1302_SCLK); DS1302_SCLK_LO;

}

//Escribir un byte en DS1302

void?DS1302_WriteOneByte(unsigned?char?w_dat)?

{ unsigned?char temp? ; DS1302_RST_HI; DS1302_DIR?|=?DS1302_SDI; para(temp=8;temp>0;temp--)?

{ DS1302_SDI_LO; DS1302_SCLK; _hola ; DS1302_Delay(10); w_dat?>>=1; }?

}

//Leer un byte de DS1302

unsigned?DS1302_ReadOneByte( ¿vacío)?{? unsigned?char?temp,rdata;rdata?=?0x00; DS1302_RST_HI;DS1302_DIR?&=?~DS1302_SDI; //Pon el cambio al frente, de lo contrario no se puede leer el bit más alto DS1302_SCLK_HI; DS1302_Delay(10); DS1302_SCLK_LO)

rdata?|= ?BIT7; //rdata?>>=?1; } return(rdata);?

}

//Escribe la dirección a DS1302 y luego escribe Datos

void?DS1302_WriteData(unsigned?char?addr,unsigned?char?w_dat)?{ DS1302_RST_LO; DS1302_SCLK_LO; DS1302_RST_HI; DS1302_WriteOneByte(addr);?//Escribir dirección DS1302_WriteOneByte(w_dat);?/ /Escribir datos DS130 2_SCLK

_HI; DS1302_RST_LO;

}?

//Después de escribir la dirección en DS1302, lea los datos de DS1302

unsigned?char?DS1302_ReadData(unsigned? char ?addr)?{ unsigned?char?r_dat; DS1302_RST_LO; DS1302_SCLK_LO; DS1302_RST_HI; DS1302_WriteOneByte(addr);?//Escribir dirección r_dat?=?DS1302_ReadOneByte();?//Leer datos DS1302_SCLK_LO; _LO; retorno(r_dat);

}

//Establezca la hora de DS1302 de acuerdo con la configuración deSettingData

void?DS1302_SettingData(void)?{ unsigned?char?temp; ? char?addr?=?0x8C; DS1302_WriteData(0x8E,0x00);?//Comando de control de escritura, deshabilitar la protección contra escritura para(temp=0;temp<7;temp++)?{ DS1302_WriteData(addr,Setting_Time[temp]); addr?-=?2; } DS1302_WriteData(0x8E,0x80);?//Escribir comando de control, habilitar protección contra escritura

}

//Leer el tiempo DS1302 en ReadingData

void?DS1302_GetData(unsigned?char?*str)?{ unsigned?char?temp; unsigned?char?addr?=?0x8D for(temp=0;temp<7;temp++)?{ str[temp; ]?=?DS1302_ReadData(addr);//año addr?-=?2 }

}

void?main(void)

{ WDTCTL ?=?WDTPW?+?WDTHOLD; DS1302_Reset();

//?DS1302_SettingData(); mientras(1) { DS1302_GetData(ReadingData());

}