Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?
14/10/2013 #1


Como hacer un desplazamiendo de un led en el puerto a y puerto b
Buenas , saludos desde Oaxaca
bueno estoy con una profesora viendo el programa Mikro C
soy un novato en esto.
bueno el problema es hacer un corrimiento de un led
desde el puerto a al puerto b del PIC16f84a
deberia ser asi
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0

Hasta llegar al ultimo pin del puerto B
esto es lo que tengo

void main()
{
short contador=1;
short repetir=1;
Trisa=0;
Trisb=0;
while(1)
{
for(contador=1;contador!=0;contador=contador<&l t;1)
{
Porta,Portb=contador;
Delay_ms(250);
};
};
}


Alguien me es amable de ayudar? ...
14/10/2013 #2
Moderador

Avatar de D@rkbytes

De esa forma creo que estarías mostrando por los puertos un número binario, no un desplazamiento de bits.

Podrías hacerlo de esta forma, pero el problema con el puerto A es que RA4 es Open Drain "Drenador Abierto"
Por lo tanto en ese bit al llegar el contador a 4 pasará a un estado flotante, a menos que coloques un resistor pull-up.

Código:
short i;

void main() {
     trisa = 0x00;
     trisb = 0x00;
     porta = 0x01;
     portb = 0x00;
     delay_ms(500);
     
     while(1) {
              for (i=0;i<=4;++i){
              porta = porta <<1;
              delay_ms(500);
              }
              portb = 0x01;
              delay_ms(500);

              for (i=0;i<=7;++i){
              portb = portb <<1;
              delay_ms(500);
              }
              porta = 0x01;
              delay_ms(500);
         }
     }
Saludos.
16/10/2013 #3


Muchas gracias pero tengo un incoveniente.
si es asi.
pero el problema es que al llegar al bit 4 del puerto a se apaga se esperan unos poquitos segundos y se prende el que sigue
esto no debe ser asi.
deberia ser todo corrido como en los del puerto a sin ningun desperfecto porfavor ayuda.
ya le intente mover por mi cuenta pero voy de mal en peor.
16/10/2013 #4
Moderador

Avatar de D@rkbytes

SWAT dijo: Ver Mensaje
el problema es que al llegar al bit 4 del puerto a se apaga se esperan unos poquitos segundos y se prende el que sigue.
Cierto.
Prueba de la siguiente forma y puedes utilizar el esquema adjunto.
Código:
short i;

void main() {
     trisa = 0x00;
     trisb = 0x00;
     porta = 0x01;
     portb = 0x00;
     
     while(1) {
              for (i=0;i<=4;++i){
              delay_ms(500);
              porta = porta <<1;
              }
              portb = 0x01;
              delay_ms(500);

              for (i=0;i<=7;++i){
              portb = portb <<1;
              delay_ms(500);
              }
              porta = 0x01;
         }
     }
Suerte.
Imágenes Adjuntas
Tipo de Archivo: jpg Shift Bits SCH.jpg (75,1 KB (Kilobytes), 15 visitas)
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.