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

Temas similares

05/02/2010 #1


Duda sobre programa en asm
hola a todos es bueno estar en una comunidad de electronica, es a la primera que me inscribo y ahora es por una duda que me esta quemando la cabeza estoy empezando a programar en asm y voy muy desde cero y el primer proyecto que me dispuse es muy simple: un sitwch que cuando es pulsado se prenda un led y cuando se suelte el led se apague..

Esto es lo que visualizo en el mplab:




Estos son los errores que me salen al apretar f10:



Desde ya muchisimas gracias y espero poder adaptarme bien a la comunidad...
suerte!




dragondgold dijo: Ver Mensaje
Que problema tuviste en el proteus?

Simplemente no puedo hacer que ande ese proyecto en el proteus, lo cargue en el pic y quedo bien me lo aceptó y me lo corre (despues de un par de trabas que me ponia)

pero me parece que es un problema de el archivo .asm.
aca les dejo una foto del pic ya funcionando y el programa al lado para que vean... puede ser que no hise el cambio de banco de la memoria del micro o algo por el estilo?


05/02/2010 #2

Avatar de dragondgold

Respuesta: primer post en el foro: duda sobre programa en asm(muy simple)
La primera línea que has usado: __Config _CP_OFF...... Nunca la he usado si quieres configurar el oscilador en los menús del Mplab te lo permite, ahí esta un error. Los demás errores que te dice sobre PORTA, PORTB, etc es por que no definiste donde se encuentra ese registro. Antes de ORG 000 para comenzar el programa tenes que declarar donde esta todo:

PORTB equ 0x06 ;el puerto B en el PIC16f84 esta en la dirección 0x06 de la memoria
PORTA equ 0x05 ;el puerto A en el PIC16f84 esta en la dirección 0x05 de la memoria

Eso son los puertos donde mandas los 1 y 0, para definirlos como entradas o salidas se hace ya dentro del programa (después de ORG 000):

movlw 0 ;cargo al registro work con 0
tris PORTB ;esta instrucción envía el valor del registro work al puerto B y lo
;configura como entrada o salida depende el valor cargado en W

Si el registro work (W) fuera 1 el puerto sería entrada, así si pones b'0001010' podes definir entradas y salidas en un mismo puerto siempre utilizando la instrucción "tris"

Espero que te alla servido saludos!!
05/02/2010 #3


Respuesta: duda sobre programa en asm
muchisimas gracias dragondgold....la verdad que me ayudaste mucho... estos son mis principios en programacion y me alegra saber que se puede contar con buena gente para resolver problemas que para algunos son complicados.....nuevamente; muchas gracias
06/02/2010 #4
Moderador

Avatar de Vick

Respuesta: duda sobre programa en asm
Ve al menú Configure/Select device... y en la lista Device: elige el PIC16F84A, click en Ok e intenta ensamblar de nuevo para ver que pasa...
06/02/2010 #5


Respuesta: duda sobre programa en asm
vick: agradezco tu ayuda, pero ya lo pude solucionar con el comentario de dragondgold... ahora estoy tartando de llevar ese proyecto terminado y que funcione con el proteus ahi me trabé de nuevo....pero muchas gracias por ayudar...en serio...es mi primer dia aca y la verdad que voy a pasar largo tiempo en este foro... no lo conocía
06/02/2010 #6

Avatar de dragondgold

Respuesta: duda sobre programa en asm
Que problema tuviste en el proteus?
06/02/2010 #7


Respuesta: duda sobre programa en asm
dragondgold dijo: Ver Mensaje
Que problema tuviste en el proteus?
en le potst te dejo mi rpoblema en proteus
07/02/2010 #8

Avatar de dragondgold

Respuesta: duda sobre programa en asm
El primer error es que tenes que poner una R de 10K a positivo de la patita de reset del PIC (MCLR) porque sino el PIC está reseteado siempre. Y no especificas cual es el problema que tenes, solo me decis que te parece que es el programa en asm pero no especificas el problema.

Y segundo ahí no tenes puesto ningún switch ni ningún led para realizar el programa. Además tenes un 0 en todo el puerto B, entonces en el puerto A (según tu programa) RA0 debería cambiar a nivel 0 para apagar el led pero no puede porque has conectado todo el puerto A a positivo, por que?
23/10/2010 #9


Respuesta: duda sobre programa en asm
hola quiesiera que me ayudaran es casi la misma situacion solo que estes es con tres interruptores
23/10/2010 #10

Avatar de dragondgold

Respuesta: duda sobre programa en asm
Si describís mejor tu problema puedo ayudarte, que problema tenés, que programa usaste?

Saludos
23/10/2010 #11


Respuesta: duda sobre programa en asm
hola yo tengo un problema similar. quiero aprender a usar el mplab y copie un programa de un tutorial para encerder y agar un led, pero cuando lo intento copilar me da el siguiente error


Clean: Deleting intermediary and output files.
Clean: Done.
Executing: "D:\Archivos de programa\MPASM Suite\MPAsmWin.exe" /q /p16F628A "mi.asm" /l"mi.lst" /e"mi.err"
Warning[207] D:\PROYECTO\MI.ASM 13 : Found label after column 1. (Inicio)
Error[128] D:\PROYECTO\MI.ASM 19 : Missing argument(s)
Warning[207] D:\PROYECTO\MI.ASM 21 : Found label after column 1. (Fin)
Halting build on first failure as requested.
BUILD FAILED: Sat Oct 23 23:37:57 2010[/B]

este es el codigo del programa. no se como poderlo copilar con exito, por favor le agredezco su ayuda.
; Programa que enciende un led conectado al pin 17 del PIC
; Inicializa el puerto A y configura el bit 0 del mismo como salida
; Fecha: 21.01.07 Autor: Jorge A. Bojórquez micropic.wordpress.com


list p=16f628a ; Declaración del procesador
include p16f628a.inc ;
__config 0x3F38 ; Declaración de la configuración
; Inicio del programa
org 0x00 ; Vector de Inicio
goto Inicio ; Ir a la etiqueta 'Inicio'

Inicio movlw 0x07 ; Cargar al acumulador W el valor 0x07 para
movwf CMCON ; deshabilitar comparadores analógicos
bsf STATUS,RP0 ; Seleccionar el banco de memoria 1
bcf PORTA,0 ; Configurar el bit 0 del puerto A como salida
bcf STATUS,RP0 ; Seleccionar el banco de memoria 0

bsf PORTA ; Enciende el led conectado al puerto A

Fin goto $

end
23/10/2010 #12

Avatar de snakewather

Respuesta: duda sobre programa en asm
Bienvenido al foro mira date una vuelta por aqui los PDF los trato sobre el 16F877 pero el comienzo te servira solo toma encuenta los registros para el pic que manejes.

Curso tutorial del PIC16F877


Hay otro tutorail por aqui de ASM checalo tambien.
01/01/2013 #13


Duda sobre esta programacion
Antetodo , espero no haberme equivocado de foro para formalizar esta pregunta.

Seguidamente aclarar que soy nobel en estos temas , por lo que estoy estudiando por mi cuenta atraves del libro "Microcontrolador PIC16F84 - Desarrollo de proyectos ", y espero podais aclarar estas 2 dudas .

En el tema 9 que habla sobre los saltos, entra en como hacer comparaciones de registros y en un fragmento de programa esta mi duda :

011 movf registroB,W
012 subwf registroA,W
013 btfss STATUS,C
014 goto menor

la ins btfss f,b tiene afectados los flags C,DC,Z
la ins movf f,d tiene afectados lel flag Z
Mi pregunta es la siguiente :
El registro STATUS se referira sienpre a su instruccion que le precede , tanto sea con el registro W , como con cualquier otro registro ??

Y en este otro fragmento de programa

movlw numero
subwf PORTA,W
movlw b´11110000´
btfss STATUS,C

Si quiero comprobar si la entrada PORTA es >= que numero , pone la carga del literal antes de la ins btfss f,b , ya que la ins movlw k no afecta ningun flag ??

Esas son mis pequeñas dudas , y si es asi , gracias ya que voy comprendiendo la importancia de los registros y los flags en la programacion .
Un saludazo Neho
03/01/2013 #14
Moderador

Avatar de Chico3001

El manual del set de instrucciones de microchip te dice que instrucciones afectan a que registros:

http://ww1.microchip.com/downloads/e...Doc/31029a.pdf

En el ejemplo que pusiste la instruccion MOVLW no afecta a ninguna bandera y la instruccion SUBWF afecta a las banderas C, DC y Z, el mismo manual (pagina 39 por ejemplo) te pone ejemplos de la instruccion y de que banderas afecta en que condiciones:

W=0x01
C = ?
Z = ?

SUBLW 0x02

W = 0x01
C = 1 (resultado positivo)
Z = 0 (resultado no es cero)
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.