TODOPIC
Microcontroladores PIC => Almacén del Assembler => Mensaje iniciado por: Angelectronic en 14 de Octubre de 2009, 16:30:21
-
Hola a todo soi nuevo y me gustaria que me
ayudaran con sierto problemita que tengo al crear
un programa para un 16f84A
bueno el programa consiste en lo siguiente
se desea que mediante un 7447 conectado
a un display 7 segmentos anodo comun
mi programa .asm debe realizar lo siguiente:
cuente de modo regresivo desde 5 hasta a 0
pero cuando llegue a 0 debe volver nuevamente
a 5 y asi sucesivamente con retardo de 1 o 2 segundos
me gustaria que me ayudaran ya que soi novato
en esto de los pic.
buno aqui les dejo lo que a construido hasta el momento
para que puedan ver si tiene algun error o mejorarlo
---------------------------------------------------------------------------
include p16f84a.INC
__CONFIG 0X3FF9
PDel0 EQU 0X0C
PDel1 EQU 0X0D
ORG 000
CONFIGURACION
BSF STATUS,5
CLRF TRISB
BCF STATUS,5
XX MOVLW 0X05
MOVWF PORTB
CALL DEMORA
YY DECFSZ PORTB
CALL DEMORA
BTFSC PORTB,YY
GOTO XX
GOTO YY
DEMORA movlw .154 ; 1 set numero de repeticion (B)
movwf PDel0 ; 1 |
PLoop1 movlw .243 ; 1 set numero de repeticion (A)
movwf PDel1 ; 1 |
PLoop2 clrwdt ; 1 clear watchdog
PDelL1 goto PDelL2 ; 2 ciclos delay
PDelL2 goto PDelL3 ; 2 ciclos delay
PDelL3
decfsz PDel1, 1 ; 1 + (1) es el tiempo 0 ? (A)
goto PLoop2 ; 2 no, loop
decfsz PDel0, 1 ; 1 + (1) es el tiempo 0 ? (B)
goto PLoop1 ; 2 no, loop
PDelL4 goto PDelL5 ; 2 ciclos delay
PDelL5 clrwdt ; 1 ciclo delay
return ; 2+2 Fin.
END
------------------------------------------------------------------------------
de ante mano gracias :)
-
Busca en el siguiente tema (http://www.todopic.com.ar/foros/index.php?topic=24720.0).
Saludos!
-
.
El primer problema que tenés es que arrancás en programa en la dirección 00. Eso está bien, porque es de ahí de donde se empieza a ejecutar siempre. Pero en la 04 está el vector de interrupción, por lo que en 00 debés poner una instrucción de salto, a la etiqueta CONFIGURACION en este caso, y moverla a la dirección 05 poniendo ORG 05 antes de la etiqueta, así te "saltás" en vector de interrupción (que es muy útil, pero que no te sirve para este programa).
El resto del programa está muy bien, pero necesita algunos retoques. No voy a darte lo que tenés que cambiar, porque es sencillo y si lo hacés vos vas a aprender más.
Te sugiero que busques en la web alguna tabla o lista detallada de las instrucciones del 16F84, que te ayude a orientarte mejor, porque estás usando mal las instrucciones DECFSZ y BTFSC.
Saludos y comentá como te fué.
-
arregle ciertas cosas que tu me indicaste tristan
pero lo del DECFSZ y BTFSC.
aun no lo manejo muy bien si me pudieras dar
alguna explicacion de como usarlos mira el DECFSZ
algo lo se ya que mi profesor me lo enseño
y como estamos recien empezando en esto de los
pic es un tipo tarea por lo tanto debe ir dentro del
programa pero el BTFSC lo utilize por que pense
que me seria util, vi algunos programas de suky
y estan buenos pero ahi cosas que todavia no manejo
por eso estoi tratando de hacerlo paso a paso
bueno si me pudieran dar algun consejo de como utilizar
ambos comandos (DECFSZ y BTFSC) les agradeceria mucho
-
Usa el buscador! Tienes ASM desde 0 (http://www.todopic.com.ar/foros/index.php?topic=23623.0) del amigo Leon PIC para que leas sobre asm.
Saludos!
-
muchas gracias, ahora me quedo claro
y pude lograr completar mi programa
gracias :)