Пример #1
0
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(' ');
}
Пример #2
0
void swputs(char *sp)
{
	register char *s;

	for (s = sp; *s; ++s) {
		swputc(*s);
	}
}
Пример #3
0
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
  }
} 


}