Documentos de Académico
Documentos de Profesional
Documentos de Cultura
INFORME Nº 3
CODIGO: 15190160
- 2020 -
1. OBJETIVO
2. INTRODUCCION
Para esta sesión de laboratorio simularemos un contador binario de 4bits en el programa BASCOM-AVR
en código BASIC para contar de forma ascendente y descendentes los números del 1 al 8 con
interrupciones externas cada 0.5 segundos; así el sistema contara con un límite superior hasta 8 y un límite
inferior hasta 0. Así mismo para conocer el entorno de simulación del software con la compilación línea
por línea del código diseñado.
3. MARCO TEORICO
La interrupción externa AVR se produce cuando en un pin preparado especialmente para este fin se
produce algún evento, como por ejemplo ocurra algún cambio de estado en el pin como por ejemplo pasar
de un bajo(0) a un alto(1); la interrupción externa AVR se comentará para el caso del ATmega88 pero si se
quiere utilizar algún otro el procedimiento es muy similar, solo hay que guiarse de la hoja de datos del
microcontrolador AVR utilizado.
La interrupción externa AVR es útil para el manejo de pulsadores, detectores de cruce por 0, teclados
matriciales y mucho más; hay 2 tipos de interrupciones externas en los microcontroladores AVR, en la
imagen se tiene la representación de los pines del Atmega88, los pines resaltados que se nombran como
INT0 e INT1, son pines que están preparados para producir una interrupción externa AVR por diversos
eventos que se pueden elegir por programa, otro microcontroladores AVR tienen más pines INTx; mientras
que los pines nombrados como PCINT0, PCINT1 así hasta PCINT23, son pines que están preparados para
producir una interrupción externa AVR cuando en estos pines se produce un cambio de estado, esto es si
sus estados pasan de alto a bajo o de bajo a alto; las interrupción externa AVR se producirá no importando
si el pin elegido es una entrada o salida digital.
Los pines INT0 e INT1 trabajan de forma independiente, pero realizan el mismo tipo de tarea, a través de
estos pines se pueden realizar una interrupción externa AVR, siendo la causa o el evento que produzca la
interrupción uno de los siguientes motivos:
Para elegir el tipo evento que producirá la interrupción externa AVR y el pin a utilizar, se utiliza el registro
llamado registro de control de la interrupción externa EICRA.
Los bits 7 a 4 del registro EICRA no son utilizados por lo que se les suele poner a 0, con bits 3 y 2 se elige
utilizar el pin INT1 y con los bits 1 y 0 se elige utilizar el pin INT0, de acuerdo a las combinaciones de bits
que se hagan se producirá la interrupción externa AVR por alguno de los eventos mencionados líneas
arriba.
$regfile = "m328pdef.dat"
$crystal = 16000000 '16000000
Dim V1 As Integer
Dim A As Byte
Config Portb = Output
A = 0
On Int0 Int_subida
Enable Int0
On Int1 Int_bajada
Enable Int1
Int_subida:
If A = 8 Then
Portb = Portb
Print "Maximo valor posible: " ; A
Else
A = A + 1
Portb = A
Print "Contar: " ; A
End If
Return
Int_bajada:
If A = 0 Then
Portb = Portb
Print "Minimo valor posible: " ; A
Else
A = A - 1
Portb = A
Print "Contar: " ; A
End If
Return 'retorna el valor al DO
6. RESULTADOS
Con la función Step into code se procederá a simular línea por línea, obteniendo los siguientes
resultados:
Inicio en 0:
Las variables empezarán en sus valores iniciales de acuerdo al diagrama de flujo propuesto, en cuyo caso
inicia en 0. También, nuestro puerto de salida PORTB inicia en 0 al almacenar el valor de A=0.
Una vez dentro del bucle, se procederá realizar la primera interrupción a través de OC1A; de igual forma
se hará lo mismo para continuar con la simulación del sistema:
Se realizará las interrupciones; de igual forma se hará lo mismo para continuar con el conteo ascendente
y descendente una vez incrementado el valor:
Hemos llegado a nuestro limite ascendente del sistema, si accionamos otra interrupción externa INT0
aparecerá un mensaje el cual nos muestra que nuestro sistema ha llegado a su máximo valor.
Figura 18: Ventana del terminal para valor máximo
Una vez alcanzado nuestro valor máximo, procederemos a realizar la interrupción externa por INT1, así
nuestro sistema podrá descender de uno en uno hasta llegar a su valor mínimo.
Hemos llegado a nuestro limite descendente del sistema, si accionamos otra interrupción externa INT1
aparecerá un mensaje el cual nos muestra que nuestro sistema ha llegado a su mínimo valor posible.
Figura 27: Ventana del terminal para el valor mínimo
Una vez alcanzado nuestro valor mínimo, el sistema no podrá realizar conteos descendentes, así nuestro
sistema vuelve a nuestra condición inicial.
7. ANALISIS DE RESULTADOS
INTERRUPCIONES
CASOS VALORES INTERPRETACIÓN
EXTERNAS
CONDICIONES A=0
Condiciones iniciales del sistema
INICIALES PORTB=0
A=1
El valor de A se ha incrementado en 1 (A=1).
PORTB=1
Primer conteo de manera ascendente.
Contar: 1
A=2
El valor de A se ha incrementado en 1 (A=2).
PORTB=2
Segundo conteo de manera ascendente.
Contar: 2
A=3
El valor de A se ha incrementado en 1 (A=3).
PORTB=3
Tercer conteo de manera ascendente.
Contar: 3
A=4
El valor de A se ha incrementado en 1 (A=4).
PORTB=4
Cuarto conteo de manera ascendente.
Contar: 4
INT0 CASO 1
A=5
El valor de A se ha incrementado en 1 (A=5).
PORTB=5
Quinto conteo de manera ascendente.
Contar: 5
A=6
El valor de A se ha incrementado en 1 (A=6).
PORTB=6
Sexto conteo de manera ascendente.
Contar: 6
A=7
El valor de A se ha incrementado en 1 (A=7).
PORTB=7
Séptimo conteo de manera ascendente.
Contar: 7
A=8
El valor de A se ha incrementado en 1 (A=8).
PORTB=8
Octavo conteo de manera ascendente.
Contar: 8
A=8
PORTB=PORTB El sistema ha llegado a su límite superior y A ha
Máximo valor llegado a su valor máximo posible.
posible: 8
A=7
El valor de A se ha reducido en 1 (A=7). Primer
PORTB=7
conteo de manera descendente.
Contar: 7
A=6
El valor de A se ha reducido en 1 (A=6). Segundo
PORTB=6
conteo de manera descendente.
Contar: 6
A=5
El valor de A se ha reducido en 1 (A=5). Tercer
PORTB=5
conteo de manera descendente.
Contar: 5
A=4
El valor de A se ha reducido en 1 (A=4). Cuarto
PORTB=4
conteo de manera descendente.
Contar: 4
A=3
El valor de A se ha reducido en 1 (A=3). Quinto
PORTB=3
INT1 CASO 2 conteo de manera descendente.
Contar: 3
A=2
El valor de A se ha reducido en 1 (A=2). Sexto
PORTB=2
conteo de manera descendente.
Contar: 2
A=1
El valor de A se ha reducido en 1 (A=1). Séptimo
PORTB=1
conteo de manera descendente.
Contar: 1
A=0
El valor de A se ha reducido en 1 (A=0). Octavo
PORTB=0
conteo de manera descendente.
Contar: 0
A=0
PORTB=PORB El sistema ha llegado a su límite inferior y A ha
Mínimo valor llegado a su valor mínimo posible.
posible: 0
8. CONCLUSIONES
Nuestro código compilo y simuló la función requerida satisfactoriamente, lo que indica que
nuestro código está bien diseñado y no contiene errores.
A diferencia de otros softwares, BASCOM posee un Hardware Simulation integrado que permite
observar la simulación sin necesidad de otro software.
La función Step into Code del BASCOM permite un mayor control de nuestro código al compilar
línea por línea, si en caso existiera un error es más fácil encontrarlo gracias a esa función.
La interrupción externa AVR es útil para el manejo de pulsadores, detectores de cruce por 0,
teclados matriciales y mucho más.
Las interrupciones representan un atributo importante para todo sistema empotrado que le
permite atender procesos del mundo exterior sin descuidar actividades relevantes en la ejecución
del programa del usuario.
9. BIBLIOGRAFIA
BASCOM-8051 guía de usuario ,1995-2000 MCS Electronics, Traducido al español por J. Mengual
Tutorial AVR, Octavo Electrónica 2009 –2010, FISEI –UTA.
Zuta, N. (2019). UNIVERSIDAD NACIONAL DEL CALLAO ESCUELA DE POSGRADO. In Repositorio
institucional – UNAC. https://posgrado.unac.edu.pe/
Interrupción externa AVR - MICROCONTROLADORES. (n.d.). Retrieved September 20, 2020, from
http://microcontroladores-mrelberni.com/interrupcion-externa-avr/