Académique Documents
Professionnel Documents
Culture Documents
DEPARTAMENTO DE
INGENIERÍA ELÉCTRICA Y
ELECTRÓNICA
INGENIERÍA ELECTRÓNICA
MATERIA:
Microcontoladores
GRUPO:
6EM
INVESTIGACIÓN:
PRACTICAS 1,2 Y 3
ALUMNO:
FRANCISCO MORENO
PROFESOR(A):
La mayoría de los dispositivos de lógica secuencial, entre ellos los CPU, son de naturaleza
síncrona. Es decir, están diseñados y operan en función de una señal de sincronización.
Esta señal, conocida como señal de reloj, usualmente toma la forma de una onda cuadrada
periódica. Calculando el tiempo máximo en que las señales eléctricas pueden moverse en
las varias bifurcaciones de los muchos circuitos de un CPU, los diseñadores pueden
seleccionar un período apropiado para la señal de reloj.
Para el correcto funcionamiento del microcontrolador debemos definir la frecuencia del
oscilador pues determinará los ciclos de instrucción; podemos utilizar un oscilador interno o
externo, sin embargo es recomendable utilizar un oscilador de cristal externo para evitar un
mal funcionamiento frente a las variaciones de temparatura dentro del microcontrolador.
Podemos ver que por default tiene cargado el valor: 0100 X000 que de acuerdo con los
valores de la tabla anterior corresponderían a la siguiente configuración:
Para estas prácticas se utilizará una frecuencia de 4MHz y, como no es necesario precisión
en el tiempo, no pondremos ningún oscilador externo, de esta manera el valor a cargar será
el siguiente:
Ciclo de reloj:
Ciclo de instrucción:
Para limitar la corriente que circula por el LED se propone una resistencia de 330Ω:
Y para limitar la corriente del pin de Reset y el botón pulsador a 0.5mA, utilizar una
resistencia de 10kΩ.
Simulación
; ********************************************************
1
; Desarrollo de Microcontroladores y DSPS
2
; Encender un LED
3
; Práctica 1
4
; Fecha: 03/06/2012
6 ; Autor: ek
7 ; ********************************************************
LIST P = 18F4550
8
INCLUDE <P18F4550.INC>
9
;************************************************************
10
CONFIG FOSC = HS ;INTOSC_XT no disponible para simulación, usar HS
11
CONFIG PWRT = ON
12
CONFIG BOR = OFF
13 CONFIG WDT = OFF
CONFIG MCLRE = ON
14
CONFIG PBADEN = OFF
15
CONFIG LVP = OFF
16
CONFIG DEBUG = OFF
17
CONFIG XINST = OFF
18
; CODE ******************************************************
25
goto LedOff ;RB0 = 0, continua apagado
26
bsf Led ;Encender Led
27 bra INICIO
28 LedOff
bra INICIO
30
END ;Fin de Programa
31
Una vez terminado contruimos el código y si todo sale bien, nos deberá aparecer en la
ventana output algo similar a esto:
Ahora abrimos Pickit 2 y grabamos el archivo LedOn.hex generado.
Montamos el pic conforme el siguiente diagrama (Figura 5) y probamos.
2. Efecto de corrimiento con LED’s, PIC18F4550 ASM
Introducción
La disposición de los puertos digitales nos permite hacer operaciones con un byte, nibble o
bit, por ejemplo intercambiar el nibble alto por el bajo o desplazar el valor de un bit hacia la
izquierda o derecha, algunas de estas operaciones están disponibles en las funciones de
algunos PICs como el caso del 18F4550, gracias a estas funciones es posible crear efectos
de luces con LEDs al colocar ciertas configuraciones de 0 y 1 a la salida de dichos puertos.
Objetivos
La mayoría de los dispositivos de lógica secuencial, entre ellos los CPU, son de naturaleza
síncrona. Es decir, están diseñados y operan en función de una señal de sincronización.
Esta señal, conocida como señal de reloj, usualmente toma la forma de una onda cuadrada
periódica. Calculando el tiempo máximo en que las señales eléctricas pueden moverse en
las varias bifurcaciones de los muchos circuitos de un CPU, los diseñadores pueden
seleccionar un período apropiado para la señal de reloj.
Para el correcto funcionamiento del microcontrolador debemos definir la frecuencia del
oscilador pues determinará los ciclos de instrucción; podemos utilizar un oscilador interno o
externo, sin embargo es recomendable utilizar un oscilador de cristal externo para evitar un
mal funcionamiento frente a las variaciones de temparatura dentro del microcontrolador.A
continuación mostramos la tabla del registro de configuración del oscilador (Figura 4)
Figura 4. Registro OSCCON para la Configuración del Oscilador
Podemos ver que por default tiene cargado el valor: 0100 X000 que de acuerdo con los
valores de la tabla anterior corresponderían a la siguiente configuración:
Ciclo de reloj:
Ciclo de instrucción:
Para limitar la corriente que circulará por los LED’s conectados al Puerto B, se proponen
resistencias de 330Ω:
Y para limitar la corriente del pin de Reset y el botón pulsador a 0.5mA, utilizar una
resistencia de 10kΩ.
Para generar el retardo se utilizarán tres registros de la memoria y se cargarán con los
siguientes valores, estos valores son calculados de acuerdo a un algoritmo que utiliza ciclos.
Conta1 = 200
Conta2 = 100
Conta3 = 5
El contador 1 (Conta1) se encuentra dentro del ciclo de conteo del contador 2 (Conta2) y
ambos están dentro del ciclo del contador 3 (Conta3). Tomando en cuenta que se necesitan
3 ciclos de instrucción para ir decrementando los ciclos, la fórmula queda como sigue:
Simulación
Desarrollar una simulación en MPLAB con la finalidad de medir los tiempos de ejecución
para los retardos y observar la ejecución de cada instrucción.
1 ; ********************************************************
4 ; Práctica 2
5 ;
6 ; Fecha: 08/06/2012
8 ; Autor: ek
9 ; ************************************************************
10 LIST P = 18F4550
11 INCLUDE <P18F4550.INC>
12 ;************************************************************
13 CONFIG FOSC = HS
14 CONFIG PWRT = ON
17 CONFIG MCLRE = ON
22 ; CODE ******************************************************
24 cblock
25 Conta1
26 Conta2
27 Conta3
28 Sweep
29 endc
36 clrf TRISB ;Configura TRISB movlw 0x01 ;Entrada RD0 de habilitación en PORTD
41 btfss PORTD, 0 ;Salta si RD0 = 1, Cambio <== bra MoveRight ;Repetir Ciclo >=>=>
42
43 MoveLeft
44 call Retardo ;Esperar un tiempo
49 bra MoveLeft ;Repetir Ciclo <=<=< bra MoveRight ;Dirección [Predeterminada] >=>=>
50 bra INICIO
52 Retardo
53 movlw Time1
54 movwf Conta1
55 movlw Time2
56 movwf Conta2
57 movlw Time3
58 movwf Conta3
59 Repeat
66 decfsz Conta3
67 bra Repeat
68 Return
70
Armar el siguientes circuito en ISIS Proteus y simularlo, de la misma manera será el circuito
físico (Figura 5).
Figura 5. Circuito
Objetivos
La mayoría de los dispositivos de lógica secuencial, entre ellos los CPU, son de naturaleza
síncrona. Es decir, están diseñados y operan en función de una señal de sincronización.
Esta señal, conocida como señal de reloj, usualmente toma la forma de una onda cuadrada
periódica. Calculando el tiempo máximo en que las señales eléctricas pueden moverse en
las varias bifurcaciones de los muchos circuitos de un CPU, los diseñadores pueden
seleccionar un período apropiado para la señal de reloj.
Para el correcto funcionamiento del microcontrolador debemos definir la frecuencia del
oscilador pues determinará los ciclos de instrucción; podemos utilizar un oscilador interno o
externo, sin embargo es recomendable utilizar un oscilador de cristal externo para evitar un
mal funcionamiento frente a las variaciones de temparatura dentro del microcontrolador.
Podemos ver que por default tiene cargado el valor: 0100 X000 que de acuerdo con los
valores de la tabla anterior corresponderían a la siguiente configuración:
Para estas prácticas se utilizará una frecuencia de 4MHz y, como no es necesario precisión
en el tiempo, no pondremos ningún oscilador externo, de esta manera el valor a cargar será
el siguiente:
Desarrollar una simulación en MPLAB con la finalidad de medir los tiempos de ejecución
para los retardos y observar la ejecución de cada instrucción.
0004: MOVLW 22
0005: MOVWF 04
000A: MOVLW 01
000B: MOVWF 78
000C: CLRF 77
0011: MOVLW 4A
0012: MOVWF 77
001B: CLRF 04
001D: MOVLW 1F
001F: MOVLW 01
0020: MOVWF 20
0026: MOVLW 07
0027: MOVWF 1C
....................
0028: MOVLW 00
0029: MOVWF 06
002A: CLRF 06
002C: CLRF 06
While(true)//Ciclo infinito
002E: CLRF 06
0031: MOVWF 06
.................... retardo;//Demora
0032: MOVLW 02
0033: MOVWF 21
0034: MOVLW FA
0035: MOVWF 22
003C: SUBLW 00
003F: MOVLW 01
0040: MOVWF 20
.................... }
.................... }
0042: SLEEP
End ;