MICROPROCESADORES Y MICROCONTROLADORES FUNDAMENTOS TEÓRICOS - EJEMPLOS DE APLICACIÓN - 09/01/2009 Ing. José A. Picón - www.joseapicon.com.ve - (0416) 9519990 Informes de Laboratorio y Entregar g informe con el siguiente g contenido: ◦ ◦ ◦ ◦ ◦ ◦ ◦ 09/01/2009 Objetivo. j Base Teórica (necesaria para la práctica) g de bloques. q Diagramas Diagramas circuitales. Código de los programas. Conclusiones y recomendaciones. Bibliografía. Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO Hoja de Datos del PIC 18F4550 y Se sugiere imprimir o fotocopiar las siguientes páginas numeradas según el documento PDF de la hoja de datos del microcontrolador PIC 18F4550: 18F4550 3-6, 9-23, 45-57, 59-79, 81-89, 9195 99 95, 99-141, 141 239-260, 239 260 261-270, 261 270 287287 308, 309-358. y Revise el contenido antes de copiarlo por si considera que no necesita algo en particular. 09/01/2009 Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO Memoria de Programas (Flash) Memoria tipo p Flash. y 32KB de espacio, con capacidad para 16384 instrucciones. y Se S di direcciona i usando d ell Contador de Programa de 21 bits. y Pila de 31 niveles. y 09/01/2009 Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO Memoria de Programas (Flash) Puede ser leída, escrita y borrada. y La lectura se efectúa sobre un byte en cadaa operación. ca ope ac ó . y La escritura se efectua en bloques de 8 bytes. bytes y El borrado se hace en bloques de 64 bytes. bytes y 09/01/2009 Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO Memoria de Programas (Flash) y Contador de Programa (PC) ◦ Se almacena el valor de este puntero en los registros: PCU, PCH y PCL. ◦ Las operaciones de lectura y escritura de estos registros se hacen por medio de los registros PCLATU PCLATH, PCLATU, PCLATH PCLATL respectivamente respectivamente. y Pila (stack) ◦ Bloque de memoria RAM de 31 palabras de 21 bits, almacena temporalmente el valor del PC cuando se llama a subrutinas o interrupciones. p 09/01/2009 Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO Memoria de Programas (Flash) y Operaciones p de Lectura y Escritura de Tabla. ◦ Hayy dos instrucciones que q ppermiten mover bytes entre la memoria de datos y la de programa, son: TBLRD y TBLWT. ◦ Para las operaciones de lectura, escritura y borrado se usan los registros EECON1 y EECON2 ((usados d también bié en ell acceso a memoria EEPROM) 09/01/2009 Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO Memoria de Programas (Flash) 09/01/2009 Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO Memoria de Programas (Flash) 09/01/2009 Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO Set de Instrucciones (PIC 18F) y Hayy cuatro tipos p de instrucciones: ◦ ◦ ◦ ◦ 09/01/2009 Operaciones p orientadas al byte. y Operaciones orientadas al bit. p con literales. Operaciones Operaciones de control. Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO Set de Instrucciones (PIC 18F) y Operaciones p orientadas al byte. y ◦ Tienen generalmente 3 operandos: x El registro origen, especificado por “f”. x El registro destino para almacenar el resultado, especificado por “d”. x El acceso a memoria, i especificado ifi d por ““a”. ” ◦ Ejemplo: x movwff 09/01/2009 REG (mueve ( ell valor l de d W a REG) Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO Set de Instrucciones (PIC 18F) y Operaciones p orientadas al bit. ◦ Todas las instrucciones orientadas al bit tienen 3 operandos: x El registro origen, especificado por “f”. x El bit dentro del registro origen, especificado por “b”. “b” x El acceso a memoria, especificado por “a”. ◦ Ejemplo: x bsf 09/01/2009 REG, BIT, a (coloca a 1 el bit BIT de REG) Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO Set de Instrucciones (PIC 18F) y Operaciones p con literales. ◦ Pueden usar los siguientes operandos: x Un valor literal para ser cargado dentro de un registro RAM, especificado por “k”. x El registro FSR deseado para cargar el valor literal, especificado por “f” f . x No requiere operando, especificado por “-”. ◦ Ejemplo: x movlw 09/01/2009 0x2E (Coloca en W el literal 2Eh) Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO Set de Instrucciones (PIC 18F) y Operaciones p de control. ◦ Tienen generalmente 3 operandos: x El registro origen, especificado por “f”. x El registro destino para almacenar el resultado, especificado por “d”. x El acceso a memoria, i especificado ifi d por ““a”. ” ◦ Ejemplo: x Call C ll 09/01/2009 SUBRUTINA (llamado (ll d a di dirección ió SUBRUTINA, PILA(31)=PC) Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO Set de Instrucciones (PIC 18F) 09/01/2009 Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO Set de Instrucciones (PIC 18F) 09/01/2009 Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO Set de Instrucciones (PIC 18F) y Ejemplo j p de uso de algunas g instrucciones: BTG Cambio de Bit en f Sintaxis: BTG f, b {,a} Operandos: 0 ≤ f ≤ 255 0 ≤ b < 7 a [ א0,1] Operación: (f<b>) → f<b> Registro Status: Sin cambio Codificación: 0111 bbba ffff ffff 09/01/2009 Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO Set de Instrucciones (PIC 18F) y Ejemplo j p de uso de algunas g instrucciones: BTG Cambio de Bit en f Descripción: Se invierte el Bit ‘b’ en la posición de memoria ‘f’. Si ‘a’ es ‘0’, se selecciona el Access Bank. Si ‘a’ es ‘1’, se usa el BSR para seleccionar el banco GPR (por defecto). Si ‘a’ es ‘0’ y el set de instrucciones extendido está habilitado, esta instrucción opera en el modo Indexed Literal Offset Addressing g siempre p que f ≤ q 95 (5Fh). 09/01/2009 Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO Set de Instrucciones (PIC 18F) y Ejemplo j p de uso de algunas g instrucciones: BTG Cambio de Bit en f Ejemplo: BTG PORTC, 4, 0 Antes de la instrucción: PORTC = 0111 0101 [75h] Antes de la instrucción: ó PORTC = 0110 0101 [65h] 09/01/2009 Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO Set de Instrucciones (PIC 18F) y Ejemplo j p de uso de algunas g instrucciones: INCF Incrementa f Sintaxis: INCF f {,d {,a}} Operandos: 0 ≤ f ≤ 255 d [ א0,1] [0 1] a [ א0,1] Operación: (f) + 1 → dest Registro Status: C, DC, N, OV, Z Codificación: 0010 10da ffff ffff 09/01/2009 Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO Set de Instrucciones (PIC 18F) y Ejemplo j p de uso de algunas g instrucciones: INCF Incrementa f Descripción: Incrementa el contenido del registro ‘f’. Si ‘d’ es ‘0’, el resultado se guarda en W. Si ‘d’ d es ‘1’, el resultado se devuelve al registro ‘f’ (por defecto). Si ‘a’ es ‘0’, ‘0’ se selecciona el Access Bank. Si ‘a’ es ‘1’, se usa el BSR para seleccionar el banco GPR (por defecto). 09/01/2009 Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO Set de Instrucciones (PIC 18F) y Ejemplo j p de uso de algunas g instrucciones: INCF Incrementa f Ejemplo: INCF CNT, 1, 0 Antes de la instrucción: CNT = FFh; Z = 0; C = ?; DC = ? Después é de la instrucción: ó CNT = 00h; Z = 1; C = 1; DC = 1 09/01/2009 Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO Programación en Assembler y y y El lenguaje Assembler (lenguaje ensamblador) es un lenguaje de programación de bajo nivel. Se le llama lenguaje máquina debido a que es el lenguaje de programación de más bajo nivel usado para programar los microprocesadores o microcontroladores. microcontroladores Las instrucciones vistas anteriormente representan el lenguaje ensamblador de los microcontroladores PIC. 09/01/2009 Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO Ejemplo de Programación y A continuación se muestra un diagrama de conexiones sencillo para luego crear programa ejemplo a partir de él: Puerto B P1 D1 P2 D2 P3 PIC 18F4550 D8 Puerto D D9 D10 09/01/2009 Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO Ejemplo de Programación - 1 ;******************************************************************** ;** DECLARACIONES INICIALES ;******************************************************************** list p=18f4550 #include p18f4550.inc ;Se declara el microcontrolador a usar ;Se agrega al .asm el archivo de cabecera ;******************************************************************** ;** CONFIGURACION INICIAL DEL MICROCONTROLADOR (ejemplo) ;******************************************************************** CONFIG CONFIG CONFIG CONFIG CO G FOSC = HS BOR = OFF WDT = OFF MCLRE C = O ON ;Cristal de alta frecuencia (20MHZ) ;Reset por bajo voltaje ;Reset por WATCHDOG ;MCLR ; C como co o MCLR, C , no o co como o e entrada t ada RE3 3 ... continúa 09/01/2009 Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO Ejemplo de Programación - 2 ;******************************************************************** ;** DECLARACION DE VARIABLES ;******************************************************************** PULSADOR1 equ RB0 ;Agrega etiqueta a pin 0 de puerto B PULSADOR2 equ RB1 ;Agrega etiqueta a pin 1 de puerto B CONTADOR equ 0x01 0 01 ;Agrega A etiqueta ti t a posicion i i F01 de d mem RETCONT0 equ 0x02 RETCONT1 equ 0x03 ;Etiquetas de mem para contador en RETCONT2 equ 0x04 ; la rutina de retardo de 1 seg. ;******************************************************************** ;** VECTORES DE INTERRUPCION ; ;******************************************************************** org 0x00 ;Vector de RESET nop ;No hay operación durante 1 ciclo maquina goto INICIO ;Salto a rutina de inicio del programa ... continúa 09/01/2009 Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO Ejemplo de Programación - 3 ;******************************************************************** ;** MAIN() - RUTINA PRINCIPAL DEL PROGRAMA ;******************************************************************** INICIO clrf PORTB ;Coloca cada pin del puerto B a cero clrf l f LATB ;Coloca C l el l registro i t LATB a cero clrf PORTD clrf LATD movlw b'00000111‘ movwf TRISB ;0x07 ;Habilita 3 bits del puerto B como entradas movlw 0x00 movwf TRISD ;Habilita todo el puerto D como salidas OTRAVEZ movlw .9 ;Repite 10 veces la secuencia movwf CONTADOR ;Se coloca a 9 pero se ejecuta 10 veces el ciclo ... continúa 09/01/2009 Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO Ejemplo de Programación - 4 CICLO movlw 0xAA ;Coloca b’10101010’ en acumulador movwf PORTD ;Enciende leds (uno si y uno no) call RETARDO ;Retardo de 1 segundo movlw 0x55 ;Coloca b’01010101’ en acumulador movwf f PORTD ;Rota R t el l encendido did de d los l l d en puerto leds t D call RETARDO decfsz CONTADOR, 1 ;Decrementa CONTADOR y salta si es cero goto CICLO ;Salta a CICLO movlw 0x00 movwf PORTD ;Apaga todos los leds en puerto D INFINITO btfss PORTB, PORTB RB2 ;Verifica estado del PULSADOR 3 goto INFINITO ;Si no esta presionado salta a INFINITO goto OTRAVEZ ;Si esta presionado salta a OTRAVEZ ... continúa 09/01/2009 Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO Ejemplo de Programación - 5 ;******************************************************************** ;** RETARDO - RUTINA PARA RETARDO DE 1 SEGUNDO ;******************************************************************** ******************************************************************** RETARDO movlw .165 ; 1 set numero de repeticiones (C) movwf RETCONT0 ; 1 | SALTO0 movlw l .41 41 ; 1 set t numero de d repeticiones ti i (B) movwf RETCONT1 ; 1 | SALTO1 movlw .147 ; 1 set numero de repeticiones (A) movwf RETCONT2 ; 1 | SALTO2 2 clrwdt ; 1 clear watchdog (solo para rellenar) clrwdt ; 1 ciclo delay (solo para rellenar) decfsz RETCONT2, 1 ; 1 + (1) es el tiempo 0 ? (A) goto SALTO2 ; 2 no, loop decfsz RETCONT1, 1 ; 1 + (1) es el tiempo 0 ? (B) goto SALTO1 ; 2 no, loop decfsz RETCONT0, 1 ; 1 + (1) es el tiempo 0 ? (C) goto SALTO0 ; 2 no, loop return ; 2+2 Fin. ;********************************************************************* end ;Fin del programa 09/01/2009 Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO Cálculo de Retardos ;******************************************************************** ;** RETARDO - RUTINA PARA RETARDO ;******************************************************************** ******************************************************************** RETARDO movlw X0 ; X0 es una variable con valores entre movwf RETCONT0 ; 1 y 255 SALTO0 movlw l X1 ; X1 es una variable i bl con valores l entre t movwf RETCONT1 ; 1 y 255 SALTO1 movlw X2 ; X2 es una variable con valores entre movwf RETCONT2 ; 1 y 255 S SALTO2 O2 decfsz RETCONT2 ; Ciclo (A) interno a los ciclos goto SALTO2 ; (B) y (C) decfsz RETCONT1 ; Ciclo (B) goto SALTO1 ; decfsz RETCONT0 ; Ciclo (C) goto SALTO0 ; return ; Fin de la rutina ;********************************************************************* 09/01/2009 Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO Cálculo de Retardos y Para calcular el tiempo de ejecución de la subrutina RETARDO se d debe b determinar d i lla fó fórmula l adecuada d d calculando los valores de X1, X2 y X3. y La fórmula para la rutina de ejemplo anterior es la siguiente: x = ((4/fosc)( )(6 + ((4 + ((4 + 2(X2))X1)X0) ( )) ) ) donde 1 ≤ Xi ≤ 255, i = 0,1,2 09/01/2009 Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO Cálculo de Retardos y y y Se puede escoger un valor fijo para los Xi variando uno o dos d d de ellos ll hasta h encontrar ell valor l adecuado d d de d tiempo. Alguna variación en la rutina de retardo podría causar cambios en el cálculo del tiempo. Si su aplicación no requiere de precisión entonces no se preocupe en calcular el tiempo con mayor exactitud de la requerida, dos o tres cifras significativas podría ser suficiente ppara obtener el tiempo p requerido. q 09/01/2009 Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO Tablas: Acceso a memoria Flash … TABLA_SECUENCIAS EQU 0x003000 ; TABLA EN MEMORIA DE DATOS CONTA_MEM EQU 0x10 ; VARIABLE GENERAL ;------------------------TABLA-------------------------org TABLA_SECUENCIAS ; Origen de Tabla de Datos data b'10101010' b 10101010 , b b'01010101' 01010101 ; 0x003000 - 0x003001 data b'00011000', b'11000011' ; 0x003002 - 0x003003 FINTABLA ;---------------------FIN DE TABLA---------------------- 09/01/2009 Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO Tablas: Acceso a memoria Flash … CAMBIO_LEDS bsf EECON1, EEPGD bcf EECON1, CFGS movlw 0x00 movwf TBLPTRU movlw 0x30 movwf TBLPTRH movf CONTA_MEM movwf TBLPTRL TBLRD* movf return ; Escribe registro parte más alta ; Registro de tabla parte alta ; Registro de tabla parte baja ; Lectura de tabla TABLAT ; Coloca en W el valor de TABLAT ; Retorna a rutina que llama … 09/01/2009 Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO Tablas: Acceso a memoria Flash … SECUENCIA movlw 0x00 movwf CONTA_MEM call CAMBIO_LEDS movwf PORTD call RETARDO incf CONTA_MEM movlw 0x07 cpfseq CONTA_MEM goto SALTO goto SECUENCIA SALTO … 09/01/2009 Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO Multiplexado de Displays de 7seg y y y En muchas aplicaciones se hace necesario mostrar i f información ió en múltiples úl i l dispositivos di ii usando d un mismo i puerto o bus de transmisión. Si se desea usar varios displays de 7 segmentos en un sistema con microcontroladores, entonces será necesario multiplexar la información hacia los distintos di l displays d manera que sólo de ól sea necesario i usar un puerto de 8 bits y la cantidad de bits necesarios para la activación de cada display de 7 segmentos. La multiplexación en un sistema con microcontrolador se hace por medio del programa, no se requiere agregar más componentes electrónicos al sistema. sistema 09/01/2009 Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO Multiplexado de Displays de 7seg y El siguiente es un ejemplo de diagrama de bloques para un sistema i con displays di l de d 7 segmentos. PIC18F4550 HABILITACIÓN 09/01/2009 Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO Multiplexado de Displays de 7seg y Asumiendo que los displays son de ánodo común entonces ell programa se realiza li de d la l siguiente i i manera: Contenido no disponible por ahora. ahora 09/01/2009 Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO Multiplexado de Displays de 7seg y y y Ahora, se necesita que “algo” produzca cada cierto tiempo i un cambio bi en ell multiplexado. li l d No debe sujetarse el programa a realizar el multiplexado mientras está ejecutando alguna otra tarea, por este motivo ese “algo” debería ser un temporizador que cada cierto tiempo provoque una i t interrupción ió de d la l operación ió normall del d l programa para realizar el multiplexado sin alterar el orden de ejecución del programa principal. Esta una de las razones de ser de las INTERRUPCIONES en los microcontroladores. 09/01/2009 Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO Interrupciones y y El PIC 18F4550 tiene múltiples fuentes de interrupción y dos d niveles i l de d prioridad i id d que permiten i a cada d fuente f de interrupción ser asignada a un nivel de alta o baja p prioridad. El vector de interrupción de alta prioridad está en la posición de memoria 000008h y el de baja prioridad en l posición la i ió 000018h. 000018h LLos eventos t d de iinterrupción t ió d de alta prioridad interrumpen cualquier interrupción de baja prioridad que esté en proceso. 09/01/2009 Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO Interrupciones y Se usan diez registros para controlar la operación de las i interrupciones. i E Estos son: ◦ RCON ◦ INTCON ◦ INTCON2 ◦ INTCON3 ◦ PIR1, PIR2 ◦ PIE1,, PIE2 ◦ IPR1, IPR2 09/01/2009 Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO Interrupciones y Cada fuente de interrupción tiene tres bits para controlar l su operación. ió La L función f ió de d estos bits bi se describe a continuación: ◦ El bit Flag indica que un evento de interrupción ha ocurrido. ◦ El bit Enable permite que la ejecución del programa se dirija al vector de interrupción cuando el bit Flag está activo. activo ◦ El bit Priority selecciona la alta o baja prioridad de la interrupción. 09/01/2009 Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO Interrupciones y El microcontrolador PIC 18F4550 tiene 21 fuentes de i interrupción. ió Estas E se podrían d í dividir di idi en dos d grupos: ◦ Grupo General de Interrupciones. Interrupciones x x x x x 09/01/2009 Interrupción del Temporizador 0. Interrupción por cambio en PORTB. Interrupción externa 0. Interrupción externa 1. Interrupción externa 2. Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO Interrupciones ◦ Grupo de Interrupciones de Periféricos. x x x x x x x 09/01/2009 Interrupción del SPP. I Interrupción ió d dell A/D. A/D Interrupción de RX/TX de la EUSART. Interrupción del MSSP. MSSP Interrupción del CCP1 y CCP2. Interrupción p de los temporizadores p 1,, 2 y 3. Interrupción de fallo del oscilador, del comparador, del USB, de colisión de bus, de detección de anomalías lí en VDD y d de escritura it en Flash/EEPROM. Fl h/EEPROM Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO