Como controlar el delay_ms

Hola, quisiera saber cómo controlar la velocidad ascendente y descendentemente de las secuencias. Con dos pulsos en el puerto A3 y A4 respectivamente.

Eso es una, además cómo declaro los puertos A5 para reset y A6 y A7 para el oscilador, por que solo declaré ::

set_tris_b(0x00);
set_tris_a(0xFF); //Todos los puertos A como entradas

Anteriormente, utilicé el pic16F84 hay no hubo problemas en declarar los puertos, Pero no habia mucho espacio para lo que requería, por tanto, ahora uso el 16F88, y pues solo cambié esto:

#include <16f88.h>

y lo demás lo dejé como está. La simulación en Proteus ISIS está bien, pero como ven la declaracion del puerto A esta mal a mi entender. por que solo estoy utilizando como entradas:

A0, A1, A2 y bueno Tambien A5 como reset.

Bueno, esas son mis dos dudas, gracias por tomarse la molestia de leer.

PD: si existe algun tema en el foro, linkeemenla, porque eh buscado y no eh encontrado algún tema parecido a lo que busco.

Codigo fuente la modifiqué para una secuencia:

Código:
#include <16f88.h>           
#fuses XT,NOWDT,NOPROTECT,PUT  
#use delay (clock=20000000)     
#ZERO_RAM 
void main(void)
{

char i; 
char tabla3s[10]={0x81,0x42,0x24,0x18,0x24,0x42,0x81};

   set_tris_b(0x00);                   
   set_tris_a(0xFF);                   
   disable_interrupts(GLOBAL);     
   ABC:; output_b(0x00);

do{
  if(input(PIN_A1)&&(!input(PIN_A0))&&(!input(PIN_A2))) {              
       for (i=0;i<=6;i++){        
        output_b(tabla3s[i]); 
        delay_ms(100);}

    }

else 
goto ABC;                   
     }while(TRUE);                     
}

rider.jpg
 
Última edición por un moderador:
Hola:
Sucede que el 16F88 tiene configurado por defecto al PORTA como pines análogos, por eso es necesario hacerlos digitales.

setup_comparator(NC_NC_NC_NC);
SETUP_ADC_PORTS(NO_ANALOGS);

Si deseas, coloca esto en la parte de configuración.

#use fast_io(a)

PD: Para ahorrarte estos detalles utiliza el Wizard del CCS.
Saludos
 
Atrás
Arriba