Moderadores: andre_luis, 51, guest2003, Renie
neto_e_khelen escreveu:Aprendi a usar a função: bit_set(saidas,0);
Só que ele seta o bit da saida que eu quero mais logo já volta a 0...COmo setar e continuar assim??
//variavel global
int32 espelhoReles; //Tens que ver o tipo conforme o teu compilador
//Função para escrever na variavel espelho
// (Esse código não tem pretende ser bonito)
//
unsigned char setRele(unsigned char rele,unsigned char value){
espelhoReles&= ~rele;
espelhoReles|= value<<rele;
}
// Função de refresh dos 74hc595 que
// pode ser chamada a cada vez que o valor for alterado
// ou por pooling
void atualizaRegs(void){
for(unsigned int i=0;i<4;i++)
write_74hc595( (unsigned char*)((unsigned char*)& espelhoReles)[i]);
}
#include <16F877.h>
#include <74595.c>
#include <74165.c>
//#device adc=8
#FUSES NOWDT //No Watch Dog Timer
#FUSES RC //Resistor/Capacitor Osc with CLKOUT
#FUSES NOPUT //No Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES BROWNOUT //Reset when brownout detected
#FUSES LVP //Low Voltage Programming on B3(PIC16) or B5(PIC18)
#FUSES NOCPD //No EE protection
#FUSES NOWRT //Program memory not write protected
#FUSES NODEBUG //No Debug mode for ICD
#use delay(clock=20000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
int32 saidas=0b11111111111111111111111111111111;
int32 saida_atual=0b00000000000000000000000000000000;
comodo1_lig();comodo2_lig();comodo3_lig();comodo4_lig();comodo5_lig();comodo6_lig();comodo7_lig();comodo8_lig();comodo9_lig();comodo10_lig();
comodo1_des();comodo2_des();comodo3_des();comodo4_des();comodo5_des();comodo6_des();comodo7_des();comodo8_des();comodo9_des();comodo10_des();
char x;
short vlr_b0_ant = 1, vlr_b1_ant = 1, vlr_b2_ant = 1, vlr_b3_ant = 1, vlr_b4_ant = 1, vlr_b5_ant = 1, vlr_b6_ant = 1, vlr_b7_ant = 1, vlr_c0_ant = 1, vlr_c1_ant = 1;
void main()
{
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_psp(PSP_DISABLED);
setup_spi(SPI_SS_DISABLED);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
while(1)
{
if (kbhit()) // se houver caractere no buffer de entrada da serial ...
{
x = getchar(); // busca caractere da serial
switch(x) // escolhe x
{
case 'a' :
{
comodo1_lig();
break;
}
case 'b' :
{
comodo1_des();
break;
}
case 'c' :
{
comodo2_lig();
break;
}
case 'd' :
{
comodo2_des();
break;
}
}
}
}
comodo1_lig()
{
putc('a');
bit_set(saidas,0);
write_expanded_outputs(&saidas);
delay_ms(50);
output_high(PIN_B6);
delay_ms(50);
output_low(PIN_B6);
saidas=saidas;
}
comodo1_des()
{
putc('b');
bit_clear(saidas,0);
write_expanded_outputs(&saidas);
delay_ms(50);
output_high(PIN_B6);
delay_ms(50);
output_low(PIN_B6);
saidas=saidas;
}
comodo2_lig()
{
putc('c');
bit_set(saidas,1);
write_expanded_outputs(&saidas);
delay_ms(50);
output_high(PIN_B6);
delay_ms(50);
output_low(PIN_B6);
saidas=saidas;
}
comodo2_des()
{
putc('d');
bit_clear(saidas,1);
write_expanded_outputs(&saidas);
delay_ms(50);
output_high(PIN_B6);
delay_ms(50);
output_low(PIN_B6);
saidas=saidas;
}
Usuários navegando neste fórum: Google [Bot] e 1 visitante