void swdispd(int n, int size) { int i = 0; int d, t; BOOL first = TRUE; // sdh 24/10/2001: make sure we use the main video buffer if (n < 0) { n = -n; swputc('-'); ++i; } for (t = 10000; t > 1; n %= t, t /= 10) { d = n / t; if (d || !first) { first = FALSE; swputc(d + '0'); ++i; } } swputc(n + '0'); ++i; while (++i <= size) swputc(' '); }
void swputs(char *sp) { register char *s; for (s = sp; *s; ++s) { swputc(*s); } }
void main(){ clock_int_48MHz(); habilita_interrupcao(recep_serial); habilita_canal_AD(AN0); taxa_serial(9600); i2c_ini(); while(1){ if (flagA4){ flagA4=0; //Comandos A4 para Configurar o RTC escreve_rtc(endereco, dec_para_bcd(numquant)); //Escrever em BCD no RTC send_hex(le_rtc(hora)); swputc (':'); //Envia resultado via serial por bluetooth ou qualquer outro modem. send_hex(le_rtc(min)); swputc (':'); //Exemplo de resposta: 18:49:37 19/04/14 send_hex(le_rtc(seg)); swputc (' '); send_hex(le_rtc(dia)); swputc ('/'); send_hex(le_rtc(mes)); swputc ('/'); send_hex(le_rtc(ano)); swputc(' '); } if (flagA5){ flagA5=0; //BCD em hexadecimal representa o decimal send_hex(le_rtc(hora)); swputc (':'); send_hex(le_rtc(min)); swputc (':'); send_hex(le_rtc(seg)); swputc (' '); send_hex(le_rtc(dia)); swputc ('/'); send_hex(le_rtc(mes)); swputc ('/'); send_hex(le_rtc(ano)); swputc(' '); } resultado = le_AD10bits(0); tensao_lida16 = (resultado * 5000)/1023; //Valor até 16 bits (2 bytes) sendnum(tensao_lida16); swputc(' '); /*************************************************************************** conv_dec_2bytes(tensao_lida16); posicao=2*endereco16; //endereço é o ponteiro de 16 bits (byte 1 e byte 2) escreve_ieeprom( posicao, byte2); //Byte mais significativo do int16 escreve_ieeprom( posicao+1, byte1 ); //byte menos significativo do int16 ++endereco16; if (endereco16>=150){endereco16=0;} //Buffer de 300 bytes posicao<300 //***************************************************************************/ if(entrada_pin_e3==0){ send_hex(le_eeprom(5)); swputc(' '); /***************LEITURA DO BUFFER DA EEPROM EXTERNA I2C******************** for(i=0; i<10; ++i) { //150 Valores de 16 bits ou 300 de 8 bits. for(j=0; j<15; ++j) { valorgravado= 256*le_ieeprom((i*30)+2*j) + le_ieeprom((i*30)+2*j+1); sendnum(valorgravado); swputc(' '); } sendrw((rom char *)"\n\r"); } sendrw((rom char *)"\n\r"); //***************************************************************************/ } ++i; if(i>255) {i=0;} escreve_eeprom(5, i); inverte_saida(pin_b7); tempo_ms(1000); } }
void main() { clock_int_4MHz(); TRISB = 0b00000011; //B0 a B5 como entrada e B6-B7 como Saída //habilita_interrupcao(timer0); INTCONbits.TMR0IE = 1; T0CONbits.TMR0ON = 1; multiplica_timer16bits(0,16); //liga timer0 - 16 bits com multiplicador (prescaler) 8 tempo_timer16bits(0,62500); //Conta 16 x 62500us = 1 seg. taxa_serial(19200); //printf("Aguardando tecla de comando..."); // Exibimos a mensagem serial via bluetoth... while (1){ if(!entrada_pin_e3){Reset();}//pressionar o botão para gravação bitStd = entrada_pin_b0; //Lê o estado do pino STD e armazena em 'bitStd' if (bitStd == 1) {//Se estiver em nível alto fará as leituras //dos bits dos pinos Q3, Q2, Q1 e Q0 bit01 = entrada_pin_b1; bit02 = entrada_pin_b2; bit03 = entrada_pin_b3; bit04 = entrada_pin_b4; tecla = (bit04 * 8) + (bit03 * 4) + (bit02 * 2) + (bit01 * 1);//Conversão binária para //decimal (ver Vídeo1) sendsw((char *)Recebido); switch (tecla){ // Seleciona a tecla pressionada case 1: // Tecla 1 swputc('1'); /* COMANDO PARA RELE1 */ RELE1_STATE = !RELE1_STATE; // Guarda o estado INVERTIDO do Relé. break; case 2: // Tecla 2 swputc('2'); break; case 3: // Tecla 3 swputc('3'); break; case 4: // Tecla 4 swputc('4'); break; case 5: // Tecla 5 swputc('5'); break; case 6: // Tecla 6 swputc('6'); break; case 7: // Tecla 7 swputc('7'); break; case 8: // Tecla 8 swputc('8'); break; case 9: // Tecla 9 swputc('9'); break; case 10: // Tecla 0 swputc('0'); break; case 11: // Tecla * swputc('*'); break; case 12: // Tecla # swputc('#'); break; } saida_pino(RELE1, RELE1_STATE);//Liga ou desliga o Relé1 conforme o estado (HIGH/ LOW) // Zeram-se todas as variáveis tecla = 0; bit01 = 0; bit02 = 0; bit03 = 0; bit04 = 0; bitStd= 0; tempo_ms(500); // Aguarda 500 milissegundos - o pino Std fica ativo por volta de 30ms } } }