Вы находитесь на странице: 1из 8

UNIVERSIDAD AUTNOMA DE SAN LUIS POTOS

FACULTAD DE INGENIERA
REA MECNICA ELCTRICA

Laboratorio de

INGENIERIA DE CONTROL II

Prctica #.
Nombre de la prctica
Nombre: Ernesto Bermudez Martinez
Carrera: IMT
Instructor: Israel Garca Teniente

Fecha de entrega: 26 de septiembre de 2016


Objetivo:

Que el alumno conozca las caractersticas del AVR Mehenil y su entorno de


programacin, adems que programe una aplicacin, la simule y posteriormente la
descargue al dispositivo.

Desarrollo:

Ejemplo 1. Crear un programa que configure los pines del puerto B como entradas
y los pines del puerto C como salidas, en el cual todo lo que se ponga en el puerto
B, se ver reflejado en el puerto C.

Cdigo anexo al manual


.include"m88def.inc"
.cseg
.org 0x0000
; Declaracin de puertos
; puerto de entrada:
LDI R18,0X00
OUT DDRB, R18; declaracin de puerto b como entrada
OUT PORTB, R18; desactivar resistencia de pull-up de entrada

; puertos de salida
LDI R18,0XFF; declaracin de puerto c como salida
OUT PORTC, R18; estableciendo valor inicial de pines en 0.
;---------------------------------
; configuracin de perifricos:
; no se utiliza ningn perifrico
;-----------------------------------------------------------------------------
MAIN:
IN R19, PINB; cargando seal de puerto b.
OUT PORTC, R19; sacando por el puerto c la seal en el puerto b
RCALL
RETARDO
RJMP MAIN
;-----------------------------------------------------------------------------
; funcin para mantener por algunos segundos la operacin realizada

RETARDO:
LDI R20,0X01; contador
LDI R21,0XFF; valor final del contador.
CICLO:
NOP
NOP
NOP

INC R20
CPSE R21, R20; se salta la siguiente lnea o instruccin si r21=r20
RJMP CICLO
RET
Ejemplo 2. Crear un programa que use como entradas los 2 botones
momentneos y como salidas un display de 7 segmentos. De manera que haga lo
siguiente:

Cuando se presione el botn 0, se encendern los segmentos inferiores del


display.
Cuando se presione el botn 1, se encendern los segmentos superiores
del display.

Simular el programa en Proteus para verificar el funcionamiento y posteriormente


descargar el programa en la tarjeta Mehenil 2.

Cdigo anexo al manual

.include"m88def.inc"
.cseg
.org 0x0000
; Declaracin de puertos
; puerto de entrada:
LDI R18,0X00
OUT DDRB, R18; declaracin de puerto b como entrada
OUT PORTB, R18; desactivar resistencia de pull-up de entrada

; puertos de salida
LDI R18,0XFF; declaracin de puerto c como salida
OUT PORTC, R18; estableciendo valor inicial de pines en 0.
;---------------------------------
; configuracin de perifricos:
; no se utiliza ningn perifrico
;-----------------------------------------------------------------------------
MAIN:
ldi r18, 0x00 ; Valida que no se halla habilitado ningn pulsador
ldi r19, 0x01 ; Valida bit 0
ldi r20, 0x02 ;Valida bit 1
ldi r21, 0x03 ;Valida que no se hallan habilitado ambos.

in r22, pinc ;Cargando seal en pines c0 y c1


ldi r23, 0x03 ;Para enmascarar los bits 0 y 1 del registro
and r23, r22 ;Enmascaramiento de bit 0 y 1.

cpse r18, r23 ;Si no se activ ningun pulsador de reinicia ciclo


rjmp TRABAJO
rjmp MAIN

TRABAJO: cpse r21, r23 ;Se activaron ambos bits


rjmp SALIDAS
rjmp MAIN

SALIDAS:
cpse r20, r23 ; Valida si el bit activo es el c1 (si lo es hace un salto de linea)
rjmp ABAJO
rjmp ARRIBA ;----------------------------------------------------------------------------- ;Funcion para mantener
para ver que pulsador de activo.

ABAJO:
ldi r24, 0x0f ;Saca por puerto los bits de la parte de abajo.
out portb, r24
rjmp FIN

ARRIBA:
ldi r24, 0xf0 ;saca por puerto los bits de la parte de arriba.
out portb, r24
rjmp FIN

FIN:
rcall RETARDO ; Genera retardo en tiempo para ver resultado.
rjmp MAIN ;Se cicla proceso

Para generar un retardo en tiempo y ver el resultado de la comparacin


RETARDO:
ldi r25, 0x01 ;Contador
ldi r26, 0xff; Valor Final del contador
CICLO:
nop
nop
nop
nop
inc r25
cpse r26, r25 ;se salta la siguiente linea o instruccin si r21=r20
rjmp CICLO
ret
;--------------------------------------------------
Actividades:
a) Desarrollar un programa en AVR Studio para la tarjeta Mehenil 2, el cual
use como entradas los 2 botones momentneos y como salidas un display
de 7 segmentos. De manera que haga lo siguiente:
1- Cuando estn sin presionarse los botones el display debe indicar un 0.
2- Cuando se presione el botn 0, el display debe indicar 1.
3- Cuando se presione el botn 1, el display debe indicar 2.
4- Cuando se presionen ambos botones, el display debe indicar 3.
b) Verificar el correcto funcionamiento del programa mediante simulacin en
Proteus.

Codigo de tarea:

.include "m88def.inc"
.cseg
.org 0x0000

; Declaracion de puertos,Puertos de entrada:


LDI R18, 0xFC
OUT DDRC,R18
OUT PORTC, R18

;Puertos de salida:
LDI R18, 0xFF
OUT DDRB,
LDI R18, 0x00
OUT PORTB, R18
;---------------------------------------------------------
MAIN:
LDI R18,0x00
LDI R19,0x01
LDI R20,0x02
LDI R21,0x03
IN R22, PINC
LDI R23, 0x03
AND R23, R22

CERO:
cpi r23,0
brne UNO
ldi r16, 0X3F
out PORTB, r16
rjmp MAIN

UNO:
cpi r23,1
brne DOS
ldi r16, 0X06
out PORTB, r16
rjmp MAIN

DOS:
cpi r23,2
brne TRES
ldi r16, 0x5B
out PORTB, r16
rjmp MAIN

TRES:
cpi r23,3
brne MAIN
ldi r16, 0x4F
out PORTB, r16
rjmp MAIN

LDI R17,0X00

CICLO:
INC R17
NOP
NOP
NOP
NOP
NOP
NOP
NOP
CPI R17,0XFF
BRNE CICLO
RET

CAPTURAS DE PANTALLA DE LA SIMULACIN


Conclusiones:

Proteus es de gran ayuda para poder realizar la simulacin de las conexiones al


microcontrolador una vez que ya lo hayamos programado, para as poder
comprobar que se realiz el programa correctamente, adems de que nos
podemos asegurar de que lo hicimos correctamente, podemos asegurarnos de la
forma en que debe de ir conectados los dispositivos al microcontrolador.

Вам также может понравиться