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

Temas similares

17/02/2008 #1


lenguaje esamblador en pic16f84a
acabo de comenzar en esto de los pic, y bueno, tomé un ejemplo del libro de desarrollo de proyectos para simularlo en proteus pero no sucede nada, alguien me puede ayudar a ver que estoy haciendo mal...
este es el programa

si porta = numero se encienden todos los leds
si porta > se encieden los led pares de salida
si porta < se encienden los leds del nibble alto y se apagan los del bajo
; zona de datos******
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC ;configuracion para el grabador
LIST P=16F84A ; procesador utilizado
INCLUDE <P16F84A.INC> ; Fichero donde se definen las etiquetas del PIC

Numero EQU d'13' ; valor de CONST
;zona de codigos*****
ORG 0 ; el programa inicia en la dirección 0
Inicio
bsf STATUS,RP0 ; Acceso al banco 1
clrf TRISB ; configuracion de puerto B como salida
movlw b'00011111'
movwf TRISA ; configuracion de puerto A como entrada
bcf STATUS,RP0 ; acceso al banco 0

Principal
movlw Numero ; carga el número a comparar
subwf PORTA,W ; (PORTA)-CONST -> (W)
movlw b'11110000' ; supone (PORTA) es menor
btfss STATUS,C ; ¿C=1?.¿(W)Positivo?,¿(PORTA)>=CONST?
goto ActivaSalida ; No. C=0,por tanto (PORTA)<Numero
movlw b'11111111' ; Supone que son iguales
btfsc STATUS,Z ; ¿Z=0?,¿son distintos?
goto ActivaSalida ; no son iguales ya que Z=1
movlw b'01010101' ; sí, por tanto (PORTA)> CONST

ActivaSalida
movwf PORTB ; Resusltado se visualiza por el puerto de salida
goto Principal ; crea un bucle cerrado e infinito

END ; Termina programa.

y este es mi diagrama en proteus:
(el del archivo)
17/02/2008 #2


siempre le echado la culpa a la version de MPLab

necesitaras usar cblock y e inicializar Numero

Código:
 
   __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC 	;configuracion para el grabador
  LIST P=16F84A 				; procesador utilizado
  INCLUDE <P16F84A.INC> 		; Fichero donde se definen las etiquetas del PIC

   cblock 0x20
       Numero  ; valor de CONST
    endc

;zona de codigos*****

 ORG 0 				; el programa inicia en la dirección 0
Inicio
 bsf STATUS,RP0 	; Acceso al banco 1
 clrf TRISB 		; configuracion de puerto B como salida
 movlw b'00011111'
 movwf TRISA 		; configuracion de puerto A como entrada
 bcf STATUS,RP0 	; acceso al banco 0

 movlw d'3'
 movwf  Numero

Principal	
 movlw Numero 		; carga el número a comparar
 subwf PORTA,W 		; (PORTA)-CONST -> (W)
 movlw b'11110000' 	; supone (PORTA) es menor
 btfss STATUS,C 	; ¿C=1?.¿(W)Positivo?,¿(PORTA)>=CONST?
 goto ActivaSalida 	; No. C=0,por tanto (PORTA)<Numero
 movlw b'11111111' 	; Supone que son iguales
 btfsc STATUS,Z 	; ¿Z=0?,¿son distintos?
 goto ActivaSalida 	; no son iguales ya que Z=1
 movlw b'01010101' 	; sí, por tanto (PORTA)> CONST

ActivaSalida
 movwf PORTB 		; Resusltado se visualiza por el puerto de salida
 goto Principal 	; crea un bucle cerrado e infinito

 END ; Termina programa.
18/02/2008 #3

Avatar de anthony123

mabauti dijo:
siempre le echado la culpa a la version de MPLab
Porque lo dices?
18/02/2008 #4


anthony123 dijo:
mabauti dijo:
siempre le echado la culpa a la version de MPLab
Porque lo dices?
Quiza en anteriores versiones , la directiva Numero EQU d'13' equivaldria a sustituir el texto Numero por el texto d'13'; en la version que trabajo (7.5), eso equivale a reservar el espacio de memoria ram 0Dh asignandole la etiqueta Numero.

Quiza alguien que haya trabajado con las primeras versiones pueda corroborarlo
18/02/2008 #5

Avatar de Saint_


hola MICHEL85, te comento que el programa que tienes esta funcionando muy bien.

Un error que note es el de la palabra de configuracion "__CONFIG"
habitualmente este "__CONFIG" va despues de declarar al prosesador y Fichero donde se definen las etiquetas del PIC, pues si le podes como esta en tu ASM genera un error al compilar "Al menos eso me pasa a mi". por lo demas todo esta ok.

tambien hay un problema en el circuito armado en el proteus.
"las resistencias que se conectan a la barra de leds del puerto_B no estan vien conectadas y son de valores altos".

te reembio tu ejemplo con las modificaciones que le hice al circuito y al ASM."
EL Mplab que utilizo es el 8.1, y el Proteus7.2...

Un saludo y que te baya bien.
Archivos Adjuntos
Tipo de Archivo: rar practicas_181.rar (42,4 KB (Kilobytes), 41 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.