Autor Tema: caminata de led del puerto b pic 16f84  (Leído 2634 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado raptor200

  • PIC10
  • *
  • Mensajes: 39
caminata de led del puerto b pic 16f84
« en: 30 de Mayo de 2005, 07:08:00 »
Escrito originalmente por raptor200
Escrito originalmente por raptor200
Hola nuevamente soy yo, perdón por las molestias pero tengo un problea estoy iniciando en esto de los pics y estoy haciendo como práctica una caminata de leds conectados al puerto b la rutina la tome de internet que era el encender 4 leds del puerto b a continuación pongo la rutina para 4 led y tambien la midificación para 8 pero no trabaja bien porque cuenta sólo hasta el 5 led pero no retorna al inicio y tampoco encienden los ledsdepués del 5o. led, espero alguien me ayude:





;Este programa maneja una secuencia de 4 LED"s.

list    p=16c84
;----------------------------------------------------------------------
ptob    equ     06      ;el puerto b est  en la direcci¢n 06 de la memoria RAM

rota    equ     0a
reg1    equ     0b      ;se asignan nombres a algunos registros de prop¢sito general
reg2    equ     0c
reg3    equ     0d

valor1  equ     30      ;se asignan nombres a algunas constantes
valor2  equ     40
valor3  equ     50
;-----------------------------------------------------------------------

reset   org     0       ;el vector de reset es la direccion 00
        goto    inicio  ;se salta al inicio del programa
        org     7       ;el programa empieza e la direccion de memoria 7

inicio  movlw   00      ;se carga el registro W con 0
        tris    ptob    ;se programan los pines del puerto b como salidas

otra    movlw   01      ;se carga el registro W con el valor 01
        movwf   rota    ;se dispone el dato para la rotacion
hol     movf    rota,0  ;mueve el contenido del registro rota a W
        movwf   ptob    ;enciende el LED correspondiente

        call    retardo ;se mantiene el LED encendido por un momento

        rlf     rota    ;desplaza el contenido del registro un bit a la izquierda
        btfss   rota,4  ;probar si el quinto bit se enciende
        goto    hol     ;si no ha llegado al quinto bit enciende el LED que sigue
       
        goto    otra    ;si ya encendio el ultimo LED se inicia nuevamente la secuencia

retardo movlw   valor1  ;se carga el registro W con el numero valor1, es decir
                        ;con el numero 30 que se asigno al principio a valor1
        movwf   reg1    ;se traslada ese numero al registro reg1
tres    movlw   valor2  ;se carga W con el numero valor2 (40)
        movwf   reg2    ;se traslada ese numero al registro reg2
dos     movlw   valor3  ;se carga W con valor3
        movwf   reg3    ;se carga reg3 con 50

uno     decfsz  reg3    ;se decrementa el registro reg3 y si el valor es cero
        goto    uno     ;se salta a la siguiente instruccion, sino, se continua
                        ;decrementandolo
        decfsz  reg2    ;igual que el anterior
        goto    dos
        decfsz  reg1    ;igual al anterior
        goto    tres
        retlw   00      ;termina la subrutina retardo y vuelve al programa principal

        end
;------------------------------------------------------------------------
;       Fusibles de programacion

;       Osc             XT
;       Watchdog        OFF
;       Code protect    OFF
;       Power-Up-Timer  ON

;       Micro.          PIC16C84
;=========================================================================

esta es la modificación que le hice para los 8 leds del puerto b pero no sale

;Este programa maneja una secuencia de 4 LED"s.

list    p=16c84
;----------------------------------------------------------------------
ptob    equ     06      ;el puerto b est  en la direcci¢n 06 de la memoria RAM

rota    equ     0a
reg1    equ     0b      ;se asignan nombres a algunos registros de prop¢sito general
reg2    equ     0c
reg3    equ     0d

valor1  equ     30      ;se asignan nombres a algunas constantes
valor2  equ     40
valor3  equ     50
;-----------------------------------------------------------------------

reset   org     0       ;el vector de reset es la direccion 00
        goto    inicio  ;se salta al inicio del programa
        org     7       ;el programa empieza e la direccion de memoria 7

inicio  movlw   00      ;se carga el registro W con 0
        tris    ptob    ;se programan los pines del puerto b como salidas

otra    movlw   01      ;se carga el registro W con el valor 01
        movwf   rota    ;se dispone el dato para la rotacion
hol     movf    rota,0  ;mueve el contenido del registro rota a W
        movwf   ptob    ;enciende el LED correspondiente

        call    retardo ;se mantiene el LED encendido por un momento

        rlf     rota    ;desplaza el contenido del registro un bit a la izquierda
        btfss   rota,7  ;probar si el quinto bit se enciende
        goto    hol     ;si no ha llegado al quinto bit enciende el LED que sigue
       
        goto    otra    ;si ya encendio el ultimo LED se inicia nuevamente la secuencia

retardo movlw   valor1  ;se carga el registro W con el numero valor1, es decir
                        ;con el numero 30 que se asigno al principio a valor1
        movwf   reg1    ;se traslada ese numero al registro reg1
tres    movlw   valor2  ;se carga W con el numero valor2 (40)
        movwf   reg2    ;se traslada ese numero al registro reg2
dos     movlw   valor3  ;se carga W con valor3
        movwf   reg3    ;se carga reg3 con 50

uno     decfsz  reg3    ;se decrementa el registro reg3 y si el valor es cero
        goto    uno     ;se salta a la siguiente instruccion, sino, se continua
                        ;decrementandolo
        decfsz  reg2    ;igual que el anterior
        goto    dos
        decfsz  reg1    ;igual al anterior
        goto    tres
        retlw   00      ;termina la subrutina retardo y vuelve al programa principal

        end
;------------------------------------------------------------------------
;       Fusibles de programacion

;       Osc             XT
;       Watchdog        OFF
;       Code protect    OFF
;       Power-Up-Timer  ON

;       Micro.          PIC16C84
;=========================================================================



de antemano gracias y espero ayuda



Desconectado antoniof

  • Moderadores
  • PIC24F
  • *****
  • Mensajes: 729
RE: caminata de led del puerto b pic 16f84
« Respuesta #1 en: 30 de Mayo de 2005, 12:07:00 »
El fallo es que no colocas el puerto B como salida:

Codigo:
inicio movlw 00 ;se carga el registro W con 0
tris ptob ;se programan los pines del puerto b como salidas


Esta sintaxis está obsoleta. Mejor asi:

Codigo:
   bsf   status,5      ;Banco 1
   clrf   ptob      ;PB como salida   
   bcf   status,5      ;Banco 0   

Desconectado Micom

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 783
RE: caminata de led del puerto b pic 16f84
« Respuesta #2 en: 30 de Mayo de 2005, 23:36:00 »
Tambien hacer la rotacion con un registro y luego mandarla al PORTB no es muy bueno ya que si te fijas cuando el registro rota llega al 7 bit salta a la etiqueta otra y nunca se encendera el 7 led conectado al puerto b lo mejor es hacer la rotacion directa en el protb y borrar en cada rotacion el bit C del registyro STATUS

Codigo:
otra bsf portb,0   ;Bit 0 PORTB=1 enciende el led del bit 0
     bcf status,0  ;Bit de acarreo C=0
rota call retardo  ;LLama a la subrutina retardo
     rlf portb,1   ;Rota un bit a la izquierda el PORTB con C
     btfss portb,7 ;Si el bit 7 de POTB=1 sale
     goto rota     ;Salta a rota
     goto otra


espero que te sirva este fracmento de codigo. Hasta luego
El programador GTP USB PLUS es un super programador
GRACIAS dobles amigo SISPIC

Tan solo queda seguir sobreviviendo

Desconectado raptor200

  • PIC10
  • *
  • Mensajes: 39
RE: caminata de led del puerto b pic 16f84
« Respuesta #3 en: 31 de Mayo de 2005, 06:51:00 »
Avergonzado

gracias por la ayuda voy a provar con la información que amablemente me has proporcionado y te comento como me fue
Vacilandogracias a todos los que me han apóyado con sus comentarios y sugerencias estoy pendiente del resultado de ellas.


graciassssss


Sonrisa GiganteSonrisa GiganteSonrisa Gigante