No funciona una rutina con salida en A4 en proteus, si funciona si selecciono por ejemplo A0 pero no puedo entender donde esta el error, debe ser de configuracion. Os pego el codigo a ver donde falla
//code
#include <16F876.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP,PUT,NODEBUG,BROWNOUT,NOCPD,NOWRT
#use delay(clock=1000000)
int tiempo =20;
// rutina de interrupcion si se gira el encoder
#INT_EXT
void giro (void){
disable_interrupts(global);
/////// EJE X //////////////
If(input(PIN_C1)) // esta seleccionado X en el selector
{
output_high(PIN_A3); // desbloquea X
// depende del sentido de giro del encoder fija el bit de direccion de X
if(input(PIN_B1))
output_high(PIN_A2); // direccion a un lado
else
output_low(PIN_A2); // direccion a un lado
// hace la salida del pulsos de X
output_high(PIN_A1);
delay_ms(tiempo);
output_low(PIN_A1);
delay_ms(tiempo);
output_low(PIN_A3); // bloquea X
}
/////// EJE Y //////////////
If(input(PIN_C2)) // esta seleccionado Y en el selector
{
output_high(PIN_C4); // desbloquea Y
// depende del sentido de giro del encoder fija el bit de direccion de Y
if(input(PIN_B1))
output_high(PIN_A5); // direccion a un lado
else
output_low(PIN_A5); // direccion a un lado
// hace la salida del pulsos de X
output_high(PIN_A4);
delay_ms(tiempo);
output_low(PIN_A4);
delay_ms(tiempo);
output_low(PIN_C4); // bloquea Y
}
/////// EJE Z //////////////
If(input(PIN_C3)) // esta seleccionado Z en el selector
{
output_high(PIN_C7); // desbloquea Z
// depende del sentido de giro del encoder fija el bit de direccion de Z
if(input(PIN_B1))
output_high(PIN_C6); // direccion a un lado
else
output_low(PIN_C6); // direccion a un lado
// hace la salida del pulsos de Z
output_high(PIN_C5);
delay_ms(tiempo);
output_low(PIN_C5);
delay_ms(tiempo);
output_low(PIN_C7); // bloquea X
}
enable_interrupts(global);
}
void main(){
enable_interrupts(INT_EXT);
enable_interrupts(global);
while(TRUE){
}
}
encode//