SlideShare una empresa de Scribd logo
Empezando con el programa



Primero debemos tomar algunas clases generales acerca del
código.

¿Que es el código? El código será la lista de ordenes que seguirá
el micro. En el pondremos todos los pasos que efectuará el
mismo. El PIC es microcontrolador, capaz de seguir nuestras
indicaciones. Otros componentes, son fijos, tales como
compuertas, memorias, etc. Los microcontroladores son
integrados capaces de seguir una secuencia programada. Esto
quiere decir que se programa. ¿Como lo programamos? Nuestra
Pc será la interfase Hombre-Microcontrolador. Todos los
microcontroladores poseen una memoria de programa, en la cual
contendrá todos los pasos a seguir. El código como en cualquier
lista se empezará a leer la primera línea, luego la segunda y así
sucesivamente, salvo que se especifique lo contrario.

El código se escribirá en la ventana en blanco que aparece para
en el MPlab.

Ahora pasaremos a conocer las partes del programa.

En la siguiente sección pondremos en vista un código fuente de
parte de un programa, no vale la pena copiarlo y ejecutarlo ya que
su fin es solo de mostrar las partes de los programas.
Echemos un vistazo al siguiente código:

                                                 Listado del PIC
LIST p=16F84
                                                 que se utilizará
status equ 03h
portb equ 06h
trisb equ 86h
rp0 equ 5
rbie equ 3
                    Encabezado o
rbif equ 0
                    header, son las
intcon equ 0bh
                    equivalencias
loop equ 0dh
loop2 equ 0eh
loop3 equ 0fh
loop4 equ 10h
w equ 00h
goto inicio         Código

dormir
  bcf intcon,rbif
  bsf intcon,rbie
 SLEEP
 bcf intcon,rbie
  bcf intcon,rbif
 return

retardo100mS
 movlw d'100'       Funciones (Ya
 movwf loop2        es parte del
 finretardo1        código)
 nop
 nop
 nop
 nop
 nop
 call retardo1mS
 movlw d'100'
 decfsz loop2
 goto finretardo1
return




                                            Rems: No es
                                            parte del
;****************************************** código son
;* Principal *                              anotaciones
;****************************************** nuestras. El
                                            compilador las
                                            pasará de largo


inicio
 bsf status,rp0
 bsf trisb,2
 bcf status,rp0                              Programa
                                             principal
                                             (Código)
reinicia

call dormir
bsf portb,2
call retardo100mS
bcf portb,2
goto reinicia

                                                 Sentencia de
end                                              Fin del
                                                 programa

No explicaremos instantáneamente todas las partes del programa
pero me parece un buen momento para explicar las header, ya
que estas las tendremos que tener en claro desde el principio.

En el código cuando aparecía:

status equ 03h
portb equ 06h
trisb equ 86h
rp0 equ 5

Lo que queríamos decirle al programa es que cada vez que
escribamos la palabra status, cuando compile el programa lo
cambie por lo que le sigue a equ. Es decir que Status equivaldrá a
03h. Es decir que cada vez que queremos escribir 03
hexadecimal en el código, sera lo mismo poner status. Depende
de donde pondramos la palabra status, esta correspondera a un
numero o correspondera a la direccion 03 de memoria Veamos los
siguientes ejemplos para redondear el tema.

bsf 03h,3
bsf 03h,status
bsf status, 3

(sintaxis: Bsf xxx,b)

Para los que no conocen las instrucciones del asembler, BSF pone
un 1 en el bit b del registro de direccion xxx (si deseas ver mas
acerca de esta instruccion, visita la lista de instrucciones )
Volviendo, en los tres ejemplos se realiza lo mismo. En la primera,
el código es confuso, en el segundo tambien pues ese status no
significa mucho que lleve el valor 3 pero aqui se ve que se usa
como constate. en la tercera linea el codigo toma color pues se
pone un 1 en el bit 3 del registro ubicado en la direccion status
(03h).
Por otro lado debemos tener en cuenta que pueden existir varias
header con el mismo valor pero no pueden existir una header con
dos valores.
Volveremos a las partes del programa luego.

¿Como se programa?.

Debemos ser prolijos al programar. En un primer momento solo
nos debe preocupar que es lo que queremos hacer. Organizarnos
en papel y lapiz marcando las partes importantes del codigo
ayudara mucho. Es conveniente el uso de rems pues estos nos
ayudarán en todo momento. Estos no ocupan memoria en el pic
pues no se escriben en él. El uso adecuado de los nombres de
funciones como así también el de las equivalencias nos ayudarán
muchísimo, pues tendremos bien etiquetados todas las partes del
código según el uso que les demos . Escribir un código fuente es
muy fácil, escribir el primer código fuente es muy difícil.

Planeemos un proyecto simple con el 16F84

Que tal si queremos simplemente encender un led ubicado en la
pata uno del integrado (Ra2).
Bien siempre en todo programa de PIC hecho en el MPlab deberá
llevar las siguientes dos líneas:

LIST p=16F84
End

Ok. La primera línea le esta indicando al Mplab que listado de
Microcontrolador se utilizará. Como utilizaremos el Pic 16F84 el
listado deberá ser el mismo.
La segunda línea le dirá donde termina el programa.
En el medio de estas dos irá todo el código.
Para encender el led nos basta solo con cuatro líneas más de
código:

LIST p=16F84

bsf 3,5
bcf 85,2
bcf 3,5
bsf 5,2
end

Ja los pesque sin entender nada.

Es fácil. La primera y ultima línea ya la hemos analizado. La
segunda y la quinta son muy parecidas y la tercera y cuarta
también.

Veamos que significa las sentencias bcf y bsf

Bcf: Bit Clear Flag

Bsf: Bit Set Flag.

Esto quiere decir que pondrá una bandera (Flag) o no en algún Bit.
Vemos que cada línea de bxf contiene además dos números. Estos
serán el primero para el registro y el segundo para el numero de
bit.

Es decir que la segunda línea pondrá un uno (una bandera) en el
bit cinco del registro tres.

De la misma manera en la tercera línea de código tendremos que
pondrá en cero el bit dos del registro ochenta y cinco.

Bueno pero que significado tienen los registros 3 y 85 antes
nombrados. Son los registros de "estado" y "Tris A"
Es decir que este programa lo que hace es acceder primero al
registro de estado y modificar la paginación de este (Rp0 es el
bit 5 del registro status), de este modo podremos acceder a la
segunda columna de registros. Recordemos que el registro Tris a
esta en el banco uno de los bancos de registro. Luego de eso,
modificamos la entrada-salida Ra2 (Bit 2 del registro tris),
colocando a esta como salida de datos. Ahora debemos volver al
banco cero para poder acceder al registro PortA. Entonces
modificamos la paginación del registro status volviendo el bit 5
(Rp0) a cero. Ahora si estamos preparados para escribir
directamente en el puerto.

Recuerden que por defecto el PIC tendrá a todas la entradas-
salidas (tanto los puertos Ra y Rb), colocadas como entrada de
datos, por eso es que las debemos setear antes de usar (Si uno
intenta escribir una entrada el MPlab no genera ningún error,
simplemente no hace nada).

Esto si lo compilamos y lo simulamos, funciona, pero que pasa si
venimos dentro de unos días y vemos el código nuevamente. Nos
resultará difícil recordar que 03 equivale a status y que 85
equivale a Tris A.

Para ello ordenemos un poco el código y llamemos a las cosas por
su nombre:

LIST p=16F84

Status equ 03h
Rp0 equ 5
TrisA equ 85h
PortA equ 05h

bsf Status,Rp0
bcf TrisA,2
bcf Status,Rp0
bsf PortA ,2
end

No es verdad que esta mejor. Y que tal si les ponemos algunas
anotaciones nuestras. Estas llevarán al principio el punto y coma,
entonces de esta manera, el compilador no tomará en cuenta el
resto de la línea:

LIST p=16F84

*      Header       *

Status equ 03h
Rp0 equ 5
TrisA equ 85h
PortA equ 05h

*      Programa Principal       *

bsf Status,Rp0
bcf TrisA,2
bcf Status,Rp0
bsf PortA ,2

end                         ;Este es el fin

Fíjense como se estiro nuestro programa.

En esta parte hemos explicado las sentencias "bsf", "bcf", y
parte de algunos registros como el "TrisA", "PortA" y "Status".

Si queres, Aqui tenes todas las instrucciones del ascembler de
pic bien explicadas.

Que les parece si lo simulamos para ver que es lo que pasaría en
el PIC.
Para ello pasaremos a la siguiente parte.

Más contenido relacionado

La actualidad más candente

Instrucciones lenguaje assembler
Instrucciones lenguaje assemblerInstrucciones lenguaje assembler
Instrucciones lenguaje assembler
ANDREA
 
Laborqatoio 1 telematica
Laborqatoio 1 telematicaLaborqatoio 1 telematica
Laborqatoio 1 telematica
maleja2012
 
I S A
I S AI S A
Codificacion
CodificacionCodificacion
Codificacion
Stefano Salvatori
 
Openmp
OpenmpOpenmp
Openmp
Unex
 
Teclado Matricial
Teclado MatricialTeclado Matricial
Teclado Matricial
Abbadon Kuchiku-kan
 
Memoria I I
Memoria  I IMemoria  I I
Memoria I I
Stefano Salvatori
 
Libreria c++
Libreria c++Libreria c++
Librerias Básicas y sus Funciones Lenguaje de Programación C
Librerias Básicas y sus Funciones Lenguaje de Programación CLibrerias Básicas y sus Funciones Lenguaje de Programación C
Librerias Básicas y sus Funciones Lenguaje de Programación C
Cristian Maza
 
Puerto paralelo
Puerto paraleloPuerto paralelo
Puerto paralelo
jorgeluis2702
 
Funciones de Cadenas/ Computación para ingenieros
Funciones de Cadenas/ Computación para ingenierosFunciones de Cadenas/ Computación para ingenieros
Funciones de Cadenas/ Computación para ingenieros
Maria jose Ramirez perez
 
Turbo pascal 7 guia principal
Turbo pascal 7 guia principalTurbo pascal 7 guia principal
Turbo pascal 7 guia principal
hanithaw1
 
Bibliotecas en c
Bibliotecas en cBibliotecas en c
Bibliotecas en c
demata
 
P proyecto 3
P proyecto 3P proyecto 3
P proyecto 3
Fredy Serna
 
Que es una directiva de preprocesador
Que es una directiva de preprocesadorQue es una directiva de preprocesador
Que es una directiva de preprocesador
Andrew King
 
Flex y bison
Flex y bisonFlex y bison
Flex y bison
Alvaro Cedeño
 

La actualidad más candente (16)

Instrucciones lenguaje assembler
Instrucciones lenguaje assemblerInstrucciones lenguaje assembler
Instrucciones lenguaje assembler
 
Laborqatoio 1 telematica
Laborqatoio 1 telematicaLaborqatoio 1 telematica
Laborqatoio 1 telematica
 
I S A
I S AI S A
I S A
 
Codificacion
CodificacionCodificacion
Codificacion
 
Openmp
OpenmpOpenmp
Openmp
 
Teclado Matricial
Teclado MatricialTeclado Matricial
Teclado Matricial
 
Memoria I I
Memoria  I IMemoria  I I
Memoria I I
 
Libreria c++
Libreria c++Libreria c++
Libreria c++
 
Librerias Básicas y sus Funciones Lenguaje de Programación C
Librerias Básicas y sus Funciones Lenguaje de Programación CLibrerias Básicas y sus Funciones Lenguaje de Programación C
Librerias Básicas y sus Funciones Lenguaje de Programación C
 
Puerto paralelo
Puerto paraleloPuerto paralelo
Puerto paralelo
 
Funciones de Cadenas/ Computación para ingenieros
Funciones de Cadenas/ Computación para ingenierosFunciones de Cadenas/ Computación para ingenieros
Funciones de Cadenas/ Computación para ingenieros
 
Turbo pascal 7 guia principal
Turbo pascal 7 guia principalTurbo pascal 7 guia principal
Turbo pascal 7 guia principal
 
Bibliotecas en c
Bibliotecas en cBibliotecas en c
Bibliotecas en c
 
P proyecto 3
P proyecto 3P proyecto 3
P proyecto 3
 
Que es una directiva de preprocesador
Que es una directiva de preprocesadorQue es una directiva de preprocesador
Que es una directiva de preprocesador
 
Flex y bison
Flex y bisonFlex y bison
Flex y bison
 

Similar a Curso MPLAB pic 3 empezando con el programa 9p

Niple diapopsitiva
Niple   diapopsitivaNiple   diapopsitiva
Niple diapopsitiva
silviavega101
 
Niple diapopsitiva
Niple   diapopsitivaNiple   diapopsitiva
Niple diapopsitiva
silviavega101
 
Pikit3 parte i-
Pikit3 parte i-Pikit3 parte i-
Pikit3 parte i-
Gerardo Garcia
 
PROGRAMACIÓN EN C
PROGRAMACIÓN EN CPROGRAMACIÓN EN C
PROGRAMACIÓN EN C
visionartificialitm
 
PROGRAMACION EN C
PROGRAMACION EN CPROGRAMACION EN C
PROGRAMACION EN C
visionartificialitm
 
Introducpic2
Introducpic2Introducpic2
Introducpic2
conalep
 
Introducpic
IntroducpicIntroducpic
Introducpic
conalep
 
Estructura .COM
Estructura .COMEstructura .COM
Estructura .COM
Alejandro Muñiz
 
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Jose Manuel Mansilla Carrasco
 
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xx
freddymadriz
 
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Jose Manuel Mansilla Carrasco
 
Ejercicio pic assembler
Ejercicio pic assemblerEjercicio pic assembler
Ejercicio pic assembler
Alexis Rivera
 
Guia 5 3 2015 c2
Guia 5 3 2015 c2Guia 5 3 2015 c2
Guia 5 3 2015 c2
erik19borgnia
 
Aplicaciones con el pic 16f84
Aplicaciones con el pic 16f84Aplicaciones con el pic 16f84
Aplicaciones con el pic 16f84
Victor Fernando Monroy Dipp
 
Aplicaciones con el pic 16f84
Aplicaciones con el pic 16f84Aplicaciones con el pic 16f84
Aplicaciones con el pic 16f84
Victor Fernando Monroy Dipp
 
Proy iker4
Proy iker4Proy iker4
Equipo 6 comparaciones
Equipo 6 comparacionesEquipo 6 comparaciones
Equipo 6 comparaciones
gabo
 
Programación del microcontrolador
Programación del microcontroladorProgramación del microcontrolador
Programación del microcontrolador
Juan Gamboa P
 
Curso Micro Tema 2
Curso Micro Tema 2Curso Micro Tema 2
Curso Micro Tema 2
Luis Zurita
 
asdas
asdasasdas

Similar a Curso MPLAB pic 3 empezando con el programa 9p (20)

Niple diapopsitiva
Niple   diapopsitivaNiple   diapopsitiva
Niple diapopsitiva
 
Niple diapopsitiva
Niple   diapopsitivaNiple   diapopsitiva
Niple diapopsitiva
 
Pikit3 parte i-
Pikit3 parte i-Pikit3 parte i-
Pikit3 parte i-
 
PROGRAMACIÓN EN C
PROGRAMACIÓN EN CPROGRAMACIÓN EN C
PROGRAMACIÓN EN C
 
PROGRAMACION EN C
PROGRAMACION EN CPROGRAMACION EN C
PROGRAMACION EN C
 
Introducpic2
Introducpic2Introducpic2
Introducpic2
 
Introducpic
IntroducpicIntroducpic
Introducpic
 
Estructura .COM
Estructura .COMEstructura .COM
Estructura .COM
 
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xx
 
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xx
 
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xx
 
Ejercicio pic assembler
Ejercicio pic assemblerEjercicio pic assembler
Ejercicio pic assembler
 
Guia 5 3 2015 c2
Guia 5 3 2015 c2Guia 5 3 2015 c2
Guia 5 3 2015 c2
 
Aplicaciones con el pic 16f84
Aplicaciones con el pic 16f84Aplicaciones con el pic 16f84
Aplicaciones con el pic 16f84
 
Aplicaciones con el pic 16f84
Aplicaciones con el pic 16f84Aplicaciones con el pic 16f84
Aplicaciones con el pic 16f84
 
Proy iker4
Proy iker4Proy iker4
Proy iker4
 
Equipo 6 comparaciones
Equipo 6 comparacionesEquipo 6 comparaciones
Equipo 6 comparaciones
 
Programación del microcontrolador
Programación del microcontroladorProgramación del microcontrolador
Programación del microcontrolador
 
Curso Micro Tema 2
Curso Micro Tema 2Curso Micro Tema 2
Curso Micro Tema 2
 
asdas
asdasasdas
asdas
 

Más de Ruderocker Billy

Introduccion a los microcontroladores pic y programacion de una matriz de led's
Introduccion a los microcontroladores pic y programacion de una matriz de led'sIntroduccion a los microcontroladores pic y programacion de una matriz de led's
Introduccion a los microcontroladores pic y programacion de una matriz de led's
Ruderocker Billy
 
Microcontroladores tabla de referencia
Microcontroladores tabla de referenciaMicrocontroladores tabla de referencia
Microcontroladores tabla de referencia
Ruderocker Billy
 
como programar un pic
como  programar un piccomo  programar un pic
como programar un pic
Ruderocker Billy
 
Diseño sala de cirugia
Diseño sala de cirugiaDiseño sala de cirugia
Diseño sala de cirugia
Ruderocker Billy
 
Cirugia model instalacion hidraulica y sanitaria
Cirugia model instalacion hidraulica y sanitaria Cirugia model instalacion hidraulica y sanitaria
Cirugia model instalacion hidraulica y sanitaria
Ruderocker Billy
 
Plano
PlanoPlano
Sala de cirugia
Sala de cirugiaSala de cirugia
Sala de cirugia
Ruderocker Billy
 
Cirugia model
Cirugia modelCirugia model
Cirugia model
Ruderocker Billy
 
Litiasis renal1
Litiasis renal1Litiasis renal1
Litiasis renal1
Ruderocker Billy
 
Sv300service manual
Sv300service manualSv300service manual
Sv300service manual
Ruderocker Billy
 
Ventilacion mecanica
Ventilacion mecanicaVentilacion mecanica
Ventilacion mecanica
Ruderocker Billy
 
Siemens 300 a_service_manual
Siemens 300 a_service_manualSiemens 300 a_service_manual
Siemens 300 a_service_manualRuderocker Billy
 
Siemens product & accessory price list
Siemens product & accessory price listSiemens product & accessory price list
Siemens product & accessory price list
Ruderocker Billy
 
Servo 300 function check (each use)
Servo 300 function check (each use)Servo 300 function check (each use)
Servo 300 function check (each use)
Ruderocker Billy
 
Servo 300 exchange 0 2 cell
Servo 300 exchange 0 2 cellServo 300 exchange 0 2 cell
Servo 300 exchange 0 2 cellRuderocker Billy
 
Servo 300 3000 hour pm
Servo 300 3000 hour pmServo 300 3000 hour pm
Servo 300 3000 hour pm
Ruderocker Billy
 

Más de Ruderocker Billy (20)

Introduccion a los microcontroladores pic y programacion de una matriz de led's
Introduccion a los microcontroladores pic y programacion de una matriz de led'sIntroduccion a los microcontroladores pic y programacion de una matriz de led's
Introduccion a los microcontroladores pic y programacion de una matriz de led's
 
Microcontroladores tabla de referencia
Microcontroladores tabla de referenciaMicrocontroladores tabla de referencia
Microcontroladores tabla de referencia
 
como programar un pic
como  programar un piccomo  programar un pic
como programar un pic
 
Diseño sala de cirugia
Diseño sala de cirugiaDiseño sala de cirugia
Diseño sala de cirugia
 
Cirugia model instalacion hidraulica y sanitaria
Cirugia model instalacion hidraulica y sanitaria Cirugia model instalacion hidraulica y sanitaria
Cirugia model instalacion hidraulica y sanitaria
 
Plano
PlanoPlano
Plano
 
Sala de cirugia
Sala de cirugiaSala de cirugia
Sala de cirugia
 
Cirugia model
Cirugia modelCirugia model
Cirugia model
 
Litiasis renal1
Litiasis renal1Litiasis renal1
Litiasis renal1
 
Sv 300 spare parts list
Sv 300 spare parts listSv 300 spare parts list
Sv 300 spare parts list
 
Sv300service manual
Sv300service manualSv300service manual
Sv300service manual
 
Ventilacion mecanica
Ventilacion mecanicaVentilacion mecanica
Ventilacion mecanica
 
Siemens 300 a_service_manual
Siemens 300 a_service_manualSiemens 300 a_service_manual
Siemens 300 a_service_manual
 
Siemens product & accessory price list
Siemens product & accessory price listSiemens product & accessory price list
Siemens product & accessory price list
 
Siemens300 300 apart2
Siemens300 300 apart2Siemens300 300 apart2
Siemens300 300 apart2
 
Siemens300 300 apart1
Siemens300 300 apart1Siemens300 300 apart1
Siemens300 300 apart1
 
Servo 300 function check (each use)
Servo 300 function check (each use)Servo 300 function check (each use)
Servo 300 function check (each use)
 
Servo 300 exchange 0 2 cell
Servo 300 exchange 0 2 cellServo 300 exchange 0 2 cell
Servo 300 exchange 0 2 cell
 
Servo 300 calibaration(2)
Servo 300 calibaration(2)Servo 300 calibaration(2)
Servo 300 calibaration(2)
 
Servo 300 3000 hour pm
Servo 300 3000 hour pmServo 300 3000 hour pm
Servo 300 3000 hour pm
 

Último

Presentación de proyecto en acuarela moderna verde.pdf
Presentación de proyecto en acuarela moderna verde.pdfPresentación de proyecto en acuarela moderna verde.pdf
Presentación de proyecto en acuarela moderna verde.pdf
LuanaJaime1
 
Liturgia día del Padre del siguiente domingo.pptx
Liturgia día del Padre del siguiente domingo.pptxLiturgia día del Padre del siguiente domingo.pptx
Liturgia día del Padre del siguiente domingo.pptx
YeniferGarcia36
 
Evaluacion del tercer trimestre del 2023-2024
Evaluacion del tercer trimestre del 2023-2024Evaluacion del tercer trimestre del 2023-2024
Evaluacion del tercer trimestre del 2023-2024
israelsouza67
 
3° SES COMU LUN10 CUENTO DIA DEL PADRE 933623393 PROF YESSENIA (1).docx
3° SES COMU LUN10  CUENTO DIA DEL PADRE  933623393 PROF YESSENIA (1).docx3° SES COMU LUN10  CUENTO DIA DEL PADRE  933623393 PROF YESSENIA (1).docx
3° SES COMU LUN10 CUENTO DIA DEL PADRE 933623393 PROF YESSENIA (1).docx
rosannatasaycoyactay
 
200. Efemerides junio para trabajar en periodico mural
200. Efemerides junio para trabajar en periodico mural200. Efemerides junio para trabajar en periodico mural
200. Efemerides junio para trabajar en periodico mural
shirherrer
 
CONCURSOS EDUCATIVOS 2024-PRESENTACIÓN ORIENTACIONES ETAPA IE (1).pptx
CONCURSOS EDUCATIVOS 2024-PRESENTACIÓN ORIENTACIONES ETAPA IE (1).pptxCONCURSOS EDUCATIVOS 2024-PRESENTACIÓN ORIENTACIONES ETAPA IE (1).pptx
CONCURSOS EDUCATIVOS 2024-PRESENTACIÓN ORIENTACIONES ETAPA IE (1).pptx
CARMENSnchez854591
 
1° T3 Examen Zany de primer grado compl
1° T3 Examen Zany  de primer grado compl1° T3 Examen Zany  de primer grado compl
1° T3 Examen Zany de primer grado compl
ROCIORUIZQUEZADA
 
Soluciones Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinar...
Soluciones Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinar...Soluciones Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinar...
Soluciones Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinar...
Juan Martín Martín
 
UrkuninaLab.pdfsadsadasddassadsadsadasdsad
UrkuninaLab.pdfsadsadasddassadsadsadasdsadUrkuninaLab.pdfsadsadasddassadsadsadasdsad
UrkuninaLab.pdfsadsadasddassadsadsadasdsad
JorgeVillota6
 
Presentación simple corporativa degradado en violeta blanco.pdf
Presentación simple corporativa degradado en violeta blanco.pdfPresentación simple corporativa degradado en violeta blanco.pdf
Presentación simple corporativa degradado en violeta blanco.pdf
eleandroth
 
Este documento contiene, el programa completo de un acto para realizar la pro...
Este documento contiene, el programa completo de un acto para realizar la pro...Este documento contiene, el programa completo de un acto para realizar la pro...
Este documento contiene, el programa completo de un acto para realizar la pro...
romina395894
 
Chatgpt para los Profesores Ccesa007.pdf
Chatgpt para los Profesores Ccesa007.pdfChatgpt para los Profesores Ccesa007.pdf
Chatgpt para los Profesores Ccesa007.pdf
Demetrio Ccesa Rayme
 
Camus, Albert - El Extranjero.pdf
Camus, Albert -        El Extranjero.pdfCamus, Albert -        El Extranjero.pdf
Camus, Albert - El Extranjero.pdf
AlexDeLonghi
 
ACERTIJO DESCIFRANDO CÓDIGO DEL CANDADO DE LA TORRE EIFFEL EN PARÍS. Por JAVI...
ACERTIJO DESCIFRANDO CÓDIGO DEL CANDADO DE LA TORRE EIFFEL EN PARÍS. Por JAVI...ACERTIJO DESCIFRANDO CÓDIGO DEL CANDADO DE LA TORRE EIFFEL EN PARÍS. Por JAVI...
ACERTIJO DESCIFRANDO CÓDIGO DEL CANDADO DE LA TORRE EIFFEL EN PARÍS. Por JAVI...
JAVIER SOLIS NOYOLA
 
Escuela Sabática. El conflicto inminente.pdf
Escuela Sabática. El conflicto inminente.pdfEscuela Sabática. El conflicto inminente.pdf
Escuela Sabática. El conflicto inminente.pdf
Alejandrino Halire Ccahuana
 
Power Point: El conflicto inminente (Bosquejo)
Power Point: El conflicto inminente (Bosquejo)Power Point: El conflicto inminente (Bosquejo)
Power Point: El conflicto inminente (Bosquejo)
https://gramadal.wordpress.com/
 
Lecciones 11 Esc. Sabática. El conflicto inminente docx
Lecciones 11 Esc. Sabática. El conflicto inminente docxLecciones 11 Esc. Sabática. El conflicto inminente docx
Lecciones 11 Esc. Sabática. El conflicto inminente docx
Alejandrino Halire Ccahuana
 
Hablemos de ESI para estudiantes Cuadernillo
Hablemos de ESI para estudiantes CuadernilloHablemos de ESI para estudiantes Cuadernillo
Hablemos de ESI para estudiantes Cuadernillo
Mónica Sánchez
 
CORREOS SEGUNDO 2024 HONORIO DELGADO ESPINOZA
CORREOS SEGUNDO 2024 HONORIO DELGADO ESPINOZACORREOS SEGUNDO 2024 HONORIO DELGADO ESPINOZA
CORREOS SEGUNDO 2024 HONORIO DELGADO ESPINOZA
Sandra Mariela Ballón Aguedo
 

Último (20)

Presentación de proyecto en acuarela moderna verde.pdf
Presentación de proyecto en acuarela moderna verde.pdfPresentación de proyecto en acuarela moderna verde.pdf
Presentación de proyecto en acuarela moderna verde.pdf
 
Liturgia día del Padre del siguiente domingo.pptx
Liturgia día del Padre del siguiente domingo.pptxLiturgia día del Padre del siguiente domingo.pptx
Liturgia día del Padre del siguiente domingo.pptx
 
Evaluacion del tercer trimestre del 2023-2024
Evaluacion del tercer trimestre del 2023-2024Evaluacion del tercer trimestre del 2023-2024
Evaluacion del tercer trimestre del 2023-2024
 
3° SES COMU LUN10 CUENTO DIA DEL PADRE 933623393 PROF YESSENIA (1).docx
3° SES COMU LUN10  CUENTO DIA DEL PADRE  933623393 PROF YESSENIA (1).docx3° SES COMU LUN10  CUENTO DIA DEL PADRE  933623393 PROF YESSENIA (1).docx
3° SES COMU LUN10 CUENTO DIA DEL PADRE 933623393 PROF YESSENIA (1).docx
 
200. Efemerides junio para trabajar en periodico mural
200. Efemerides junio para trabajar en periodico mural200. Efemerides junio para trabajar en periodico mural
200. Efemerides junio para trabajar en periodico mural
 
CONCURSOS EDUCATIVOS 2024-PRESENTACIÓN ORIENTACIONES ETAPA IE (1).pptx
CONCURSOS EDUCATIVOS 2024-PRESENTACIÓN ORIENTACIONES ETAPA IE (1).pptxCONCURSOS EDUCATIVOS 2024-PRESENTACIÓN ORIENTACIONES ETAPA IE (1).pptx
CONCURSOS EDUCATIVOS 2024-PRESENTACIÓN ORIENTACIONES ETAPA IE (1).pptx
 
1° T3 Examen Zany de primer grado compl
1° T3 Examen Zany  de primer grado compl1° T3 Examen Zany  de primer grado compl
1° T3 Examen Zany de primer grado compl
 
Soluciones Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinar...
Soluciones Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinar...Soluciones Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinar...
Soluciones Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinar...
 
UrkuninaLab.pdfsadsadasddassadsadsadasdsad
UrkuninaLab.pdfsadsadasddassadsadsadasdsadUrkuninaLab.pdfsadsadasddassadsadsadasdsad
UrkuninaLab.pdfsadsadasddassadsadsadasdsad
 
Presentación simple corporativa degradado en violeta blanco.pdf
Presentación simple corporativa degradado en violeta blanco.pdfPresentación simple corporativa degradado en violeta blanco.pdf
Presentación simple corporativa degradado en violeta blanco.pdf
 
Este documento contiene, el programa completo de un acto para realizar la pro...
Este documento contiene, el programa completo de un acto para realizar la pro...Este documento contiene, el programa completo de un acto para realizar la pro...
Este documento contiene, el programa completo de un acto para realizar la pro...
 
Chatgpt para los Profesores Ccesa007.pdf
Chatgpt para los Profesores Ccesa007.pdfChatgpt para los Profesores Ccesa007.pdf
Chatgpt para los Profesores Ccesa007.pdf
 
Camus, Albert - El Extranjero.pdf
Camus, Albert -        El Extranjero.pdfCamus, Albert -        El Extranjero.pdf
Camus, Albert - El Extranjero.pdf
 
ACERTIJO DESCIFRANDO CÓDIGO DEL CANDADO DE LA TORRE EIFFEL EN PARÍS. Por JAVI...
ACERTIJO DESCIFRANDO CÓDIGO DEL CANDADO DE LA TORRE EIFFEL EN PARÍS. Por JAVI...ACERTIJO DESCIFRANDO CÓDIGO DEL CANDADO DE LA TORRE EIFFEL EN PARÍS. Por JAVI...
ACERTIJO DESCIFRANDO CÓDIGO DEL CANDADO DE LA TORRE EIFFEL EN PARÍS. Por JAVI...
 
Escuela Sabática. El conflicto inminente.pdf
Escuela Sabática. El conflicto inminente.pdfEscuela Sabática. El conflicto inminente.pdf
Escuela Sabática. El conflicto inminente.pdf
 
Power Point: El conflicto inminente (Bosquejo)
Power Point: El conflicto inminente (Bosquejo)Power Point: El conflicto inminente (Bosquejo)
Power Point: El conflicto inminente (Bosquejo)
 
A VISITA DO SENHOR BISPO .
A VISITA DO SENHOR BISPO                .A VISITA DO SENHOR BISPO                .
A VISITA DO SENHOR BISPO .
 
Lecciones 11 Esc. Sabática. El conflicto inminente docx
Lecciones 11 Esc. Sabática. El conflicto inminente docxLecciones 11 Esc. Sabática. El conflicto inminente docx
Lecciones 11 Esc. Sabática. El conflicto inminente docx
 
Hablemos de ESI para estudiantes Cuadernillo
Hablemos de ESI para estudiantes CuadernilloHablemos de ESI para estudiantes Cuadernillo
Hablemos de ESI para estudiantes Cuadernillo
 
CORREOS SEGUNDO 2024 HONORIO DELGADO ESPINOZA
CORREOS SEGUNDO 2024 HONORIO DELGADO ESPINOZACORREOS SEGUNDO 2024 HONORIO DELGADO ESPINOZA
CORREOS SEGUNDO 2024 HONORIO DELGADO ESPINOZA
 

Curso MPLAB pic 3 empezando con el programa 9p

  • 1. Empezando con el programa Primero debemos tomar algunas clases generales acerca del código. ¿Que es el código? El código será la lista de ordenes que seguirá el micro. En el pondremos todos los pasos que efectuará el mismo. El PIC es microcontrolador, capaz de seguir nuestras indicaciones. Otros componentes, son fijos, tales como compuertas, memorias, etc. Los microcontroladores son integrados capaces de seguir una secuencia programada. Esto quiere decir que se programa. ¿Como lo programamos? Nuestra Pc será la interfase Hombre-Microcontrolador. Todos los microcontroladores poseen una memoria de programa, en la cual contendrá todos los pasos a seguir. El código como en cualquier lista se empezará a leer la primera línea, luego la segunda y así sucesivamente, salvo que se especifique lo contrario. El código se escribirá en la ventana en blanco que aparece para en el MPlab. Ahora pasaremos a conocer las partes del programa. En la siguiente sección pondremos en vista un código fuente de parte de un programa, no vale la pena copiarlo y ejecutarlo ya que su fin es solo de mostrar las partes de los programas. Echemos un vistazo al siguiente código: Listado del PIC LIST p=16F84 que se utilizará
  • 2. status equ 03h portb equ 06h trisb equ 86h rp0 equ 5 rbie equ 3 Encabezado o rbif equ 0 header, son las intcon equ 0bh equivalencias loop equ 0dh loop2 equ 0eh loop3 equ 0fh loop4 equ 10h w equ 00h goto inicio Código dormir bcf intcon,rbif bsf intcon,rbie SLEEP bcf intcon,rbie bcf intcon,rbif return retardo100mS movlw d'100' Funciones (Ya movwf loop2 es parte del finretardo1 código) nop nop nop nop nop call retardo1mS movlw d'100' decfsz loop2 goto finretardo1
  • 3. return Rems: No es parte del ;****************************************** código son ;* Principal * anotaciones ;****************************************** nuestras. El compilador las pasará de largo inicio bsf status,rp0 bsf trisb,2 bcf status,rp0 Programa principal (Código) reinicia call dormir bsf portb,2
  • 4. call retardo100mS bcf portb,2 goto reinicia Sentencia de end Fin del programa No explicaremos instantáneamente todas las partes del programa pero me parece un buen momento para explicar las header, ya que estas las tendremos que tener en claro desde el principio. En el código cuando aparecía: status equ 03h portb equ 06h trisb equ 86h rp0 equ 5 Lo que queríamos decirle al programa es que cada vez que escribamos la palabra status, cuando compile el programa lo cambie por lo que le sigue a equ. Es decir que Status equivaldrá a 03h. Es decir que cada vez que queremos escribir 03 hexadecimal en el código, sera lo mismo poner status. Depende de donde pondramos la palabra status, esta correspondera a un numero o correspondera a la direccion 03 de memoria Veamos los siguientes ejemplos para redondear el tema. bsf 03h,3 bsf 03h,status bsf status, 3 (sintaxis: Bsf xxx,b) Para los que no conocen las instrucciones del asembler, BSF pone un 1 en el bit b del registro de direccion xxx (si deseas ver mas acerca de esta instruccion, visita la lista de instrucciones )
  • 5. Volviendo, en los tres ejemplos se realiza lo mismo. En la primera, el código es confuso, en el segundo tambien pues ese status no significa mucho que lleve el valor 3 pero aqui se ve que se usa como constate. en la tercera linea el codigo toma color pues se pone un 1 en el bit 3 del registro ubicado en la direccion status (03h). Por otro lado debemos tener en cuenta que pueden existir varias header con el mismo valor pero no pueden existir una header con dos valores. Volveremos a las partes del programa luego. ¿Como se programa?. Debemos ser prolijos al programar. En un primer momento solo nos debe preocupar que es lo que queremos hacer. Organizarnos en papel y lapiz marcando las partes importantes del codigo ayudara mucho. Es conveniente el uso de rems pues estos nos ayudarán en todo momento. Estos no ocupan memoria en el pic pues no se escriben en él. El uso adecuado de los nombres de funciones como así también el de las equivalencias nos ayudarán muchísimo, pues tendremos bien etiquetados todas las partes del código según el uso que les demos . Escribir un código fuente es muy fácil, escribir el primer código fuente es muy difícil. Planeemos un proyecto simple con el 16F84 Que tal si queremos simplemente encender un led ubicado en la pata uno del integrado (Ra2). Bien siempre en todo programa de PIC hecho en el MPlab deberá llevar las siguientes dos líneas: LIST p=16F84 End Ok. La primera línea le esta indicando al Mplab que listado de Microcontrolador se utilizará. Como utilizaremos el Pic 16F84 el listado deberá ser el mismo.
  • 6. La segunda línea le dirá donde termina el programa. En el medio de estas dos irá todo el código. Para encender el led nos basta solo con cuatro líneas más de código: LIST p=16F84 bsf 3,5 bcf 85,2 bcf 3,5 bsf 5,2 end Ja los pesque sin entender nada. Es fácil. La primera y ultima línea ya la hemos analizado. La segunda y la quinta son muy parecidas y la tercera y cuarta también. Veamos que significa las sentencias bcf y bsf Bcf: Bit Clear Flag Bsf: Bit Set Flag. Esto quiere decir que pondrá una bandera (Flag) o no en algún Bit. Vemos que cada línea de bxf contiene además dos números. Estos serán el primero para el registro y el segundo para el numero de bit. Es decir que la segunda línea pondrá un uno (una bandera) en el bit cinco del registro tres. De la misma manera en la tercera línea de código tendremos que pondrá en cero el bit dos del registro ochenta y cinco. Bueno pero que significado tienen los registros 3 y 85 antes nombrados. Son los registros de "estado" y "Tris A"
  • 7. Es decir que este programa lo que hace es acceder primero al registro de estado y modificar la paginación de este (Rp0 es el bit 5 del registro status), de este modo podremos acceder a la segunda columna de registros. Recordemos que el registro Tris a esta en el banco uno de los bancos de registro. Luego de eso, modificamos la entrada-salida Ra2 (Bit 2 del registro tris), colocando a esta como salida de datos. Ahora debemos volver al banco cero para poder acceder al registro PortA. Entonces modificamos la paginación del registro status volviendo el bit 5 (Rp0) a cero. Ahora si estamos preparados para escribir directamente en el puerto. Recuerden que por defecto el PIC tendrá a todas la entradas- salidas (tanto los puertos Ra y Rb), colocadas como entrada de datos, por eso es que las debemos setear antes de usar (Si uno intenta escribir una entrada el MPlab no genera ningún error, simplemente no hace nada). Esto si lo compilamos y lo simulamos, funciona, pero que pasa si venimos dentro de unos días y vemos el código nuevamente. Nos resultará difícil recordar que 03 equivale a status y que 85 equivale a Tris A. Para ello ordenemos un poco el código y llamemos a las cosas por su nombre: LIST p=16F84 Status equ 03h Rp0 equ 5 TrisA equ 85h PortA equ 05h bsf Status,Rp0 bcf TrisA,2 bcf Status,Rp0
  • 8. bsf PortA ,2 end No es verdad que esta mejor. Y que tal si les ponemos algunas anotaciones nuestras. Estas llevarán al principio el punto y coma, entonces de esta manera, el compilador no tomará en cuenta el resto de la línea: LIST p=16F84 * Header * Status equ 03h Rp0 equ 5 TrisA equ 85h PortA equ 05h * Programa Principal * bsf Status,Rp0 bcf TrisA,2 bcf Status,Rp0 bsf PortA ,2 end ;Este es el fin Fíjense como se estiro nuestro programa. En esta parte hemos explicado las sentencias "bsf", "bcf", y parte de algunos registros como el "TrisA", "PortA" y "Status". Si queres, Aqui tenes todas las instrucciones del ascembler de pic bien explicadas. Que les parece si lo simulamos para ver que es lo que pasaría en el PIC.
  • 9. Para ello pasaremos a la siguiente parte.