Menú
Foros
Nuevos mensajes
Buscar en foros
Novedades
Nuevos mensajes
Nuevos recursos
Última actividad
Recursos
Últimas revisiones
Buscar recursos
Acceder
Registrarse
Novedades
Buscar
Buscar
Buscar sólo en títulos
De:
Nuevos mensajes
Buscar en foros
Menú
Acceder
Registrarse
Install the app
Instalar
Foros
Diseño digital
Microcontroladores y sistemas embebidos
Problema con un código para 16F84A
JavaScript está desactivado. Para una mejor experiencia, por favor, activa JavaScript en el navegador antes de continuar.
Estás usando un navegador obsoleto. No se pueden mostrar este u otros sitios web correctamente.
Se debe actualizar o usar un
navegador alternativo
.
Responder al tema
Mensaje
[QUOTE="Miembro eliminado 356005, post: 937042"] El problema está en la línea [B]set_tris_a(011111111);[/B] Tal como tienes escrito el argumento, es un número en base octal (empieza por '0'). Ese número, en binario sería así (sólo el byte bajo): [B]01001001[/B] Y por eso solo activas un par de botones (el A0, el A3 y el A6), de lo que sólo tienes en cuenta el A3 en tu programa (el único que te funcionaba). La solución es escribir correctamente el número en notación binaria: [B]set_tris_a(0b11111111);[/B] Veo, además, que le faltan llaves al while()... El programa quedaría así: [php]#use standard_io(b) void main() { setup_adc_ports(NO_ANALOGS); setup_adc(ADC_CLOCK_DIV_2); 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); setup_comparator(NC_NC_NC_NC); setup_vref(FALSE); int i; set_tris_a(0b11111111); while(true) { if(input(pin_a1) == 1) { # A1 1 for(i = 0; i < 10; i++) { output_high(pin_b0); delay_ms(100); output_high(pin_b1); delay_ms(100); output_high(pin_b2); delay_ms(100); output_high(pin_b3); delay_ms(100); output_low(pin_b3); delay_ms(100); output_low(pin_b2); delay_ms(100); output_low(pin_b1); delay_ms(100); output_low(pin_b0); delay_ms(100); output_high(pin_b0); delay_ms(100); output_high(pin_b1); delay_ms(100); output_high(pin_b2); delay_ms(100); output_low(pin_b2); delay_ms(100); output_low(pin_b1); delay_ms(100); output_low(pin_b0); delay_ms(100); output_high(pin_b0); delay_ms(100); output_low(pin_b0); delay_ms(100); output_high(pin_b0); delay_ms(100); output_high(pin_b1); delay_ms(100); output_high(pin_b2); delay_ms(100); output_high(pin_b3); delay_ms(100); output_low(pin_b3); delay_ms(100); output_low(pin_b2); delay_ms(100); output_low(pin_b1); delay_ms(100); output_low(pin_b0); delay_ms(100); } } if(input(pin_a2) == 0) { # A2 0 output_low(pin_b4); } if(input(pin_a2) == 1) { # A2 1 output_high(pin_b4); } if(input(pin_a3) == 0) { # A3 0 output_low(pin_b5); } if(input(pin_a3) == 1) { # A3 1 output_high(pin_b5); } if((input(pin_a1)==1) && (input(pin_a2)==1)) { # A1 y A2 1 output_high(pin_b0); output_high(pin_b4); delay_ms(15000); if((input(pin_a1)==0) && (input(pin_a2)==0)) { # A1 y A2 0 output_low(pin_b0); output_low(pin_b1); delay_ms(500); } } if((input(pin_a3)==1) && (input(pin_a4)==1)) { # A3 y A4 1 output_high(pin_b0); output_high(pin_b1); output_high(pin_b5); delay_ms(20000); if((input(pin_a3)==0) && (input(pin_a4)==0)) { # A3 y A4 0 output_low(pin_b0); output_low(pin_b1); output_low(pin_b5); } } if((input(pin_a2)==1) && (input(pin_a4)==1)) { # A2 y A4 1 output_high(pin_b4); delay_ms(5000); output_low(pin_b4); delay_ms(3000); output_high(pin_b5); delay_ms(4000); if((input(pin_a3)==0) && (input(pin_a4)==0)) { # A3 y A4 0 output_low(pin_b4); output_low(pin_b5); } } } } [/php] [/QUOTE]
Verificación
Responder
Foros
Diseño digital
Microcontroladores y sistemas embebidos
Problema con un código para 16F84A
Arriba