void teste_macros(){
	int i, portC=0, size=8*sizeof(int);

	printf(":: TESTE DAS MACROS ::\n");
	printf("\nTestando a macro set_bit(var,bit): \n");
	getchar();
	for(i = 0; i < 2*size ; i++){
		mostra_bin(portC);
		printf("\t -> \t");
		mostra_bin(set_bit(portC,i));
		printf("\n");
	}

	printf("\nTestando a macro clear_bit(var,bit): \n");
	getchar();
	for(i = 0; i < 2*size; i++){
		mostra_bin(portC);
		printf("\t -> \t");
		mostra_bin(clear_bit(portC,i));
		printf("\n");
	}

	printf("\nTestando a macro cpl_bit(var,bit): \n");
	getchar();
	for(i = 0; i < 2*size; i++){
		mostra_bin(1<<i);
	printf("\t -> \t");
		mostra_bin(cpl_bit(portC,i));
		printf("\n");
	}

}
void thr_run(void * args) {
    int * a = (int*)args;
    //se quiser usar o valor de a tem que deferenciar ex. *a
    while (1) {
#ifdef debug
        printf("Thread %d: running...\n", getid());
        printf("Thread arg= %d\n", *a);
        printf("Iteration number= %d\n", i);
#endif
        PORTB = 127 & *a;
        _delay_ms(250);
        cpl_bit(PORTB, PB4);
        _delay_ms(250);
        /*free cpu to run another thread with yield method()*/
        yield();
    }
    finish(*a);
}