no Proteus esta no formato ".ima". Baixe o programa UltraISO, ou outro semelhante, para poder abrir este arquivo.Estou incluindo este arquivo no download abaixo.DOWNLOAD:Projeto DataLogger: datalogger.rar;Caso voce queira montar esse projeto, nao se esqueca que o cartao SD e alimentado com 3.3V, e tambem os pinos CLK, DI e CS, deve receber tensoes de 3.3V.CoDIGO-FONTE:MikroC PRO PIC v6.0sbit Mmc_Chip_Select at LATC0_bit;sbit Mmc_Chip_Select_Direction at TRISC0_bit;sbit Soft_I2C_Scl at RC1_bit;sbit Soft_I2C_Sda at RC2_bit;sbit Soft_I2C_Scl_Direction at TRISC1_bit;sbit Soft_I2C_Sda_Direction at TRISC2_bit;char temp[16] = "00:00:00;000,0\r";short segundos, minutos, horas, dia, date, mes, ano;unsigned long adc;char filename[11] = "DataXX.csv";//o array nao pode ser maior que 14//define os segundos, minutos.. para o ds1307void ds1307_write(){Soft_i2c_stop();Soft_i2c_start();Soft_i2c_write(0xD0);Soft_i2c_write(0x00);Soft_i2c_write(Dec2Bcd(0));//segundosSoft_i2c_write(Dec2Bcd(0));//minutosSoft_i2c_write(Dec2Bcd(12));//horasSoft_i2c_write(Dec2Bcd(1));//dia da semanaSoft_i2c_write(Dec2Bcd(12));//dataSoft_i2c_write(Dec2Bcd(3));//mesSoft_i2c_write(Dec2Bcd(13));//anoSoft_i2c_stop();}//faz a leitura do ds1307void ds1307_read(){Soft_i2c_start();Soft_i2c_write(0xD0);Soft_i2c_write(0x00);Soft_i2c_Start();Soft_i2c_write(0xD1);segundos = Bcd2Dec(Soft_i2c_read(1));minutos = Bcd2Dec(Soft_i2c_read(1));horas = Bcd2Dec(Soft_i2c_read(1));dia = Bcd2Dec(Soft_i2c_read(1));date = Bcd2Dec(Soft_i2c_read(1));mes = Bcd2Dec(Soft_i2c_read(1));ano = Bcd2Dec(Soft_i2c_read(0));Soft_i2c_stop();}//Esta funcao cria um novo arquivovoid Create_New_File() { //cria o arquivo(caso nao exista) com atributo de arquivo e abre-o Mmc_Fat_Assign(&filename, 0xA0); //define a data de criacao do arquivo Mmc_Fat_Set_File_Date(ano+2000, mes, date, horas, minutos, segundos); Mmc_Fat_Append();//prepara o arquivo para gravacao Mmc_Fat_Write(temp, 15);//escreve no arquivo}//Esta funcao deleta o arquivovoid Delete_File() { Mmc_Fat_Assign(&filename, 0); Mmc_Fat_Delete();}short Test_File_Exist() { //como nao definiu nenhum atributo de criacao, caso o arquivo exista //retorna 1, caso contrario retorna 0 return Mmc_Fat_Assign("DATA00.csv", 0);}//abre o arquivo(caso nao exista, nao ira ler) e inicia a leitura.void Open_File_Read() {unsigned long i, size;char caracter; Mmc_Fat_Assign(&filename, 0); Mmc_Fat_Reset(&size);//recupera o numero de caracteres do arquivo for (i = 1; i <= size; i++) { Mmc_Fat_Read(&caracter);// le um caracter do arquivo UART1_Write(caracter); }}void main(){short i;ADC_Init();//inicia o modulo ADCADCON1 = 0B00001110; //define o canal 0 como analogico, o restante como digital.Soft_i2c_init();//inicia a comunicacao software i2c//inicia a comunicacao SPISPI1_Init_Advanced(_SPI_MASTER_OSC_DIV4, _SPI_DATA_SAMPLE_MIDDLE, _SPI_CLK_IDLE_LOW, _SPI_LOW_2_HIGH);//inicia a comunicacao com cartao SDMMc_Fat_Init();//verifica-se se o arquivo ja existe. caso exista cria um novo arquivo com um nome diferentefor(i=0;i<100;i++){ filename[4] = (i/10) + 48; filename[5] = (i%10) + 48; if(Mmc_Fat_Assign(&filename, 0)==0) { break; }}while(1){ adc = ADC_Read(0); adc = adc * 1000/204; temp[9] = (adc/1000) + 48; temp[10] = ((adc%1000)/100) + 48; temp[11] = (((adc%1000)%100)/10) + 48; temp[13] = (((adc%1000)%100)%10) + 48; ds1307_read(); temp[0] = horas/10 + 48; temp[1] = horas%10 + 48; temp[3] = minutos/10 + 48; temp[4] = minutos%10 + 48; temp[6] = segundos/10 + 48; temp[7] = segundos%10 + 48; Create_New_File(); delay_ms(500);}}