Post on 20-Jan-2016
ARQUITECTURA DE MICRO-CONTROLADORES
José David Alvarado M.
Universidad de Cundinamarca
Ingeniería Electrónica
Introducción a los Micro-controladores.
CPU
• Cerebro de una micro-computadora.
• Unidad Aritmética y Lógica: ALU.
Memoria.
• Almacenamiento del programa de control de la CPU.
Componentes de un Micro-controlador.
Componentes de un Micro-controlador.
• Reloj : RC – XT.
• CPU
– ALU.
– Registro de Instrucción.
– Acumulador.
– Registro Estado.
– Contador de Programa.
– Registro de direcciones y datos.
– Puntero de pila.
• Memoria.
– RAM
– ROM
• Periféricos.
Componentes de un Micro-controlador.
Perro Guardián: watchdog Timer.
Componentes de un Micro-controlador.
Reset
Arquitecturas
• Von Neumann.
– Micro-procesador.
Arquitecturas
• Von Harvard.
– Micro-controlador.
Tarea 1 – Quiz la Próxima clase.
• Arquitecturas.
– Von Neumann.
– Harvard.
– CISC
– RISC
Arquitectura del microcontrolador
Arquitectura del micro-controlador
Estructura de los micro controladores PIC. Ciclos de Maquina.
Arquitectura del micro-controlador
Arquitectura del microcontrolador
Bancos de memoria 16F84
Bancos de memoria 16F84
Arquitectura del microcontrolador
Bancos de memoria 16F84
Bancos de memoria 16F84
Registro de estado en el PIC16X84
El registro de Estado (STATUS) del microcontrolador PIC16X84, que contiene varios bits de estado de la unidad central, el estado aritmético de la ALU, el estado del reset y un par de bits de selección de página denominados RP1 y RP0. Ocupa la posición 03h del banco 0 y la 83h del banco 1.
R/W-0 R/W-0 R/W-0 R-1 R-1 R/W-x R/W-x R/W-x
IRP RP1 RP0 /TO /PD Z DC C
bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0
Registro de estado
IRP: Selección del banco en direccionamiento indirecto. Este bit junto con el de más peso del registro FSR sirven para determinar el banco de la memoria de datos seleccionado. En el PIC16X84 al disponer de dos bancos no se usa y debe programarse como 0.
RP0 y RP1: Register Bank Select. Selección de página o banco de la memoria con direccionamiento directo. Cada página contiene 128 bytes. Como el PIC16X84 sólo tiene dos bancos únicamente se emplea RP0 de forma que cuando vale 0 se accede al banco 0 y cuando vale 1 se accede al banco 1. Después de un reset, RP0 se pone automáticamente a 0. RP1 debe mantenerse a 0.
TO: Time Out.
–1. Se pone a 1 tras conectar la alimentación o al ejecutar CLRWDT o SLEEP.
–0. Se pone a 0 por desbordamiento del Perro Guardián WDT.
PD: Power Down.
–1. Se pone automáticamente a 1 tras conectar la alimentación Vdd o ejecutar CLRWDT.
–0. Se pone a 0 al ejecutar la instrucción SLEEP.
Registro de estado
• Z: Cero 1 = El resultado de una operación aritmética o lógica es 0.
0 = El resultado es distinto de 0.
• DC (Digit Carry). Acarreo en el 4º bit de menos peso. Funciona igual que el bit de Carry descrito a continuación. De interés en operaciones en BCD
• C (Carry). Acarreo en el 8º bit o bit de mas peso. Es el bit de "acarreo" en operaciones de suma AADWF y ADDLW así como también el bit de "llevada" en las instrucciones de sustracción SUBWF y SUBLW. También lo emplean las instrucciones RLF y RRF de rotación de bits.
– Suma 1. Se pone a 1 cuando se ha producido acarreo en la suma en el bit de mayor peso con las operaciones AADWF y ADDLW.
0. Se pone a 0 si en la suma no se ha producido acarreo.
– Resta 1. Se pone a 1 si en la resta no se ha producido acarreo.
0. Se pone a 0 cuando se ha producido acarreo en la resta con las operaciones SUBWF y SUBLW.
Programación en Lenguaje Ensamblador.
Lenguaje de maquina
Binario Hexa Código Operando Instrucción
11000000000111 3007 1100xx 0000 0111 Carga en el acumulador el dato
indicado en el operando
11111000001000 3E08 11111x 0000 1000 Suma el acumulador y el dato
indicado en el operando y guarda el resultado en el acumulador
00000010010000 0090 0000001 0010000 Almacena el resultado contenido en el acumulador en la dirección
indicada
Instrucciones de Lenguaje Ensamblador
Mnemotécnico Hexa Código Operando Instrucción
movlw 0x07 3007 1100xx 0000 0111 Carga en el acumulador el dato
indicado en el operando
addlw 0x08 3E08 11111x 0000 1000
Suma el acumulador y el dato indicado en el operando y guarda el resultado
en el acumulador
movwf 0x10 0090 0000001 001 0000 Almacena el resultado contenido en el
acumulador en la dirección indicada
Instrucciones de Lenguaje Ensamblador
• Instrucciones Orientadas a bits.
• Instrucciones Orientadas a Registros.
• Instrucciones Orientadas a Control.
• Instrucciones especiales.
Instrucciones de Lenguaje Ensamblador
Instrucciones orientadas a bit
Mnemotécnico DESCRIPCIÓN BANDERAS NCIC
BCF f,b Pone a 0 bit b de registro f Ninguna 1
BSF f,b Pone a 1 bit b de registro f Ninguna 1
BTFSC f,b Salto si bit b de reg.f es 0 Ninguna 1(2)
BTFSS f,b Salto si bit b de reg.f es 1 Ninguna 1(2)
Instrucciones de Lenguaje Ensamblador
Instrucciones orientadas a registros
Mnemotécnico DESCRIPCIÓN BANDERAS NCIC
ADDWF f,d w + f → d C, DC, Z 1
ANDWF f,d w AND f → d Z 1
CLRF f 00 h → f Z 1
CLRW - 00 h → w Z 1
COMF f,d Complemento de f → d Z 1
DECF f,d f - 1 → d Z 1
Instrucciones de Lenguaje Ensamblador
Instrucciones con literales y de control
Mnemotécnico DESCRIPCIÓN BANDERAS NCIC
DECFSZ f,d f - 1 → d (si es 0 salta) Ninguna 1(2)
INCF f,d f + 1 → d Z 1
INCFSZ f,d f + 1 → d (si es 0 salta) Ninguna 1(2)
IORWF f,d w OR f → d Z 1
MOVF f,d f → d Z 1
MOVWF f w → f Ninguna 1
Instrucciones de Lenguaje Ensamblador
Instrucciones orientadas a registros
Mnemotécnico DESCRIPCIÓN BANDERAS NCIC
NOP - No operación Ninguna 1
RLF f,d Rota f izq por carry → d C 1
RRF f,d Rota f dcha por carry → d C 1
SUBWF f,d f - w → d C,DC,Z 1
SWAPF f,d Intercambia nibbles de f → d Ninguna 1
XORWF f,d w XOR f → d Z 1
Instrucciones de Lenguaje Ensamblador
Instrucciones con literales y de control
Mnemotécnico DESCRIPCIÓN BANDERAS NCIC
ADDLW k w + k → w C,DC,Z 1
ANDLW k w AND k → w Z 1
CALL k Llamada a subrutina k Ninguna 2
CLRWDT - Borra temporizador del WDT TO,PD 1
GOTO k Ir a dirección k Ninguna 2
IORLW k w OR k → w Z 1
MOVLW k k → w Ninguna 1
Instrucciones de Lenguaje Ensamblador
Instrucciones con literales y de control
Mnemotécnico DESCRIPCIÓN BANDERAS NCIC
RETFIE - Retorno de una interrupción Ninguna 2
RETLW k Retorno con k en w Ninguna 2
RETURN - Retorno de una subrutina Ninguna 2
SLEEP - Modo Standby TO, PD 1
SUBLW k k - w → w C,DC,Z 1
XORLW k w XOR k → w Z 1