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

Temas similares

11/07/2013 #1


Lenguaje Ensamblador dentro de PICBasic Pro
Buenos Dias a todos los integrantes de esta comunidad. Espero que todos estén bien. Estoy aprendiendo a programar PIC's con el compilador PIC Basic Pro. El PIC que estoy usando es el 16f877. La pregunta que quiero hacer es si ¿el compilador PIC Basic Pro también acepta las instrucciones de assembler? Como por ejemplo las 35 instrucciones Risc que vienen en las hojas de datos de Microchip y también si acepta las directivas como ORG. Lo que sucede es que estoy mas familiarizado con el assembler. Y eso es todo por los momentos amigos. Espero que la pasen bien y gracias de antemano por su respuesta. Estaré esperando ...
11/07/2013 #2
Moderador

Avatar de D@rkbytes

asdrurafael dijo: Ver Mensaje
Buenos Dias a todos los integrantes de esta comunidad. Espero que todos estén bien. Estoy aprendiendo a programar PIC's con el compilador PIC Basic Pro. El PIC que estoy usando es el 16f877. La pregunta que quiero hacer es si ¿el compilador PIC Basic Pro también acepta las instrucciones de assembler? Como por ejemplo las 35 instrucciones Risc que vienen en las hojas de datos de Microchip y también si acepta las directivas como ORG. Lo que sucede es que estoy mas familiarizado con el assembler. Y eso es todo por los momentos amigos. Espero que la pasen bien y gracias de antemano por su respuesta. Estaré esperando ...
Las directivas ORG no las acepta el compilador de MicroCode Studio, pero las instrucciones ASM si.
He realizado algunos programas incluyendo varias instrucciones en asm y los registros sin problemas.
Al menos hasta ahora no he encontrado alguna que no acepte.

Adjunto un programa de prueba, para que veas cómo se hace un programa híbrido.

Saludos.
12/07/2013 #3


Gracias D@rkbytes. Tu respuesta es muy valiosa para mi puesto que estoy estudiando las interrupciones con Pic Basic Pro y no me aceptaba la directiva ORG aplicada a la dirección 04 que es la que responde cuando hay alguna interrupción, en mi caso externa. Tampoco me aceptaba las otras direcciones con ORG. Gran ayuda para mi tu respuesta. Una pregunta adicional que quiero hacerte es si el MicroCode Studio que mencionas se refiere al compilador Pic Basic Pro es decir si son términos equivalentes. Gracias por todo D@rkbytes. Espero que estés bien. Hasta luego.
12/07/2013 #4
Moderador

Avatar de D@rkbytes

asdrurafael dijo: Ver Mensaje
Gracias D@rkbytes. Tu respuesta es muy valiosa para mi puesto que estoy estudiando las interrupciones con Pic Basic Pro y no me aceptaba la directiva ORG aplicada a la dirección 04 que es la que responde cuando hay alguna interrupción, en mi caso externa. Tampoco me aceptaba las otras direcciones con ORG. Gran ayuda para mi tu respuesta.
Para mi es un gusto poder ayudar, y que bueno que te haya servido la información.
Si usas PicBasic para programar, deberías entonces usar las instrucciones de PBP.
El hecho de usar lenguajes de alto nivel, es por simplicidad.
Y mezclar lenguajes en un programa es poco usual, sin embargo a veces requerido.
asdrurafael dijo: Ver Mensaje
Una pregunta adicional que quiero hacerte es si el MicroCode Studio que mencionas se refiere al compilador Pic Basic Pro es decir si son términos equivalentes. Gracias por todo D@rkbytes. Espero que estés bien. Hasta luego.
El lenguaje de programación se llama PICBasic.
El entorno de desarrollo se llama MicroCode Studio.
Y el compilador se llama PICBasic Pro Compiler.

Existen varios entornos de desarrollo para PICBasic, en este caso hablamos de MicroCode Studio,
que usa el compilador PICBasic Pro.
MicroCode Studio puede utilizar su propio compilador, el PM, o usar el de Microchip, el MPASMWIN

Saludos.
12/07/2013 #5


Gracias D@rkbytes por aclararme las dudas. Deseo hacer un programa sencillo con el PIC 16f877. Quiero preguntarte si para trabajar a 20 Mhz necesito un cristal o puedo usar resistencias y condensadores. En este ultimo caso cuales serían los valores de estos componentes y como van conectados en el Chip. Si no puedo trabajar con esta red RC a 20 Mhz por favor dame la frecuencia y los valores de los componentes pues tengo entendido que los cristales son costosos.

---------- Actualizado después de 20 minutos ----------

Tengo otra pregunta y es con la directiva EQU. Si por ejemplo yo programo Asdrubal EQU $ 81, que corresponde en la memoria RAM al registro especial OPTION_REG, ¿esto cambiaría en mi programa el nombre de este registro, para usarlo cada vez que quiera en ese programa con ese nombre? y de ser posible esto, ¿debo declar a Asdrubal como una variable al inicio de mi programa? ¿Podría ser con registros de propósito general? Si no es así ¿existe otra forma de cambiar los nombres de estos registros de la RAM y que lo acepte el compilador PBP.? Gracias de antemano, creo que son muchas preguntas. Hasta pronto D@rkbytes.
12/07/2013 #6
Moderador

Avatar de D@rkbytes

Para trabajar a 20MHz, necesitas un cristal, con RC no podrás alcanzar esa frecuencia.
Aparte no son nada caros los cristales.

Con respecto a la otra pregunta. No es necesario que uses nombres diferentes para usar los registros.
En PICBasic Pro los puedes usar directamente, sin necesidad de ponerles nombres y referencia.
Las variables que se usaran en las partes del código ensamblador se declaran en PICBasic,
y son usadas de forma diferente en el programa, así cómo mostré en el ejemplo que subí.

Ahora, si vas a usar PICBasic para hacer un programa, pues lo natural es que sólo uses PICBasic.
Para eso fue hecho, para simplificar programas en lenguaje ensamblador.

Saludos.
13/07/2013 #7


Gracias D@rkbytes. Me alegro mucho porque me has enseñado y he entendido las enseñanzas que tan generosamente me has dado. Espero que tengas un día feliz. Igualmente deseo a todos mucho bienestar.

---------- Actualizado después de 11 minutos ----------

Una pregunta adicional es que el programa PBP que me mandaste no abre en mi PC. Creo que necesito un programa adicional, que no tengo instalado. Mi PBP es versión 8.02. Quizás es una versión un poco atrasada y por eso no abre. El esquema en proteus si abrió. Los otros archivos en assembler y hexadecimal tampoco abren. Que piensas tu al respecto. Gracias de antemano por todo D@rkbytes.
13/07/2013 #8
Moderador

Avatar de D@rkbytes

No sé porque no puedas abrir los archivos y tampoco conozco la existencia de PBP 8.02.
El programa del post #2 está realizado con PBP 2.60C y usé MicroCode Studio Plus v3.0.0.0.
Los archivos en ensamblador los puedes abrir con el block de notas, pero en MCS no deben usarse.
Los archivos *.HEX los abro directamente con WinPic800 qué es el programa que uso para grabar los PIC.

El programa que adjunto ahora, es el mismo, pero ahora compilado con la última versión de PBP, que es la 3.0.7.1.
Y ahora el compilador se llama PBPX, y el entorno de desarrollo se llama MicroCode Studio X v5
Ya tiene algún tiempo que salió esta nueva versión, y es la que uso actualmente.
El programa es de pago y necesitas tener licencia para usarlo al 100%, puedes descargar un demo desde aquí

Espero que no estés confundiendo MPLAB con MCS, ya que si se pueden abrir programas de PBP con MPLAB,
pero necesitas instalar el plug-in necesario para poder compilar los programas.

Saludos.
Imágenes Adjuntas
Tipo de Archivo: jpg MCS_5.0.0.jpg (364,0 KB (Kilobytes), 34 visitas)
Tipo de Archivo: jpg PBPX_3.0.7.jpg (55,3 KB (Kilobytes), 19 visitas)
Archivos Adjuntos
Tipo de Archivo: rar 16F628A PBP & ASM II.rar (24,3 KB (Kilobytes), 67 visitas)
13/07/2013 #9


Gracias D@rkbytes. Pude ver la imagen pero sigo sin abrir los archivos. Voy a consultar a un amigo que revise mi PC a ver lo que está pasando. Tengo otras dos preguntas adicionales. Puedo usar la red RC del reloj externo del chip con 4Mhz? Ya se que no puedo subir hasta 20Mhz. Hasta que frecuencia puedo llegar con red RC. La otra pregunta es que he visto circuitos con un reloj de cuarzo de 32.768 Khz. Eso quiere decir que el reloj externo va a hacer funcionar el chip a esa frecuencia (32Khz)? Muy agradecido por toda la atención que me has dado, me despido. Te deseo mucha salud y suerte amigo.
13/07/2013 #10


Buenos Días. D@rkbytes la versión 8.02 es de MPLAB IDE no de Pic Basic Pro. Había confundido los términos. No se cual es la versión de mi Pic Basic Pro. Voy a preguntarle a mi amigo. Creo que los archivos no abren porque quizás el descompresor de archivos de mi PC expiró es decir la licencia. Gracias por todo. Que la pases bien.
14/07/2013 #11


Buenas tardes. Ya abrí los archivos que me mandaste D@rkbytes. Era que no estaba usando el block de notas para abrirlo. No era la licencia como creía. Ya entendí lo de las instrucciones en Assembler usando PicBasic pro. Hay que especificar con asm que vamos a trabajar en assembler y al terminar indicarle también con end asm. Gracias por tu inmensa ayuda D@rkbytes. También conseguí lo de los cristales de cuarzo y las redes RC. Para calcular la frecuencia de operación de la red Rc, hacemos T = RC y Frecuencia = 1/ T. Con C = 20 pf y 5K < R < 100K, esto da un rango de frecuencias posibles entre 500Khz y 10 Mhz. Todo esto lo encontré en el libro de Mikroelectronika para principiantes. El enlace es el siguiente: http://www.mikroe.com/chapters/view/86/#c3v10. Gracias nuevamente y mucha prosperidad para ti y para todos en esta comunidad electrónica y el resto del mundo. Hasta luego.
16/07/2013 #12


Delay en assembler y PicBasic Pro
Buenos Días. D@rkbytes el programa que me mandaste me gustó mucho pero no entiendo el siguiente retardo:
Loop500Ms
decfsz _Cnt1,F
goto $+2
decfsz _Cnt2,F
goto $+2
decfsz _Cnt3,F
goto Loop500Ms
goto $+1
return
Te agradezco por la enseñanza. Gracias de antemano.
16/07/2013 #13
Moderador

Avatar de D@rkbytes

Para que puedas entender mejor, tienes que tomar un curso de lenguaje ensamblador.
Aquí en el Foro existe uno: ASM desde 0 y aquí hay ejemplos PIC Microcontroller Time Metod
Pero mira...
Loop500Ms ; Etiqueta Loop500Ms
decfsz _Cnt1,F ; Se decrementa la variable Cnt1
goto $+2 ; Si no ha llegado a 0 se avanza 2 instrucciones, si llegó a 0 salta 1 una instrucción
decfsz _Cnt2,F ; Aquí salta si Cnt1 llego a 0 y se decrementa la variable Cnt2
goto $+2 ; Se repite el ciclo anterior
decfsz _Cnt3,F ; Se decrementa la variable Cnt3
goto Loop500Ms ; Por ser un bucle anidado, si Cnt3 no es 0 se repite el proceso desde Loop500Ms
goto $+1 ; Se avanza una instrucción.
return ; Termina la cuenta y se retorna al programa desde donde se llamó a esta subrutina.

También puedes buscar por internet como se hacen los retardos con bucles anidados.
Para evitarte los cálculos puedes usar el programa: Delay
Es muy preciso y es el que uso para crear las subrutinas de retardos.

Saludos.
16/07/2013 #14


Gracias por las recomendaciones D@rkbytes
Muy agradecido por el comentario. Haré lo que me has indicado. Feliz día.
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.