martes, 4 de junio de 2013

PRACTICA_2 SECUENCIAS LUMINOSAS PIC16F877A

un programa que permita por medio de 2 pulsadores conectores a la entrada del puertoA generar 4 secuencias diferentes en 8 leds, verdes conectados a travez del puertoC cada secuencia con 5 pasos distintos, 2 pulsadores adicionales modificaran la velocidad, en multiplos de 300ms, con la que se visualizara cada cambio. los multiplos son 00=1,01=3,10=5,11=10.


void retardo(int i);
int  x,i;
void main()
{
ADCON1=7;
TRISA=15;  //ENTRADAS
TRISC=0;   //SALIDA
PORTC=0;

        while(1)
        {
        x=PORTA&0b0011; //filtro para secuencias
        i=PORTA&0b1100; //filtro para velocidad
     
        switch(x)          //las secuencias pueden modificarse dependiendo del valor
        {                     // asignado
                 case 0:
                 PORTC=1;
                 retardo(i);
                 PORTC=18;
                 retardo(i);
                 PORTC=8;
                 retardo(i);
                 PORTC=50;
                 retardo(i);
                 PORTC=10;
                 retardo(i);
                 break;
               
                 case 1:
                 PORTC=255;
                 retardo(i);
                 PORTC=200;
                 retardo(i);
                 PORTC=100;
                 retardo(i);
                 PORTC=98;
                 retardo(i);
                 PORTC=5;
                 retardo(i);
                 break;

                 case 2:
                 PORTC=10;
                 retardo(i);
                 PORTC=38;
                 retardo(i);
                 PORTC=88;
                 retardo(i);
                 PORTC=155;
                 retardo(i);
                 PORTC=215;
                 retardo(i);
                 break;
               
                 case 3:
                 PORTC=4;
                 retardo(i);
                 PORTC=15;
                 retardo(i);
                 PORTC=107;
                 retardo(i);
                 PORTC=0;
                 retardo(i);
                 PORTC=245;
                 retardo(i);
                 break;
        }
        }
}
void retardo(int i)
{
     if(i==0)
     {
      Delay_ms(300);
     }
     if(i==4)       //filtro para 01
     {
     Delay_ms(900);
     }
     if(i==8)      //filtro para 10
     {
     Delay_ms(1500);
     }
     if(i==12)      //filtro para 11
     {
     Delay_ms(3000);
     }

}

archivos de simulacion y compilacion.
http://www.mediafire.com/?9kn30vekc3id3md

No hay comentarios.:

Publicar un comentario