Autor Tema: Sigo sin resolver nada :,,,( (PIC16F877A)  (Leído 3152 veces)

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

Desconectado Oliver Karin

  • PIC10
  • *
  • Mensajes: 6
Sigo sin resolver nada :,,,( (PIC16F877A)
« en: 10 de Abril de 2018, 01:33:30 »
De nuevo aqui pidiendo ayuda, bueno amigos ya se un poquito mas y no encuentro el error, sigue siendo mi primer programa.
Lo que deberia haecr el programa es que por medio de un dip switch yo pueda elegir entre dos secuencias de leds distintas que muestro en el puerto B, osea que si el dip esta en "0" muestre una secuencia y el dip esta en "1" muestre otra distinta(con un retardo de 1 seg que cree para cada cambio de estado en los leds durante la secuencias).
No me sale ningun error e Mlab y ya lo cargue en ISIS pero no hace nada, como si no cargara nada, sale esto en los mensajes del programa...
 Ya lo programe en fisico y tampoco hace nada, no se que es estoy desesperado.
El pic si sirve porque lo puedo programar y leer y funciona correctamente.
Les dejo mi codigo y mi conexion en fisico que esto haciendo, solo le falta los leds y el switch que en fisico si los tengo conectados.

#INCLUDE<p16f877a.INC>
LIST p=16f877a
__CONFIG _XT_OSC & _WDT_OFF & _PWRTE_OFF & _LVP_OFF & _DEBUG_OFF & _CP_OFF
TIEMPO1 EQU 0X21
TIEMPO2 EQU 0X22
TIEMPO3 EQU 0X23
#DEFINE leds PORTB
#DEFINE switch PORTC
ORG 0x00   
GOTO INICIO

INICIO
BSF STATUS,RP0
BCF STATUS,RP1
BSF TRISC,0
CLRF TRISB

MOVLW D'6'
MOVWF ADCON1

BCF STATUS,RP0
BCF STATUS,RP1
CLRF leds

REGRESO1
BTFSS switch,0
GOTO corrida1
GOTO corrida2

corrida1
MOVLW B'10000000'
MOVFW leds
CALL RETARDO
MOVLW B'11100000'
MOVFW leds
CALL RETARDO
MOVLW B'11111000'
MOVFW leds
CALL RETARDO
MOVLW B'11111110'
MOVFW leds
CALL RETARDO
MOVLW B'00011000'
MOVFW leds
CALL RETARDO
GOTO REGRESO1

corrida2
MOVLW B'10000001'
MOVFW leds
CALL RETARDO
MOVLW B'11000011'
MOVFW leds
CALL RETARDO
MOVLW B'11100111'
MOVFW leds
CALL RETARDO
MOVLW B'111111111'
MOVFW leds
CALL RETARDO
MOVLW B'00011000'
MOVFW leds
CALL RETARDO
GOTO REGRESO1

RETARDO:
MOVLW D'10'
MOVWF TIEMPO1
TRES
MOVLW D'80'
MOVWF TIEMPO2
DOS
MOVLW D'250'
MOVWF TIEMPO3
UNO
NOP
NOP
DECFSZ TIEMPO3,1
GOTO UNO
DECFSZ TIEMPO2,1
GOTO DOS
DECFSZ TIEMPO1,1
GOTO TRES
RETURN

END

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Sigo sin resolver nada :,,,( (PIC16F877A)
« Respuesta #1 en: 10 de Abril de 2018, 09:29:23 »
El programa tiene algunos errores mas:

Usas MOVFW en ves de MOVWF. Entende la nomeclatura, MOV (muevo) F a W, o MOV (muevo) W a F

"MOVFW registro"  no existe si observas la tabla de instrucciones del PIC, en realidad esta es una pseudo-instruccion que la da el compilador. Cuando el compilador la ve la transforma en:

MOVF    aca_registro, W

--------------------

Hay uno de los MOVLW que tiene mas de 8 bits, posee nueve, es el que tiene todos los 1 de corrida2, el compilador te da un Warning cuando intentas compilarlo, le borras un 1 y listo, adios warning.

--------------------

La demora es ocupar al micro cierta cantidad de ciclos. El problema es que si lo hiciste para un cristal de 4Mhz asumiste que el ciclo duraba 1us, y se genero el delay ocupando 1 millon de ciclos, el problema es que si ahora le pones un cristal de 12Mhz ( la frecuencia es 3 veces mayor), el ciclo de instruccion ahora es 3 veces menor, entonces necesitarias minimo 3 millones de ciclos para llegar al segundo, con 12Mhz solo tenes una tercera parte de la misma asi que la demora es de 334ms

------------------------

PD: Podes simularlo en el MPLAB paso por paso y ver que los registros cambien su valor, no hay necesidad de un "Proteus" para hacerlo. Ahi supe el tiempo que tarda la demora, y el problema.
« Última modificación: 10 de Abril de 2018, 09:56:49 por KILLERJC »

Desconectado Oliver Karin

  • PIC10
  • *
  • Mensajes: 6
Re:Sigo sin resolver nada :,,,( (PIC16F877A)
« Respuesta #2 en: 13 de Abril de 2018, 02:34:06 »
Hermano muchas gracias, gracias a ti ya hice varios programas, estoy muy contento, gacias por tomarte el tiempo de responder.

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4154
Re:Sigo sin resolver nada :,,,( (PIC16F877A)
« Respuesta #3 en: 13 de Abril de 2018, 05:54:44 »
Sería bueno, entonces, que editaras el primer post cambiando el titulo y añadiéndole algo como !Solucionado!
Todos los días se aprende algo nuevo.

Desconectado Bob_azul

  • PIC10
  • *
  • Mensajes: 2
Re:Sigo sin resolver nada :,,,( (PIC16F877A)
« Respuesta #4 en: 17 de Abril de 2019, 13:33:27 »
Hola Oliver!

Me parece muy interesante tu proyecto, yo estoy tratando de fabricar un panel de alarmas, pero se me hace confuso un poco el programar, también estoy comenzando con esto de la programación PIC. Hice funcionar tu código con las mejoras que t indicaron mas abajo, pero me surgen los siguientes problemas. El led en RB0 no se me enciende, es así el ciclo que esta reflejado?.

Por otro lado la conexión directa a la tierra en RC0 es donde iría el DIP SWITCH?

Espero no tengas molestias y pueda ver el funcionamiento del código bien

saludos