01 Microbotica 2020 Intro Microcontroladores
01 Microbotica 2020 Intro Microcontroladores
01 Microbotica 2020 Intro Microcontroladores
• Según los periféricos incluidos: serie, A/D, D/A, I/O ́s, timers, etc.
●Instrumentación,
●Automóviles,
●Control Industrial,
●Robótica,
●Medicina,
Sistemas de seguridad.
●
Fabricantes
●MICROCHIP ●TOSHIBA
●MOTOROLA ●NEC
●ATMEL ●ZILOG
●PHILIPS ●SONY
https://trends.google.es/trends/explore?hl=pt-BR&tz=300&date=all&q=microchip,ATMEL,TEXAS+INSTRUMENTS,ZILOG&sni=3
Sistemas embebidos
Sistemas embebido es un sistema de computación diseñado para realizar
●
• Bajo nivel
Papel de los lenguajes de Programación
• Lenguaje C
• Alto nivel
• Independiente del Hardware
• Genérico.
• Diferentes propósitos.
Outros lenguajes de Programación
• Lenguaje C#, C++, Java, PHP, Python
• Lenguajes más genéricos,
• Distantes del Hardware,
• Alto nivel,
• Programas más avanzados integrados y acoplados
Además del Microcontrolador
Consideraciones adicionales:
• Circuitos de Alimentación,
• Tipo de Comunicación,
• Sensores,
• Control de actuadores,
• Periféricos,
• Interfaces con usuario,
• Otros circuitos de apoyo.
Microcontrolador
Input Output
User input Peripherals CPU Peripherals User
output
Central
Processing
ROM Unit RAM
Program Read Only Read & Write
download Memory Memory
Microcontrolador- Diagrama de Pins
Microcontrolador - Arquitectura
Microcontrolador – Organización de la Memoria
Existen tres bloques de memoria dentro de un PIC16F877X.
• Memoria de programa:
• contiene el programa con las instrucciones que gobiernan la aplicación.
• Es del tipo no volátil.
• Memoria de datos RAM:
• Guarda las variables y datos.
• Son registros de 8 bits.
• Es volátil
• Memoria EEPROM de datos:
• Es una pequeña área de memoria de datos de lectura y escritura no volátil
que permite garantizar que determinada información estará siempre
disponible al reinicializarse el programa.
• Se gestiona de manera distinta a la memoria de datos RAM.
Microcontrolador – Organización de la Memoria
• La memoria de programa y la memoria de datos tienen buses separadas por lo que
es posible el acceso a las mismas en forma concurrente.
Microcontrolador – Memoria del programa
• Almacena todas las instrucciones del programa en
ejecución, que estará grabado de forma permanente.
• La información contenida en esta memoria se carga previamente
a través un equipo físico denominado programador. (El
PIC16F877 tiene una memoria de programa no volátil
denominada ROM Flash que admite unas 1000 grabaciones).
• La memoria de programa está organizada en palabras (cadena
finita de bits) de 14 bits cada una.
• Todas las instrucciones ocupan una posición de memoria de
programa.
• El vector de RESET (por donde comienza a ejecutar el PIC) esta
en la dirección 0000h y el vector de interrupciones se encuentra
en la dirección 0004h.
Memoria del programa – Program counter
• El dispositivo PIC16F87X tiene un program counter de 13-bit capaz de
direccionar 8K x 14 direcciones de memoria.
• A la memoria de programa se accede mediante un registro de 13 bits que actúa
como puntero de la instrucción que se debe ejecutar en el siguiente ciclo de
instrucción.
• A través de program counter, se pueden direccionar 8K posiciones de memoria.
Debido a que la codificación de las instrucciones son de 14 bits, cada una de esas
8K posiciones corresponde a una instrucción, por tanto, el program counter es
capaz de direccionar 8K x 14 posiciones.
El byte bajo PC se denomina PCL y está disponible en la memoria de datos. Es un registro que
se puede leer y escribir directamente desde programa.
En la figura se muestra un
dispositivo con 4K de memoria de
programa y otro con 8K de
memoria de programa.
Memoria del programa- vector de reset
• El vector de RESET está siempre en la posición 0000h de la
memoria de programa.
• Campo de operandos y datos: Contiene los operandos que precisa el nemónico utilizado. Según
el código, puede haber dos, uno o ningún operando.
• Campo de comentarios: Dentro de una línea, todo lo que se encuentre a continuación de un
punto y coma (;) será ignorado por el programa ensamblador y considerado como comentario.
Estructura básica del programa de ensamblaje
El lenguaje ensamblador se compone de dos (2) tipos de declaraciones:
• Directiva de ensamble: Informe al ensamblador sobre el programa y el entorno y NO es traducido al
código de la máquina.
• Instrucciones ejecutables: Son instrucciones válidas del procesador que el ensamblador puede
traducir al código de máquina.
Assembler directives
• Las Assembler directives son instrucciones que se dirigen al ensamblador para una acción espcifica
específica.
• No son traducidas al código de máquina. (Las directivas del ensamblador son ejecutadas por el
ensamblador en el momento del ensamblaje, no por la CPU en el tiempo de ejecución).
• Las directivas pueden usarse para:
• Vincular nombres simbólicos a valores reales.
• Configurar constantes predefinidas.
• Asignar almacenamiento para datos en la memoria.
• Controla el proceso de ensamblaje.
• Incluir archivos fuente adicionales.
• Dirección de inicio del programa.
Ejemplo - Assembler directives
• EQU – Igualar
• Asigna un valor a un símbolo (igual que =) p. TRISA EQU 0x85
• ORG - Origen
• Establece el origen actual a un nuevo valor. Esto se usa para configurar el programa o registrar la
dirección durante el ensamblaje.
• Por ejemplo, ORG 0x00 le dice al ensamblador que ensamble todos los códigos posteriores que
comienzan en la dirección 0000H.
• INCLUDE
• Un archivo de ensamblador incluye o encabezado, es cualquier archivo que contiene un código de
ensamblaje válido. Ejemplo: #INCLUDE P16F877.INC
• END
• Esta directiva es la última declaración en un programa de lenguaje ensamblador. La directiva END
termina un programa en lenguaje ensamblador.
Código de ensamble
3
Consta de 4 campos:
operand
1 2 4
• Los operandos dan información a la instrucción sobre los datos que deben usarse y la
ubicación de almacenamiento de la instrucción.
• Los operandos deben estar separados de los nemotécnicos por uno o más espacios o
tabulaciones.
• Puede tener uno, dos o ningún operando en absoluto. Los operandos múltiples deben estar
separados por comas.
• Ejemplos de instrucciones con diferentes campos de operandos:
NOP
ANDLW 0x34
ADDWF FSR,1
Formato de instrucciones – Campo de comentarios
• Los comentarios son textos que explican el funcionamiento de una línea o líneas de
código.
• Un punto y coma (;) marca el comienzo de un comentario
• Un punto y coma al comienzo de una línea lo convierte en una línea de comentario.
• Todos los caracteres que siguen al punto y coma se ignoran hasta el final de la línea.
• La buena práctica de programación dicta el uso de un comentario en casi todas las líneas.
Ejemplo:
;Línea de declaración con un campo de comentario
BSF PortA,0 ; establecer el pin 0 de PortA
Ejemplo Código fuente
Conjunto de instrucciones – PIC16F877A
REGISTER Las operaciones de registro afectan solo a un único CLRW, CLRF, DECF, INCF, SWAPF,
registro, y todos excepto CLRW (borrar W) operan COMF, RLF, RRF, BCF, BSF
en registros de archivos.
ARITHMETIC La suma y la resta en binario dan el mismo resultado ADDWF, ADDLW, SUBWF, SUBLW
que en decimal o hexadecimal.
LOGIC Las operaciones lógicas se llevan a cabo en pares ANDWF, ANDLW, IORWF, IORLW,
de bits en dos números para dar el resultado que se XORWF, XORLW
obtendría si se alimentaran a la puerta lógica
correspondiente.
TEST, SKIP & JUMP tomar decisiones (ramas de programas BTFSC, BTFSS, DECFSZ, INCFSZ, GOTO,
condicionales) que dependen de alguna condición de CALL, RETURN, RETLW, RETFIE
entrada o del resultado de un cálculo