Unidad 2: Programación
Ing. Oscar Alonso Rosete Beas
Semana 14 Marzo Rev:3 ciclo 2022-1
oscarrosete.com
oscarrosete.com
2.1. Introducción a los lenguajes de programación en microcontroladores
2.2. Arquitectura y lenguaje de programación Ensamblador
2.3. Modos de direccionamiento
2.4. Memoria RAM
2.5. Lenguaje C
oscarrosete.com
oscarrosete.com
oscarrosete.com
oscarrosete.com
oscarrosete.com
1.1. Introducción a los sistemas embebidos
1.2. Conceptos básicos de arquitectura de computadoras
1.3. Procesador
1.4. Memoria
1.5. Periféricos de entrada Salida
1.6. Arquitectura de microcontroladores
Text
Text
oscarrosete.com
oscarrosete.com
2.1. Introducción a los lenguajes de programación en microcontroladores
2.2. Arquitectura y lenguaje de programación Ensamblador
2.3. Modos de direccionamiento
2.4. Memoria RAM
2.5. Lenguaje C
Repaso el viernes 7 de febrero
Lunes 10 de febrero examen
oscarrosete.com
oscarrosete.com
Para Lunes junto con cuadro sinóptico/mental
Generales: Generar un documento Word o Powerpoint
RISC
CISC
Clasificación de los siguientes microcontroladores acuerdo al arbol visto en clase (Agregar referencias):
Pic16f84a, pic16f18877
Atmega328p
PICAXE 08M2
oscarrosete.com
oscarrosete.com
Requerimientos para simular un microcontrolador PIC16F84a utilizando lenguaje ensamblador y lenguaje C
Realizar una simulación del encendido de un LED utilizando el PIC16F84a en cualquier lenguaje.
oscarrosete.com
oscarrosete.com
mplab assembler input output
page 52,53
oscarrosete.com
oscarrosete.com
oscarrosete.com
oscarrosete.com
oscarrosete.com
oscarrosete.com
oscarrosete.com
oscarrosete.com
309c23fe3a02
oscarrosete.com
oscarrosete.com
oscarrosete.com
oscarrosete.com
oscarrosete.com
oscarrosete.com
oscarrosete.com
oscarrosete.com
oscarrosete.com
oscarrosete.com
oscarrosete.com
oscarrosete.com
Click on debug
oscarrosete.com
oscarrosete.com
oscarrosete.com
oscarrosete.com
oscarrosete.com
oscarrosete.com
Cursor on status
oscarrosete.com
oscarrosete.com
oscarrosete.com
oscarrosete.com
oscarrosete.com
oscarrosete.com
oscarrosete.com
oscarrosete.com
leer pg 3
O 30 LIBRO
pg. 5
oscarrosete.com
oscarrosete.com
Program memory
Data memory
Flash program memory
1 K words =1024 instructions
14 bit-program
memory word
Special Function Registers (SFR)
General Purpose Registers (GPR)
8-bits wide
oscarrosete.com
oscarrosete.com
El vector "RESET" se encuentra en la dirección 00h ()
El vector "interrupt" se encuentra en la dirección 0004h()
La memoria de programa abarca 1K x 14 bits (0000h-03FFh)
3ff=1023 de 0 a 1023(1024 lineas)
wraparound:
20h, 420h son la misma ubicación
32 y 1056. Diferencia son 1024
oscarrosete.com
oscarrosete.com
El contador de programa (PC: Program Counter) es el registro del microcontrolador cuya función es direccionar la memoria de programa.
EL PC almacena direcciones de instrucciones; esta la dirección de la siguiente instrucción que hay que ejecutar.
es de 13 bits (8 a 12 bits PCLATH, bits 0-7 PCL)
Durante la ejecución de un programa, el PC se incrementa en 1 con cada instrucción que se ejecute.
oscarrosete.com
oscarrosete.com
Portions of data memory are banked. This is for both the SFR area and the GPR area.
Data memory is partitioned into two banks which contain the general purpose registers and the special function registers. Bank 0 is selected by clearing the RP0 bit (STATUS<5>). Setting the RP0 bit selects Bank 1.
oscarrosete.com
oscarrosete.com
oscarrosete.com
oscarrosete.com
File register
SFRs
oscarrosete.com
oscarrosete.com
Page 7
oscarrosete.com
oscarrosete.com
El microcontrolador se comunica con el mundo exterior a través de los puertos.
Estos están constituidos por líneas digitales de entrada/salida que trabajan entre 0 y 5 V. los puertos se pueden configurar como entradas para recibir datos o como salidas para gobernar dispositivos externos
El Puerto A con 5 líneas, pines RA0 a RA4.
El puerto B con 8 líneas, pines RB0 a RB7.
Cada línea puede ser configurada como entrada o como salida, independientemente unas de otras, según se programe.
oscarrosete.com
oscarrosete.com
La información contenida en estas memorias, que es el programa que lo controla y que consiste de una serie de números hexadecimales (ejemplo:1683 0186 30FF 0085 1283 0805 0086 2805), debe ser grabada previamente mediante un equipo físico denominado programador o grabador. Este equipo se conecta al ordenador y mediante un software se controla la grabación de la memoria del programa del microcontrolador (grabar o programar el microcontrolador)
oscarrosete.com
oscarrosete.com
oscarrosete.com
oscarrosete.com
oscarrosete.com
oscarrosete.com
Las expresiones son combinaciones de constantes y símbolos mezclados con operadores aritméticos y lógicos. Se permite usar paréntesis, se pueden utilizar en el campo de los operandos.
Los operadores son los símbolos que denotan las operaciones aritméticas y lógicas definidas en el lenguaje ensamblador.
oscarrosete.com
oscarrosete.com
oscarrosete.com
oscarrosete.com
oscarrosete.com
oscarrosete.com
Verdadero si su valor numérico es diferente de 0
oscarrosete.com
oscarrosete.com
Bitwise operations, operaciones bit a bit
oscarrosete.com
oscarrosete.com
oscarrosete.com
oscarrosete.com
oscarrosete.com
oscarrosete.com
equ no puede ser modificado posteriormente, se utiliza comúnmente para registros de funciones especiales y sus direcciones en memoria de datos.
oscarrosete.com
oscarrosete.com
DATO1 equ .18
DATO2 equ .7
movlw DATO1 %DATO2
; Al dividir 18/7 el residuo es 4
DATO=.10 (operador de asignación)
oscarrosete.com
oscarrosete.com
oscarrosete.com
oscarrosete.com
Repaso PORTB, TRISB
Text
Text
oscarrosete.com
oscarrosete.com
2.1. Introducción a los lenguajes de programación en microcontroladores
2.2. Arquitectura y lenguaje de programación Ensamblador
2.3. Modos de direccionamiento
2.4. Memoria RAM
2.5. Lenguaje C
Repaso el viernes 7 de febrero
Lunes 10 de febrero examen
oscarrosete.com
oscarrosete.com
Brazo robotico controlado por guante inalámbrico
Microcontrolador atmel
oscarrosete.com
oscarrosete.com
Procesador y sus componentes:
Computadora y sus componentes:
Arquitectura de Von Newmann y la Harvard
Microcontrolador
RISC y CISC
Pic16f84a, ensamblador básico
oscarrosete.com
oscarrosete.com
Repaso PORTB, TRISB
oscarrosete.com
oscarrosete.com
2.- Cargar 3f en memoria 0eh , cargar f3 en memoria 0fh e intercambiarlos.
3.- Lograr W sea igual a un símbolo con el valor 13 decimal.
Efectuar las siguientes operaciones:
oscarrosete.com
oscarrosete.com
Las últimas 2 horas de los días Miércoles estarán designadas a trabajo en práctica de laboratorio.
Entrega: 17/03/21
Text
oscarrosete.com
oscarrosete.com
2.1. Introducción a los lenguajes de programación en microcontroladores
2.2. Arquitectura y lenguaje de programación Ensamblador
2.3. Modos de direccionamiento
2.4. Memoria RAM
2.5. Lenguaje C
oscarrosete.com
oscarrosete.com
En los lenguajes de programación, un switch case o switch statement, declaración de cambiador o declaración de interruptor.
El valor de la expresión entregada como parámetro es comparada con las constantes asociadas a los casos, en caso de no haber coincidencia ejecuta operación predeterminada.
oscarrosete.com
oscarrosete.com
Se envia al registro w lo que se quiera comparar
movfw PORTA
Se llama a una subrutina
call compara
Al registro PCL se le asigna PCL+W
compara addwf PCL,F
Las combinaciones requeridas se ponen en orden dentro de la subrutina
oscarrosete.com
oscarrosete.com
¿Qué pasa cuando F tiene un valor de D'20'?
oscarrosete.com
oscarrosete.com
1. Una serie de interruptores conectados al Puerto B efectúan las siguientes operaciones:
Asegurarse que solo realice la comparación si el puerto B tiene un valor <=3.
Nota: La ubicación de los registros y sus contenidos serán seleccionados de manera arbitraria por los estudiantes.
El contenido no puede ser 0.
Realizar el programa y simulación que cumpla con lo siguiente:
2. Interruptor conectado al puerto B bit 3 inicia la siguiente secuencia:
Se simulará el funcionamiento de un semáforo, en el puerto A bit 0 permanecerá 5 segundos encendidos, después hará un parpadeo de 0.5s se desactivará y activará el bit 1, el cual permanecerá 2 segundos encendido hará un parpadeo de 0.5s se desactivará y activará el bit 2 , el cual permanecerá 5 segundos encendido hará un parpadeo de 0.5s y repetirá la secuencia.
oscarrosete.com
oscarrosete.com
Documentar el codigo, decirle al software que usamos un pic16f84a e Incluir archivo de símbolos
;autor,fecha,descripción
list p=16F84a
#include "p16f84a.inc"
Definir que sucede al hacer reset al pic
org 0
goto init
Definir configuration bits
__CONFIG _FOSC_XT & _WDTE_OFF & _PWRTE_OFF & _CP_OFF
Evitar vector de interrupción y acceder a banco 1 de memoria de datos
org 5
init bsf STATUS,RP0
Definir que es salida a traves de TRISB
bcf TRISB,0
regresamos al banco 0 e ir al inicio de mi ciclo principal
bcf STATUS,RP0
goto start
En ciclo principal cambiar a 1 el bit 0 de Puerto B
start bsf PORTB,0
goto start
Finalizar
END
oscarrosete.com
oscarrosete.com
Evitar vector de interrupción y acceder a banco 1 de memoria de datos
org 5
init bsf STATUS,RP0
Definir que el bit 0 de Puerto B es salida y el bit 0 del puerto A es entrada
bcf TRISB,0
bsf TRISA,0
Regresamos al banco 0 e ir al inicio de mi ciclo principal
bcf STATUS,RP0
goto start
bit 0 del puerto A==0?
start btfsc PORTA,0
Cambiar a 1 el bit 0 de Puerto B
bsf PORTB,0
Si
No
goto start
oscarrosete.com
oscarrosete.com
oscarrosete.com
oscarrosete.com
The instruction cycle (also known as the fetch–decode–execute cycle or simply the fetch-execute cycle) is the cycle which the central processing unit (CPU) follows from boot-up until the computer has shut down in order to process instructions
oscarrosete.com
pg. 22
oscarrosete.com
pg. 23
Capacitor selection for crystal oscillator
oscarrosete.com
pg. 57
oscarrosete.com
Si el reloj principal es de 4 MHz y queremos saber cuanto tiempo emplea en procesarse la instrucción nop, la cual sólo emplea un ciclo de máquina, se emplearía la siguiente expresión matemática:
pg. 36
TCY= 4*( 1/Fosc )*Cycles=
4*( 1/( 4*10^6 ) )*1 =
1*10^6 s =
1μs
oscarrosete.com
GOTO?
CICLOS?
oscarrosete.com
Llamada subrutina (2)
Primera vuelta (3+2)
3 vueltas intermedias (3)
Última vuelta s(2)
Retorno subrutina (2)
oscarrosete.com
oscarrosete.com
oscarrosete.com
Realizar el programa y simulación que cumpla con lo siguiente:
oscarrosete.com
Realizar el programa y simulación que cumpla con lo siguiente:
2. Con interruptores conectados a las terminales RB0 y RB1 activar los LEDs conectados a las terminales RA0 y RA1 de acuerdo a la Tabla 1.
RB0 | RB1 | RA1 | RA0 |
---|---|---|---|
0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 |
1 | 0 | 1 | 0 |
1 | 1 | 1 | 1 |
Tabla 1
Si PUERTOB==0000 0010:
Puerto A = 0000 0001
oscarrosete.com
Text
oscarrosete.com
oscarrosete.com
2.1. Introducción a los lenguajes de programación en microcontroladores
2.2. Arquitectura y lenguaje de programación Ensamblador
2.3. Modos de direccionamiento
2.4. Memoria RAM
2.5. Lenguaje C
oscarrosete.com
oscarrosete.com
Dar click para abrir Referencia
oscarrosete.com
oscarrosete.com
oscarrosete.com
oscarrosete.com
Subir archivo(s) en c actividad de blackboard.
15%
25%
oscarrosete.com
oscarrosete.com
Subir archivo(s) en c actividad de blackboard.
oscarrosete.com
oscarrosete.com
Subir archivo(s) en c actividad de blackboard.
Diseñar y simular un circuito que mediante tres interruptores muestre con dos displays de 7 segmentos su fecha de nacimiento.
Deberá seleccionar y proponer los componentes a utilizar considerando como base el microcontrolador pic16f84A
Deberá simular el circuito comprobando su funcionamiento
Deberá cargarlo a la actividad correspondientede blackboard
oscarrosete.com
Diseñe un control de nivel para un tanque. Al pulsar "arranque", se activa la bomba hidráulica B1. La bomba permanece activa hasta alcanzar el nivel máximo, momento en el cual se apaga. Se deberá abrir la válvula de vaciado y se activara nuevamente de forma automática al alcanzar el nivel mínimo, procediendo a cerrar la válvula hasta que alcance el nivel máximo. Repetirá el ciclo de forma automática sin tener que volver a presionar arranque.
Deberá seleccionar y proponer los componentes a utilizar considerando como base el microcontrolador pic16f84A
Deberá simular el circuito comprobando su funcionamiento
Deberá cargarlo a la actividad correspondientede blackboard
oscarrosete.com
oscarrosete.com
oscarrosete.com
oscarrosete.com
oscarrosete.com
oscarrosete.com
oscarrosete.com
oscarrosete.com
oscarrosete.com
Subir archivo(s) en c actividad de blackboard.
1.- Cargar 3f en memoria 0eh , cargar f3 en memoria 0fh e intercambiarlos. (recomendación __asm() )
2.- Diseñar y simular un circuito que mediante tres interruptores muestre con dos displays de 7 segmentos su fecha de nacimiento.
oscarrosete.com
oscarrosete.com
Realizar el programa y simulación que cumpla con lo siguiente:
3. Con interruptores conectados a las terminales RB0 y RB1 activar los LEDs conectados a las terminales RA0 y RA1 de acuerdo a la Tabla 1.
RB0 | RB1 | RA1 | RA0 |
---|---|---|---|
0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 |
1 | 0 | 1 | 0 |
1 | 1 | 1 | 1 |
Tabla 1
Si PUERTOB==0000 0010:
Puerto A = 0000 0001
oscarrosete.com
oscarrosete.com
La práctica 2 consiste en la entrega de los mismos 3 circuitos funcionando con lenguaje C.
Entrega: 8/04/21
oscarrosete.com
oscarrosete.com