1Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaIntroducción
2Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaMicrocontroladores Son circuitos integrados que incorp...
3Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaSistema mínimo microprocesadorEl sistema mínimo está ba...
4Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaMicroprocesadores y microcontroladoresSistema Microproc...
5Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaTarjeta de SistemaMicroprocesador paracontrolC.I. Micro...
6Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaSistemas empotrados• Sistemas que incorporan microcontr...
7Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaSistemas empotradosEvolución Microprocesadores:Computad...
8Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaMicrocontroladores PIC•Arquitectura Harvard: buses inte...
9Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaARQUITECTURA HARVARD• El tiempo de acceso se mejora res...
10Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaMicrocontroladores PIC.Características• Eficiencia del...
11Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaFamilias de PICFamilia PIC16C5X•Encapsulados de 14, 18...
12Universidadde Oviedo6.Microcontroladores.PICTecnología Electrónica• Puertos de Entrada/Salida• Puerto Esclavo Paralelo (...
13Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaFamiliaPIC16CXXX/16FXXXMicrocontroladorPIC16F877(gama ...
14Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaPIC. Proceso de diseñoDiseño software: el micro sin un...
15Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaPIC 16F877ORGANIZACIÓN DE LAMEMORIACopyright ATE
16Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaOrganización de la memoriaEl PIC16F877 dispone de tres...
17Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaMemoria156 X 8EEPROMMemoria de programaMemoria de dato...
18Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaMemoria de programa• La información contenida en esta ...
19Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaMemoria de programa. Contadorde programa, PC. Para ac...
20Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaMemoria de programa.Contador de programa, PC.Líneas de...
21Universidadde Oviedo6.Microcontroladores.PICTecnología Electrónica• Los 8K de memoria de programadisponible están dividi...
22Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaCONTADOR DE PROGRAMA El contador de programa (PC) es ...
23Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaLa pila• La pila permite almacenar las direcciones a d...
24Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaMemoria RAM de datos• La memoria de datos está distrib...
25Universidadde Oviedo6.Microcontroladores.PICTecnología Electrónica• Sirve para almacenar todos los datos que se manejan ...
26Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaLa memoria de datosSTATUS STATUS STATUSSTATUSPORTB PORTB
27Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaMODOS DE DIRECCIONAMIENTO La memoria de datos está di...
28Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaMemoria de datos: Direccionamiento.BANCO RP1:RP00 001 ...
29Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaDireccionamiento indirecto1) SE LEE EL REGISTRO CONTEN...
30Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaRegistro de estado
31Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaRegistro option
32Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaRegistro intcon
33Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaPIE1
34Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaPIR1
35Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaCARACTERÍSTICASESPECIALES DE LOS PIC
36Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaEstas características suelen ser los aspectos que más ...
37Universidadde Oviedo6.Microcontroladores.PICTecnología Electrónica• Todos los microcontroladores PIC tienen una posición...
38Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaOSCILADOR Los PIC16F87X pueden funcionar con 4 modos ...
39Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaCICLO DEINSTRUCCIÓN Un ciclo de instrucción es el tie...
40Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaMODOSLEEP Los microcontroladores PIC pueden trabajar ...
41Universidadde Oviedo6.Microcontroladores.PICTecnología Electrónica Al entrar en modo dormido, el bit PD (STATUS<3>) se ...
42Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaRESET DELMCULos PIC16F87X tienen 6 posibles fuentes de...
43Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaPERRO GUARDIÁN O WATCHDOG El temporizador Watchdog es...
44Universidadde Oviedo6.Microcontroladores.PICTecnología Electrónica Un preescaler es un divisor de frecuencia que puede ...
45Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaLos PIC16F87XA tienen hasta 15 posibles fuentes de int...
46Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaINTERRUPCIONES Se dispone de un bit de habilitación d...
47Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaLógica de interrupciones
48Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaSALVANDO EL CONTEXTO Cuando se produce una interrupci...
49Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaSECUENCIA PARA SALVAR ELCONTEXTO DEL PROG. PCPAL. ;Pa...
50Universidadde Oviedo6.Microcontroladores.PICTecnología Electrónica ;Para recuperar los registros salvados no podemos us...
51Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaProgramación enensambladorCopyright ATE
52Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaEnsamblador El lenguaje ensamblador expresa las instr...
53Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaCódigo fuenteEstá compuesto por una sucesión de líneas...
54Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaCampo de códigoPuede estar ocupado por: Instrucciones...
55Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaDecimal .<valor>d’<valor>’D’<valor>’Hexadecimal0x<valo...
56Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaJuego de instruccionesEs un juego reducido de 35 inst...
57Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaJuego de instruccionesInstrucciones de BITNEMÓNICO DES...
58Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaInstrucciones LÓGICASNEMÓNICO DESCRIPCIÓN FLAGS AFECTA...
59Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaInstrucciones de SALTONEMÓNICO DESCRIPCIÓN FLAGS AFECT...
60Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaInstrucciones de manejo de SUBRUTINASNEMÓNICO DESCRIPC...
61Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaInstrucciones ESPECIALESNEMÓNICO DESCRIPCIÓN FLAGS AFE...
62Universidadde Oviedo6.Microcontroladores.PICTecnología Electrónica Controlan el proceso de ensamblado del programa, per...
63Universidadde Oviedo6.Microcontroladores.PICTecnología Electrónica__CONFIG <expresión> [& <expresión> & ... & <expresión...
64Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaMANEJANDO LASINSTRUCCIONESLucía Marcos
65Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaRegistros FSR más utilizados ybancos donde se ubican e...
66Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaInicializaciónLa secuencia a seguir en el inicio es:LI...
67Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaConfiguración de los puertos Los puertos (que están e...
68Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaOperaciones con literales Todas las operaciones con l...
69Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaObtener parte de un registroSe hace una AND con 1s.Eje...
70Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaComprobar si dos registros sonigualesSe utiliza la ins...
71Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaInterrupciones En las interrupciones el proceso que s...
72Universidadde Oviedo6.Microcontroladores.PICTecnología Electrónica Hay que tener en cuenta que al principio de la inter...
73Universidadde Oviedo6.Microcontroladores.PICTecnología Electrónica Es un registro que se encuentra en el banco 0 de la ...
74Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaInterrupción RBI Interrupción RBI es una interrupción...
75Universidadde Oviedo6.Microcontroladores.PICTecnología Electrónica;Escribir un programa que sume dos valores inmediatos ...
Próxima SlideShare
Cargando en…5
×

Diapos de pic

291 visualizaciones

Publicado el

0 comentarios
0 recomendaciones
Estadísticas
Notas
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

Sin descargas
Visualizaciones
Visualizaciones totales
291
En SlideShare
0
De insertados
0
Número de insertados
2
Acciones
Compartido
0
Descargas
4
Comentarios
0
Recomendaciones
0
Insertados 0
No insertados

No hay notas en la diapositiva.

Diapos de pic

  1. 1. 1Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaIntroducción
  2. 2. 2Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaMicrocontroladores Son circuitos integrados que incorporan todos losbloques funcionales de un Sistema Microprocesadoren un único encapsulado. Necesitan una tensión continua (5V, 3.3V, 2.5V,1.5V...) y un oscilador para funcionar. Interpretan (decodifican) combinaciones de bits(instrucciones) y generan señales digitales internasy/o externas. Ejecutan de manera continua una secuencia deinstrucciones (programa) que permite controlar unsistema o subsistema electrónico.
  3. 3. 3Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaSistema mínimo microprocesadorEl sistema mínimo está basado en la estructura de von Newman.Sus bloques básicos son los siguientes:El sistema mínimo está basado en la estructura de von Newman.Sus bloques básicos son los siguientes:•CPU, Central Process Unit oUnidad Central de Proceso.Formada por dos bloques:Unidad de Control y Unidad deProceso.•Memoria, donde residen lasinstrucciones del programa ysus datos.•Módulos E/S, elementosencargados de recibir y entregarinformación al exterior.CPU MEMORIA UDS. E / SRelojBus de DireccionesBus de DatosBus de ControlLos tres módulos están conectados entre sí por medio de los Buses deComunicación. Cada bus está formado por un conjunto de conductores porlos cuales se transmite la información digital.
  4. 4. 4Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaMicroprocesadores y microcontroladoresSistema Microprocesador (varios C.I. en una PCB)Microcontrolador (único C.I.)
  5. 5. 5Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaTarjeta de SistemaMicroprocesador paracontrolC.I. MicrocontroladorMicroprocesadores y microcontroladores
  6. 6. 6Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaSistemas empotrados• Sistemas que incorporan microcontroladores (o microprocesadores)para una tarea específica pero que no son “programables”directamente por el usuario• Los microcontroladores de 8 bits dominan en la mayoría de lasaplicaciones• El microcontrolador es el núcleo del sistema electrónico versátil debajo coste y reducido tamaño que es capaz de detectar las señales deentrada y generar las salidas de un equipo, sistema o instrumento• Por su reducido tamaño y coste permiten la fácil implantación desistemas de“inteligencia” distribuida a lo largo de sistemas máscomplejos• Los microcontroladores son los semiconductores más abundantesde todos en la actualidad.
  7. 7. 7Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaSistemas empotradosEvolución Microprocesadores:Computadores75 Millones Microprocesadores/añoEvolución Microcontroladores:Sistemas Empotrados2500 MillonesMicrocontroladores/año
  8. 8. 8Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaMicrocontroladores PIC•Arquitectura Harvard: buses internos separados para memoria dedatos (8 bits) y de programa (12, 14 ó 16 bits depende de la familia)•Microprocesador RISC: juego de instrucciones reducido•Estructura pipe-line: durante la ejecución de una instrucción, se estáaccediendo a la memoria de programa para traer la siguienteinstrucción a ejecutar. (salvo un salto o llamada a subpr.)•Todas las instrucciones ocupan una posición de memoria de programa•Todas las instrucciones se ejecutan en un ciclo de instrucción = 4ciclos de reloj (salvo las instrucciones de salto)•Ortogonalidad de los registros: se opera entre el registro de trabajo Wy cualquier otro registro, el resultado puede almacenarse en W
  9. 9. 9Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaARQUITECTURA HARVARD• El tiempo de acceso se mejora respecto a la arquitecturavon Neumann donde programa y datos se traen a la CPUusando el mismo bus.• La arquitectura Harvard tiene memoria de programa ymemoria de datos separadas y se accede a ellas a través debuses separados.
  10. 10. 10Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaMicrocontroladores PIC.Características• Eficiencia del código: permiten gran compactación de programas• Rapidez de ejecución: a f de 20MHz  5 millones de instr./seg.• Seguridad en acceso: Separa memoria de datos y de programa• Juego reducido de instrucciones• Compatibilidad de pines y código entre dispositivos (familias)• Gran variedad de versiones en distintos encapsulados (8 - 84 pines)• Herramientas de desarrollo software y hardware abundantes y de bajocoste
  11. 11. 11Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaFamilias de PICFamilia PIC16C5X•Encapsulados de 14, 18, 20 y 28 pines•Instrucciones de 12 bits•Juego de 33 instrucciones•Es la familia base de partida de los PICFamilia PIC16CXXX/16FXXX•Encapsulados desde 18 hasta 68 pines (DIP, SSOP, PLCC,QFP)•Instrucciones de 14 bits en Memoria de Programa•Juego de 35 instrucciones•Gran variedad de módulos integrados
  12. 12. 12Universidadde Oviedo6.Microcontroladores.PICTecnología Electrónica• Puertos de Entrada/Salida• Puerto Esclavo Paralelo (PSP)• Temporizadores/contadores (TMR0, TMR1, TMR2)• Captura / Comparación / PWM (CCP1 y CCP2)• Conversión Analógica / Digital (A/D)• Transmisor Receptor Asíncrono Síncrono Universal (USART)• Puerto Serie Síncrono (BSSP ó MSSP)• Memoria EEPROM de datos• FLASH EEPROM de programa modificable desde el códigoFamiliaPIC16CXXX/16FXXX
  13. 13. 13Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaFamiliaPIC16CXXX/16FXXXMicrocontroladorPIC16F877(gama media)MicrocontroladorPIC16F877(gama media)8K x 14368 x 8256 x 8PuertosdeE/SPuerto EsclavoParaleloTemporizadoresConversor A/DUSARTMódulos CCP SSP
  14. 14. 14Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaPIC. Proceso de diseñoDiseño software: el micro sin un programa cargado en su memoria nohace nada, cuando el micro esté grabado con un programa eficienteel conjunto empezará a funcionar• Diseño del programa y escritura del código fuente enensamblador o en C• Pruebas, verificación y modificación del código: Simulacióndel programa (puro software) o emulación dentro del circuito deaplicación (software y hardware)• Grabación del código máquina en la memoria delmicrocontroladorEdición del código,1ª depuración ysimulaciónEmulación oDepuración sobrePCBGrabación del micro
  15. 15. 15Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaPIC 16F877ORGANIZACIÓN DE LAMEMORIACopyright ATE
  16. 16. 16Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaOrganización de la memoriaEl PIC16F877 dispone de tres tipos de memoria:• Memoria de programaConsta de 8192 posiciones (8Kwords) y contiene el programa con lasinstrucciones que gobiernan la aplicación. Es no volátil.• Memoria de datos RAMGuarda las variables y datos. Está formada por registros de 8 bits. Esvolátil.• Memoria EEPROM de datosEs una pequeña área de memoria de datos de lectura y escritura novolátil que permite garantizar que determinada información estarásiempre disponible al reiniciar el programa.
  17. 17. 17Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaMemoria156 X 8EEPROMMemoria de programaMemoria de datos RAMMemoria EEPROM
  18. 18. 18Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaMemoria de programa• La información contenida en esta memoria se grabapreviamente mediante un equipo (programador ograbador).• Almacena todas las instrucciones del programa enejecución, y queda grabada de forma permanente.• En el PIC16F877 esta memoria es no volátil del tipoROM Flash y admite unas 1000 grabaciones.• Está organizada en palabras de 14 bits cada una.• Todas las instrucciones ocupan una posición dememoria de programa• A la posición 0 se accede tras un RESET y a laposición 4 tras una interrupción.
  19. 19. 19Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaMemoria de programa. Contadorde programa, PC. Para acceder a la memoria de programa de losPIC16FXXX se utiliza un registro de 13 bits que actúacomo puntero de la instrucción que se debe ejecutar enel siguiente ciclo de instrucción. Este registro es el Contador de Programa PC quepermite direccionar 8K posiciones de memoria de 14bits (recordar que cada posición corresponde a unainstrucción) por tanto, el PC es capaz de direccionar 8Kinstrucciones. Resulta fácil saber si un PIC tiene memoria deprograma suficiente para una determinada aplicación.
  20. 20. 20Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaMemoria de programa.Contador de programa, PC.Líneas de direcciones (direccionamiento)Líneas dedatosde la memoriade programaACCESO A LA MEMORIA DEPROGRAMAACCESO A LA MEMORIA DEPROGRAMA
  21. 21. 21Universidadde Oviedo6.Microcontroladores.PICTecnología Electrónica• Los 8K de memoria de programadisponible están divididos en 4 páginas de2K cada una (0h–7FFh, 800h-FFFh, 1000h-17FFh y 1800h-1FFFh). Esto se debe aque las instrucciones de salto y llamada asubprograma permiten cargar sólo 11 bitsen el PC (desplazamiento en 211= 2K)•Si se están ejecutando instruccionessecuencialmente, el contador de programapasará de una página a otra.•Para saltar entre páginas de la memoriade programa los 2 bits más altos del PCdeben modificarse. Esto se realizaescribiendo en el registro PCLATH (es unregistro situado en la memoria de datos).Memoria de programa.Contador de programa, PC.
  22. 22. 22Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaCONTADOR DE PROGRAMA El contador de programa (PC) es unregistro de 13 bits que se descompone en 2registros: PCH y PCL El byte bajo PC<0:7> se denomina PCL yestá disponible en la memoria de datos. Esun registro que se puede leer y escribirdirectamente desde el programa. El “cuasibyte” alto PC<12:8> se denominaPCH y no está disponible en la memoria dedatos. Este registro no se puede leer niescribir directamente. La escritura deberealizarse usando como registro intermedioel registro PCLATH que sí es un registro de8 bits accesible en la memoria de datos delmicrocontrolador. El contenido del registroPCLATH se transfiere a la parte alta del PCen el momento en que se escribe en elregistro PCL. También aporta dos bits alPC en los saltos o llamadas asubprogramas.Memoria de programa.Contador de programa, PC.
  23. 23. 23Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaLa pila• La pila permite almacenar las direcciones a donde deberetornar el programa cuando se finaliza una llamada a una subrutinao cuando se finaliza la ejecución de una rutina de interrupción.• Los microcontroladores de la familia PIC16 tienen una pila de 8niveles x 13 bits, que por tanto permite como máximo 8 llamadas asubrutinas (CALLs) o ejecuciones de rutinas de interrupción (salto a0004h).• El espacio de memoria para la pila no forma parte de la memoria deprograma ni de la memoria de datos que tiene el microcontrolador.Es un espacio de memoria totalmente independiente. El puntero depila no se puede leer ni escribir. La pila es gestionada por elhardware.
  24. 24. 24Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaMemoria RAM de datos• La memoria de datos está distribuida en 4 posibles bancos de 128bytes cada uno. Por tanto, la máxima cantidad de memoria disponibleen los microcontroladores PIC16 es de 512 bytes. No obstante, noestán implementadas todas las posiciones de memoria en todos losbancos.• Por ejemplo, un PIC16F876 sólo tiene implementadas 368 posiciones dememoria de datos.• A cada posición de memoria se le denominaregistro.• La memoria de datos se organiza en bancosde 128 bytes porque cuando se indica unadirección de operando fuente, sólo se puedenincluir 7 bits en la codificación: 27=128 bytes
  25. 25. 25Universidadde Oviedo6.Microcontroladores.PICTecnología Electrónica• Sirve para almacenar todos los datos que se manejan en un programa.• Se distinguen dos tipos de registro: Registros de funciones especiales: Son los primeros registros. Cadauno de ellos cumple un propósito especial en el control del PIC. Registros de propósito general: Se pueden usar para guardar datostemporales. El PIC16F877 dispone de 368.• Cuenta con cuatro bancos de memoria: Bancos 0, 1, 2 y 3. Los registros de funciones especiales aparecen de la dirección 00h a1Fh del Banco 0, de 80h a 9Fh del Banco 1, de 100h a 10F en el Banco 2y de 180h a 18Fh del Banco 3. Algunos son accesibles desde dos o másbancos. Los registros de propósito general ocupan 368 posiciones de memoria.Memoria RAM dedatos
  26. 26. 26Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaLa memoria de datosSTATUS STATUS STATUSSTATUSPORTB PORTB
  27. 27. 27Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaMODOS DE DIRECCIONAMIENTO La memoria de datos está distribuida en 4 posibles bancos de 128 bytescada uno. Existen 2 modos de direccionamiento para acceder a cualquiera de lasposiciones de la memoria de datos:Direccionamiento directoDireccionamiento indirecto Direccionamiento directo: La posición de memoria con la que se trabajaviene directamente definida en el código de la instrucción. Direccionamiento indirecto: La posición de memoria con la que se trabajaviene definida por el contenido del registro FSR (Posición 04h, 84h, 104ho 184h), es decir, el registro FSR actúa como puntero de la posición dememoria con la que se pretende operar.Memoria de datos
  28. 28. 28Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaMemoria de datos: Direccionamiento.BANCO RP1:RP00 001 012 103 11DIRECCIONAMIENTO DIRECTO
  29. 29. 29Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaDireccionamiento indirecto1) SE LEE EL REGISTRO CONTENIDO EN EL CODIGO DE LA INSTRUCCIÓN.2) SI EL REGISTRO ES DISTINTO DEL CORRESPONDIENTE A INDF (00h,80h,100h ó180h) LA INSTRUCCIÓN SE EJECUTA SOBRE EL REGISTRO INDICADO EN LAINSTRUCCIÓN COMPLEMENTADO CON LOS BITS RP1:RP0 DEL REGISTROSTATUS (DIRECCIONAMIENTO DIRECTO)3) SI EL REGISTRO CORRESPONDE A LA POSICION DE INDF (00h,80h,100h ó 180h),LA INSTRUCCIÓN SE EJECUTA SOBRE EL REGISTRO INDICADO EN ELREGISTRO FSR COMPLEMENTADO CON EL BIT IRP DEL REGISTRO STATUSBCF STATUS, IRP ; dir. Indirecto, bancos 0/1MOVLW 0x20 ; Inicializa puntero a RAMMOVWF FSR ;NEXT CLRF INDF ; limpia registro INDFINCF FSR,F ; Inc punteroBTFSS FSR,4 ; Todo limpio?GOTO NEXT ; NO, limpia siguienteCONTINUE ;: ; SI, continuaSencillo ejemplo dedireccionamiento indirectodonde se limpian lasposiciones de memoria dedatos comprendidas entrela posición 20h y la 2Fh(ambas incluidas)
  30. 30. 30Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaRegistro de estado
  31. 31. 31Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaRegistro option
  32. 32. 32Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaRegistro intcon
  33. 33. 33Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaPIE1
  34. 34. 34Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaPIR1
  35. 35. 35Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaCARACTERÍSTICASESPECIALES DE LOS PIC
  36. 36. 36Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaEstas características suelen ser los aspectos que más distinguen la CPUde estos dispositivos con otros microprocesadores.• Oscilador: más simple y con menos elementos adicionales necesarios• Resets y Watchdog: seguridad en el arranque, reinicio y “autovigilancia”• Sleep: modo de bajo consumo para aplicaciones con baterías• Interrupciones: lógica de máscaras y eventos y posición común del PTI• Protección de código: para evitar la “copia” de programas grabados• ICSP e ICSP LVP: (In-Circuit Serial Programming) programación en serieya en la tarjeta de la aplicación y a baja tensión (Low Voltage Program)• Modo depuración ICD: (In-Circuit Debugger) modo especial que permitedepurar el código pero ya con el MCU conectado con el resto del circuito.CARACTERÍSTICAS ESPECIALES DELOS PIC
  37. 37. 37Universidadde Oviedo6.Microcontroladores.PICTecnología Electrónica• Todos los microcontroladores PIC tienen una posición de memoriadenominada palabra de configuración en la que cada bit tiene unsignificado y configura las características especiales.• Los bits de configuración están fuera del espacio de memoria deprograma de usuario por lo que sólo son accesibles durante laprogramación del micro y no durante la ejecución de unprograma.Las herramientas que ofrece MICROCHIP nos dan dos alternativaspara fijar los valores de estos bits de configuración: a través delmenú Configure > Configuration_Bits del entorno MPLAB ómediante la inclusión de una directiva de configuración en elcódigo del programa.PALABRA DECONFIGURACIÓN
  38. 38. 38Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaOSCILADOR Los PIC16F87X pueden funcionar con 4 modos distintosde oscilador. El usuario puede programar dos bits deconfiguración para seleccionar uno deestos 4 modos: LP Low Power Crystal (cristal de cuarzo ó resonadorcerámico hasta 200KHz) XT Crystal/Resonator (cristal de cuarzo ó resonadorcerámico hasta 4MHz) HS High Speed Crystal/Resonator (cristal de cuarzoentre 4MHz y 20MHz) RC Resistor/Capacitor (red RC externa hasta 4MHz)
  39. 39. 39Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaCICLO DEINSTRUCCIÓN Un ciclo de instrucción es el tiempo que se tarda en ejecutaruna instrucción (salvo saltos) en el microcontrolador. En losPIC16, un ciclo de instrucción dura 4 ciclos de reloj (Q1, Q2, Q3,Q4). En una primera etapa, la instrucción es traída a la CPU. Estolleva un ciclo de instrucción. En la segunda etapa se ejecuta la instrucción. Esto lleva otro. No obstante, debido al solapamiento (pipelining) de traer lainstrucción actual y ejecución de la instrucción previa, unainstrucción se trae y otra se ejecuta cada ciclo de instrucción. Se produce un ciclo de instrucción de retardo si elresultado de ejecutar la instrucción anterior modifica elcontenido del Contador de Programa (Ej: GOTO ó CALL).
  40. 40. 40Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaMODOSLEEP Los microcontroladores PIC pueden trabajar en dos modosdistintos: Modo Normal: ejecutando las instrucciones Modo Dormido o de bajo consumo: se suspende la ejecución El consumo de un microcontrolador depende de su frecuencia detrabajo, a más frecuencia más consumo. El modo dormido supone un ahorro de consumo porque el osciladordel microcontrolador deja de oscilar, por tanto no se ejecutaninstrucciones. En este modo “dormido” se entra por software cuando se ejecuta lainstrucción SLEEP
  41. 41. 41Universidadde Oviedo6.Microcontroladores.PICTecnología Electrónica Al entrar en modo dormido, el bit PD (STATUS<3>) se pone a 0 y el bit TO(STATUS<4>) se pone a 1, estos bits indican que se entró en ese modopara conocimiento posterior en tiempo de ejecución.A continuación el oscilador deja de oscilar. Los pines asociados a PuertosdeEntrada/Salida mantienen el valor previo a la ejecución de la instrucciónSLEEP. Si está habilitado el WATCHDOG (en la palabra de configuración), sutemporizador se pondrá a cero al ejecutar la instrucción SLEEP, pero semantendrá “corriendo” y podría desbordar ya que el Watchdog tiene unoscilador RC independiente del propio del microcontrolador. El microcontrolador puede salir del modo de bajo consumo por alguno delos siguientes motivos: 1. Un RESET externo provocado en el pin MCLR. 2. Desbordamiento del WATCHDOG. 3. Interrupción provocada por algún evento de los periféricos quepueden generarlos sin la presencia del oscilador.MODO SLEEP
  42. 42. 42Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaRESET DELMCULos PIC16F87X tienen 6 posibles fuentes de RESET del MCU: Power-on Reset (POR) -> Reset de Alimentación del Microcontrolador MCLR Reset durante funcionamiento normal -> Activación del pin de Reseten modo normal MCLR Reset durante SLEEP -> Activación del pin de Reset en modo debajo consumo WDT Reset (durante funcionamiento normal) -> Desbordamiento delWatchdog en modo normal WDT Wake-up (durante SLEEP) -> Desbordamiento del Watchdog en modode bajo consumo Brown-out Reset (BOR) -> Reset por caída temporal de la alimentación La mayoría de los registros del mapa de memoria de datos no se venafectados por ningún tipo de RESET. No obstante, hay muchos otrosregistros que son “reseteados” a un valor determinado si se produce unPOR, un MCLR Reset ó WDT Reset durante funcionamiento normal, unMCLR Reset durante SLEEP ó un BOR.
  43. 43. 43Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaPERRO GUARDIÁN O WATCHDOG El temporizador Watchdog es un temporizador existente en elmicrocontrolador basado en un oscilador RC interno, independiente deloscilador del microcontrolador Este oscilador RC interno no tiene nada que ver con un posible osciladorRC externo conectado a la patilla OSC1/CLKI. Si está activo, durante el funcionamiento normal del microcontrolador, undesbordamiento (ó time-out) del Watchdog provoca un Reset delmicrocontrolador (Watchdog Timer Reset). Para que no se desborde, cada cierto tiempo y antes de que llegue al límite,se debe ejecutar una instrucción CLRWDT que “limpia” el Watchdog y lehace comenzar una nueva cuenta desde cero. Si el dispositivo está en modo dormido, un desbordamiento del watchdogprovoca que el micro despierte y continue con el funcionamiento normal(Watchdog Timer Wake-Up) con la instrucción que sigue a SLEEP. El bit TO del registro STATUS se pone a cero tras un desbordamiento delWatchdog.
  44. 44. 44Universidadde Oviedo6.Microcontroladores.PICTecnología Electrónica Un preescaler es un divisor de frecuencia que puede hacer que secuente antes el número de desbordamientos del WDT y hacer así que eltiempo que tarda en resetear al microcontrolador sea más largo. Esedivisor de frecuencia está compartido con el TMR0 y por tanto, si se usapara el TMR0 no se puede usar para el WATCHDOG y viceversa. El divisor de frecuencia del WATCHDOG viene definido por unos bits delregistro OPTION: PSA: a quién se le asigna el divisor. PS2-PS1-PS0: cuál es el factor de división de la frecuencia:000: 1:2 para TMR0 / 1:1 para WDT. 100: 1:32 para TMR0 / 1:16 para WDT.001: 1:4 para TMR0/ 1:2 para WDT. 101: 1:64 para TMR0 / 1:32 para WDT.010: 1:8 para TMR0 / 1:4 para WDT. 110: 1:128 para TMR0 / 1:64 para WDT.011: 1:16 para TMR0 / 1:8 para WDT. 111: 1:256 para TMR0 / 1:128 para WDT.PERRO GUARDIÁN O WATCHDOG
  45. 45. 45Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaLos PIC16F87XA tienen hasta 15 posibles fuentes de interrupción, entre otras: Escritura o lectura del puerto esclavo paralelo (PSPIF) Desbordamiento del TMR0 Desbordamiento del TMR1 Desbordamiento del TMR2 Captura de un módulo CCP (CCPxIF). Comparacion del modulo CCP en modo “disparo de evento especial”. Módulo SSP al detectar un bit de START ó STOP Módulo SSP al transmitir o recibir en modo esclavo Módulo USART al RX o TX (modo síncrono) (RCIF ó TXIF). Al finalizar una conversión A/D Al completar una escritura en EEPROM (EEIF). Al modificarse el estado de salida de alguno de los comparadores (CMIF). Interrupción externa por flanco en el pin RB0/INT (INTF). Interrupción por cambio en los valores de los pines RB4 a RB7 del PORTB(RBIF).INTERRUPCIONES
  46. 46. 46Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaINTERRUPCIONES Se dispone de un bit de habilitación de interrupciones global GIE(INTCON<7>) que permite deshabilitar todas las interrupciones (si está a 0).Cuando el bit GIE está a 1, si una interrupción tiene su flag a 1 y sus bits dehabilitación a 1, el microcontrolador terminará la instrucción que se estáejecutando en ese instante y, a continuación, pasará a ejecutar la posición 4de la memoria de programa que corresponde a la posición del vector deinterrupción y que es el mismo para todas las interrupciones. Las fuentes deinterrupción pueden deshabilitarse individualmente utilizando sus máscaras obits de habilitación (bits acabados en “E”). El bit GIE se pone a 0 tras un RESET. Por tanto, al principio lasinterrupciones están desactivadas. Al producirse el salto a la rutina o programa de tratamiento de la interrupción,el bit GIE se pone a 0 deshabilitando el resto de interrupciones, salvo quepor software se vuelva a poner a 1 ese bit GIE. El retorno del programa detratamiento de interrupción (RETFIE) coloca en la máscara global GIE elvalor 1, además de recuperar el PC de la pila hardware. Los bits de flags pueden ponerse a 1 independientemente de que sus bits dehabilitación estén o no a 1, ya que indican eventos.
  47. 47. 47Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaLógica de interrupciones
  48. 48. 48Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaSALVANDO EL CONTEXTO Cuando se produce una interrupción sólo se guarda en la pila hardwareinterna el valor del PC. Normalmente, se deberán salvar algunos otros registros para no perder sucontenido al regresar al programa principal y tras haber pasado por la rutinade interrupción, máxime cuando se ignora cuándo se va a producir el saltoa ese programa de tratamiento de la interrupción (PTI) desde el programaprincipal. Estos registros son al menos el W y el STATUS También puede resultar interesante guardar el registro PCLATH,especialmentesi en la rutina de interrupción se cambia de página dememoria de programa. Como no hay pila en RAM, hay que reservar posiciones de memoria enRAM que habitualmente denominaremos W_TEMP, STATUS_TEMP yPCLATH_TEMP donde se guardan los valores de W, STATUS y PCLATHal entrar en la rutina de interrupción para luego recuperarlos al salir.
  49. 49. 49Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaSECUENCIA PARA SALVAR ELCONTEXTO DEL PROG. PCPAL. ;Para salvar el contexto no podemos emplear la instrucciónMOVF ;ya que afecta al registro STATUS (al bit Z), para evitarlo;empleamos la instrucción SWAPFmovwf W_tmp ;Salvamos el registro Wswapf STATUS,W ; y el registro STATUS "girado" en Wbcf STATUS,RP0 ;Aseguramos el paso al banco 0bcf STATUS,RP1 ;poniendo a 0 los dos bits de selección de;bancomovwf STATUS_tmp ;Guardamos en el banco 0 STATUS giradomovf PCLATH,W ;Salvamos también PCLATH en Wmovwf PCLATH_tmp ;y ahora en una posición auxiliar del;banco 0Siempre se debe hacer así o de una manera similar (si se guardan másregistros) al principio de un PTI
  50. 50. 50Universidadde Oviedo6.Microcontroladores.PICTecnología Electrónica ;Para recuperar los registros salvados no podemos usarMOVF ;porque modifica a STATUS, para evitarlo usamos lainstrucción ;SWAPFmovf PCLATH_tmp,W ;Recuperamos PCLATHmovwf PCLATH ;directamenteswapf STATUS_tmp,W ;Recuperamos el registro STATUS con;un SWAPFmovwf STATUS ;ahora estamos en el banco de partidaswapf W_tmp,F ;Recuperamos también el W con dos;SWAPFswapf W_tmp,W ;para evitar la instrucción MOVFretfie ;Ahora ya podemos retornar del PTISECUENCIA PARA RECUPERAR ELCONTEXTO DEL PROG. PCPAL.
  51. 51. 51Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaProgramación enensambladorCopyright ATE
  52. 52. 52Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaEnsamblador El lenguaje ensamblador expresa las instrucciones de una forma másnatural al hombre que el lenguaje máquina (0 y 1) a la vez que muycercana al microcontrolador, ya que cada una de esas instruccionesse corresponde con otra en código máquina. El lenguaje ensamblador trabaja con nemónicos, que son grupos decaracteres alfanuméricos que simbolizan las órdenes o tareas arealizar. La traducción de los nemónicos a código máquina la realiza unprograma ensamblador: MPASM.El programa escrito en lenguaje ensamblador se denomina códigofuente (*.asm). El programa ensamblador proporciona a partir de estefichero el correspondiente código máquina, que suele tener laextensión *.hex.
  53. 53. 53Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaCódigo fuenteEstá compuesto por una sucesión de líneas de texto. Cada línea puede estructurarse en hasta cuatro campos o columnasseparados por uno o más espacios o tabulaciones entre sí. Campo de etiquetas. Expresiones alfanuméricas escogidas por elusuario para identificar una determinada línea. Todas las etiquetastienen asignado el valor de la posición de memoria en la que se encuentrael código al que acompañan. Campo de código. Corresponde al nemónico de una instrucción, de unadirectiva o de una llamada a macro. Campo de operandos y datos. Contiene los operandos que precisa elnemónico utilizado. Según el código puede haber dos, uno o ningúnoperando. Campo de comentarios. Dentro de una línea, todo lo que se encuentrea continuación de un punto y coma (;) será ignorado por el programaensamblador y considerado como comentario.
  54. 54. 54Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaCampo de códigoPuede estar ocupado por: Instrucciones: son aquellos nemónicos que son convertidos por elensamblador en código máquina que puede ejecutar elmicrocontrolador. Cada nemónico se convierte en una palabra en lamemoria de programa. Directivas: Pseudoinstrucciones que controlan el proceso de ensambladodel programa, pero no son parte del código. Son indicaciones al programaensamblador de cómo tiene que generar el código máquina. Macros: Secuencia de nemónicos que pueden insertarse en el códigofuente del ensamblador de una manera abreviada mediante una simplellamada.
  55. 55. 55Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaDecimal .<valor>d’<valor>’D’<valor>’Hexadecimal0x<valor>h’<valor>’H’<valor>’<valor>h .<valor>HOctal o’<valor>’O’<valor>’Binario b’<valor>’B’<valor>’ASCII ‘<carácter>’a’<carácter>’A’<carácter>’Cadena “<cadena>”TIPO SINTAXISLas constantes hexadecimales que empiecen por una letra deben ir precedidas de uncero para no confundirlas con una etiqueta.Campo de operandos y datos
  56. 56. 56Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaJuego de instruccionesEs un juego reducido de 35 instrucciones muy simples y rápidas.La mayoría de las instrucciones se ejecuta en 4 ciclos de reloj; lossaltos se ejecutan en 8.Todas las instrucciones tienen la misma longitud: 14 bits.Instrucciones de CARGANEMÓNICO DESCRIPCIÓN FLAGS AFECTADOSclrf f 00 → (f) Zclrw 00 → (W) Zmovf f,d (f) → (destino) Zmovlw k k → (W) Ningunomovwf f (W) → (f) Ninguno
  57. 57. 57Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaJuego de instruccionesInstrucciones de BITNEMÓNICO DESCRIPCIÓN FLAGS AFECTADOSbcf f,b Pone a 0 el bit ‘b’ del registro ‘f’ Ningunobsf f,b Pone a 1 el bit ‘b’ del registro ‘f’ NingunoInstrucciones ARITMÉTICASNEMÓNICO DESCRIPCIÓN FLAGS AFECTADOSaddlw k (W) + k → (W) C – DC - Zaddwf f,d (W) + (f) → (destino) C – DC - Zdecf f,d (f) - 1 → (destino) Zincf f,d (f) + 1 → (destino) Zsublw k K - (W) → (W) C – DC - Zsubwf f,d (f) - (W) → (destino) C – DC - Z
  58. 58. 58Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaInstrucciones LÓGICASNEMÓNICO DESCRIPCIÓN FLAGS AFECTADOSandlw k (W) AND k → (W) Zandwf f,d (W) AND (f) → (destino) Zcomf f,d (/f) → (destino) Ziorlw k (W) OR k → (W) Ziorwf f,d (W) OR (f) → (destino) Zrlf f,d Rota (f) a izquierda → (destino) Crrf f,d Rota (f) a derecha → (destino) Cswap f,d Intercambia nibbles (f) → (destino) Ningunoxorlw k (W) XOR k → (W) Zxorwf f,d (W) XOR (f) → (destino) ZJuego de instrucciones
  59. 59. 59Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaInstrucciones de SALTONEMÓNICO DESCRIPCIÓN FLAGS AFECTADOSbtfsc f,b Salta si el bit ‘b’ de ‘f’ es 0 Ningunobtfss f,b Salta si el bit ‘b’ de ‘f’ es 1 Ningunodecfsz f,d (f) - 1 → (destino) y salta si es 0 Ningunoincfsz f,d (f) + 1 → (destino) y salta si es 0 Ningunogoto k Salta a la dirección ‘k’ NingunoJuego de instrucciones
  60. 60. 60Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaInstrucciones de manejo de SUBRUTINASNEMÓNICO DESCRIPCIÓN FLAGS AFECTADOScall k Llamada a subrutina Ningunoretfie Retorno de una interrupción Ningunoretlw k Retorno con un literal en (W) Ningunoreturn Retorno de una subrutina NingunoJuego de instrucciones
  61. 61. 61Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaInstrucciones ESPECIALESNEMÓNICO DESCRIPCIÓN FLAGS AFECTADOSclrwdt Borra Timer del Watchdog /TO - /PDnop No operación Ningunosleep Entra en modo de bajo consumo /TO - /PDJuego de instrucciones
  62. 62. 62Universidadde Oviedo6.Microcontroladores.PICTecnología Electrónica Controlan el proceso de ensamblado del programa, pero no son partedel mismo (también se conocen como pseudoinstrucciones). Hay más de 50 directivas reconocidas por MPASM. A continuaciónveremos algunas de las más utilizadas. ENDEs la única directiva obligatoria. Indica al ensamblador dónde debedetener el proceso. Debe colocarse en la última línea del programa. <etiqueta> EQU <expresión>El valor <expresión> es asignado a <etiqueta>. Estas directivas sesuelen colocar al principio del programa y habitualmente se usanpara definir constantes y direcciones de memoria. [<etiqueta>] ORG <expresión>Las instrucciones del código fuente que siguen a esta directiva seensamblan a partir de la posición indicada por <expresión>.Directivas
  63. 63. 63Universidadde Oviedo6.Microcontroladores.PICTecnología Electrónica__CONFIG <expresión> [& <expresión> & ... & <expresión>]Permite indicar la configuración elegida para la grabación del PIC.Ejemplo: __CONFIG _CP_OFF & _WDT_OFF & _XT_OSCLIST P=16F877Indica el tipo de microcontrolador utilizado.INCLUDE <p16F877.inc> o INCLUDE “p16F877.inc”Incluye en el programa un fichero donde se definen las etiquetascon las que se nombra a los diferentes registros y sus bits. Estefichero se encuentra en el directorio principal del programaensamblador. Puede usarse esta directiva para incluir cualquierotro fichero (El fichero de inclusión no puede terminar conuna directiva END).Directivas
  64. 64. 64Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaMANEJANDO LASINSTRUCCIONESLucía Marcos
  65. 65. 65Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaRegistros FSR más utilizados ybancos donde se ubican en laRAMBanco 0: PORTA PORTB PORTC PORTD PORTE TMR0 STATUS (en los dos bancos) INTCON (en los dos bancos) PCLATH (en los dos bancos) Banco 1: TRISA TRISB TRISC TRISD TRISE OPTION_REGDespués del RESET de encendido, estamos en el banco 0.La selección de banco se realiza mediante los bits RP0 y RP1que se encuentran en el registro STATUS
  66. 66. 66Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaInicializaciónLa secuencia a seguir en el inicio es:LIST P=16F877 ;Tipo de procesadorinclude P16F877.INC ;incluye fichero de símbolos y etiquetas;se pueden incluir otros ficheros;aquí reservamos las posiciones de memoria de datos que necesitemos a partir;de la posición 0x20org 0x00 ;inicio en el vector de Reset (posición 0 de la;memoria de programa)goto Inicio ;va a la primera instrucción del programa; si se van a producir interrupciones, debemos tener en cuenta que el vector de; interrupción se encuentra en la posición 4 de la memoria de programa, por lo; que habrá que añadir:org 0x04 ; vector de interrupcióngoto trata_interrupción ; va al programa de tratamiento de la;interrupción
  67. 67. 67Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaConfiguración de los puertos Los puertos (que están en el banco 0) tienen unos registrosasociados, TRIS (en el banco 1) que permiten configurar cada unade sus patillas como entrada o salida. Después del RESET de encendido, estos registros TRIS tienentodos sus bits a 1 (los puertos correspondientes están configuradoscomo entradas).Ejemplo: Queremos que los bits del puerto A <7:5> sean salidas y losbits <4:0> sean entradasbsf STATUS,RP0 ;pasamos al banco 1movlw b00011111 ;configuramos PORTA<7:5> comomovwf TRISA ;salidas y PORTA<4:0> como entradas,;aunque esto último no es necesario.
  68. 68. 68Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaOperaciones con literales Todas las operaciones con literales se realizan con el registro W. Para cargar, sumar, etc. un registro F con un literal se debe haceren dos pasos: 1º- Se realiza la operación con W 2º- Se carga W en el registro F.Ejemplo 1: cargar el registro OPTION_REG con 0000 0110.movlw b00000110 ;cargamos el registro option_reg...movwf OPTION_REG ;...con el valor indicadoEjemplo 2: sumar dos valores inmediatos (p.e. los decimales 12 y 7)movlw 0x0C ;carga el 1er. sumando en Waddlw 0x07 ;le sumamos el 2º sumandomovwf Resultado ;guardamos el resultado;antes hemos reservado una posición de memoria RAM para el resultado, a partir de la0X20 (banco 0 en este caso) con la directiva EQU o bien con la directiva CBLOK.; con EQU:Resultado EQU 0x20;con CBLOK:CBLOK 0x20ResultadoENDC
  69. 69. 69Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaObtener parte de un registroSe hace una AND con 1s.Ejemplo :Queremos quedarnos con la parte alta del registro REG.MOVF REG, W ;pasamos el contenido del registro a WANDLW 0xF0 ;hacemos la AND con F0 para obtener la partealta ;de REG, el resultado queda en WOtra forma:MOVLW 0xF0 ;cargamos W con el literal F0ANDWF REG, 0 ;hacemos la AND entre W y REG y dejamos el;resultado en W
  70. 70. 70Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaComprobar si dos registros sonigualesSe utiliza la instrucción XORWF, por lo que se hace la XOR entre W y uno de losregistros.Ejemplo: saber si el registro CONTADOR que es un registro que se inicializa a 0 y seva incrementando es igual al registro FIN, en cuyo caso se termina elprograma; si no, incrementamos CONTADOR.MOVF CONTADOR,W ; cargamos W con el contenido de CONTADORXORWF FIN ; hacemos la XOR entre W y FINBTFSS STATUS,Z ; miramos si el resultado ha sido cero;INCF CONTADOR ; si no, se incrementa CONTADORGOTO END ; si sí, salta la siguiente instrucción y va a GOTO ENDOtra opción es restar ambos registros utilizando el registro W; en este ejemplo sólo nosinteresa saber si son o no son iguales.MOVF CONTADOR, W ;cargamos W con el valor de CONTADORSUBWF FIN, W ; restamos FIN-CONTADOR y lo dejamos en WBTFSC STATUS,Z ; si Z=0, salta ya que no son igualesGOTO Iguales ; sí, son igualesGOTO NoIguales ; no son igualesEn este caso hemos utilizado la instrucción BTFSC.Si la comparación es entre un registro y un literal, se cargaría W con elcontenido del registro y se haría la XOR entre W y el literal con la instrucciónXORLW
  71. 71. 71Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaInterrupciones En las interrupciones el proceso que se sigue es el que muestra lafigura. Cuando se origina una interrupción el bit GIE (habilitación global deinterrupciones) del registro INTCON es puesto a 0, lo que impidecualquier otra interrupción.El bit de flag correspondiente sepone a 1 y debe borrarse porsoftware.La habilitación de una deter-minada interrupción exigeponer a 1 el bit GIE y el corres-pondiente bit de habilitaciónde la interrupción particular;ambos se encuentran en elregistro INTCON.La instrucción RETFIE vuelvea poner GIE a 1.El registro INTCON estáen el banco 0 y el 1
  72. 72. 72Universidadde Oviedo6.Microcontroladores.PICTecnología Electrónica Hay que tener en cuenta que al principio de la interrupción hay que salvaguardar los registros Wy STATUS, a veces también el PCLATH.PTI movwf W_tmp ;Salvamos el registro Wswapf STATUS,W ; y el registro STATUS "girado" en Wbcf STATUS,RP0 ;Aseguramos el paso al banco 0bcf STATUS,RP1 ;poniendo a 0 los dos bits de selección de bancomovwf STATUS_tmp ;Guardamos en el banco 0 STATUS giradomovf PCLATH,W ;Salvamos también PCLATH en Wmovwf PCLATH_tmp ;y ahora en una posición auxiliar del banco 0 Al final del PTI, antes de RETFIE hay que recuperarlos.movf PCLATH_tmp,W ;Recuperamos PCLATH directamentemovwf PCLATHswapf STATUS_tmp,W ;Recuperamos el registro STATUS con unSWAPFmovwf STATUS ;ahora estamos en el banco de partidaswapf W_tmp,F ;Recuperamos también el W con dos SWAPFswapf W_tmp,W ;para evitar la instrucción MOVF retfieInterrupciones
  73. 73. 73Universidadde Oviedo6.Microcontroladores.PICTecnología Electrónica Es un registro que se encuentra en el banco 0 de la RAM. Es un temporizador que se incrementa con cada pulso del osciladorinterno o con un reloj externo que se selecciona mediante el bit T0CS delregistro OPTION_REG que se encuentra en el banco 1: T0CS =0 para elreloj interno. También tiene la posibilidad de aplicarle un divisor de frecuencia(prescaler) de 8 bits que comparte con el WDT. El bit PSA (OPTION_REG<3>) a 0 le asigna el prescaler al TMR0 y los bits PS2-PS0 seleccionanpor cuánto se divide la frecuencia.Se puede leer y escribir en TMR0 y cuando se desborda puede produciruna interrupción.Ejemplo: Se pretende que cada 200ms. se produzca un determinadoevento por interrupción del TMR0 utilizando el oscilador interno de 4 MHzy sabiendo que cada ciclo de instrucción dura 4 ciclos del oscilador.Como un solo desbordamiento del TMR0 sólo permite una temporizaciónde aproximadamente 65ms tendremos que hacer que se desborde variasveces. Vamos a hacer que se desborde 20 veces para lo que tenemosque precargar el TMR0 para que se desborde a los 10msTMR0temp TMR0 = [(256 – carga) · PS + 2] · TinstrElegimos PS=128Carga = 180Hay que cargar el reg. OPTION_REG con el binario: 00000110Para permitir las interrupciones el registro INTCON debe cargarse conelbinario 10100000. (Mirar la configuración de ambos registros)
  74. 74. 74Universidadde Oviedo6.Microcontroladores.PICTecnología ElectrónicaInterrupción RBI Interrupción RBI es una interrupción producida por el cambio de estado enalguna de las líneas RB4, RB5, RB6 o RB7. Hay que configurar esas líneas comoentradas y cargar el INTCON para permitir la interrupción.Ejemplo: Vamos a utilizar la interrupción RBI para encender unos LEDsconectados a los bits RB0, RB1, RB2 y RB3BSF STATUS, RP0 ;pasamos al banco 1 para configurar el puerto BMOVLW 0XF0 ;RB<4,7> entradas, RB<0,3> salidasMOVWF TRISBBCF STATUS, RP0 ;volvemos al banco 0CLRF PORTB ;para inicializar el puerto (LEDs apagados)MOVLW b’10001000 ;habilitamos las interrupciones generalesMOVWF INTCON ;y la particular poniendo GIE y RBIE a 1Como en todas las interrupciones al principio del programa hay que poner:ORG 0x04GOTO PTIAl principio del PTI hay que salvar los registros W y STATUS y al final del mismohayque recuperarlos y borrar el flag RBIF
  75. 75. 75Universidadde Oviedo6.Microcontroladores.PICTecnología Electrónica;Escribir un programa que sume dos valores inmediatos (p.e. los decimales 12 y7)List p=16F877 ;tipo de procesadorinclude P16F877.INC ;incluye fichero de símbolos y;etiquetasResultado equ 0x20 ;para almacenar el resultadoorg 0x00 ;vector de Resetgoto Inicioorg 0x05 ;saltamos el vector de;interrupciónInicio movlw 0x0C ;carga el 1er. sumando en Waddlw 0x07 ;le sumamos el 2º sumandomovwf Resultado ;guardamos el resultadoStop nop ;ponemos punto de paradaend ;fin del programa fuenteSuma de valores inmediatos

×