Está en la página 1de 4

MICROCONTROLADORES

TEMA: REALIZACIN DE EJERCICIOS


1. PROGRAMA : CONTROL DE LEd
Microcontrolador ATMEGA 8
Objetivo:
Encender y apagar cada segundo un led conectado al Pin 14 que
corresponde a el puerto B1
Esquema elctrico:
_____________________________________
Programa en Asembler
;////////////////// Practica 1 /////////////////////
;--------------- LED Intermitente ------------------; Demuestra como Prender y Apagar un Led Indefinidamente
; Conecte un LED al Pin 15 (Pb0)
; micro: ATmega8
;---------------------------------------------------;///////////////////////////////////////////////////

.include "m8def.inc"
;Libreria en assembler para el micro ATmega8
.org $0000
ldi
r16,low(ramend)
out
spl,r16
;Inicializa el Stack Pointer
ldi
r16,high(ramend)
out
sph,r16
ser
r16
;Coloca FF en el registro R16
out
ddrb,r16
;Configura el Puerto B como SALIDAS
;--------------------------------------------------LOOP:
sbi
portb,1
; Coloca un 1 logico en el Pin 14 (Pb0)
rcall DELAY
; Llama a la rutina de Retardo
cbi
portb,1
; Coloca un 0 logico en el Pin 14 (Pb0)
rcall DELAY
; Llama a la rutina de Retardo
rjmp LOOP
; Salta a la etiqueta LOOP indefinidamente
;--------------------------------------------------DELAY:
;Rutina de Retardo Llamada DELAY= 1 segundo
ldi R17, $1F ;Cristal= 6 MHz
ZZ:
ldi R18, $FD
YY:
ldi R19, $FE
XX:
dec R19
brne XX
dec R18
brne YY
dec R17
brne ZZ
; -------------------------------------------------; delaying 12 cycles:
ldi R17, $04
WW:
dec R17
brne WW
ret
Nota: Se pide
a) Realizar el circuito dejando listo para hacer pruebas
b) Realizar el diagrama de fluje del programa
c) Comente cada instruccin del programa
________________________________________

MICROCONTROLADORES

Tarea Acadmica:
1. Disee un Circuito que controle el encendido de 8 Leds, estos deben encender
uno a uno de izquierda a derecha.
Realizar el circuito dejando listo para ahcer pruebas
Realizar el diagrama de flujo del programa
Hacer el programa en asembler y comente cada instruccin
2. Disee un Circuito que controle el encendido de 8 Leds, Estos deben encender
de dos en dos hasta que todos estn encendidos.
Realizar el circuito dejando listo para ahcer pruebas
Realizar el diagrama de flujo del programa
Hacer el programa en asembler y comente cada instruccin
3. Disee un Circuito que controle el encendido de 12 Leds, el encendido ser de
manera aleatoria a conveniencia del programador.
Realizar el circuito dejando listo para ahcer pruebas
Realizar el diagrama de flujo del programa
Hacer el programa en asembler y comente cada instruccin

2. PROGRAMA: CONTROL DE LEDS


Microcontrolador Atmega 8
Objetivo:
Controlar el encendido y apagado de unos Leds conectados al puerto B, utilizando dos
pulsadores
Realizar el circuito dejando listo para ahcer pruebas
Realizar el diagrama de flujo del programa
Hacer el programa en asembler y comente cada instruccin
_____________________________________
;////////////////// Practica 2 /////////////////////
;------------------ Lectura de un Pulsador ---------------; Demuestra como Prender y Apagar unos Led Indefinidamente
; Con dos Pulsadores utilizando un ATmega8
;---------------------------------------------------------;///////////////////////////////////////////////////
.include "m8def.inc"
; Libreria en assembler para el micro ATmega8
.org $0000
ldi r16,low(ramend)
out spl,r16
; Inicializa el Stack Pointer
ldi r16,high(ramend)
out sph,r16
ldi
r16,0b11111001
; Carga los bit 11111001 en R16
out
ddrb,r16 ;Configura el Puerto B como SALIDAS y Pb1
;Pb2 como entrada
;---------------------------------------------------------Leer:
2

MICROCONTROLADORES
sbic pinb,1 ;Si el Pulsador Conectado en Pb1= 1?,Salta a la etiqueta
Rutina1.
rjmp Rutina1
sbic pinb,2 ;Si el Pulsador Conectado en Pb1= 1?,Salta a la etiqueta
Apaga.
rjmp Rutina2
rjmp Leer
Rutina1:
sbi portb,3 ;Coloca un 1 en el Pin 3 del Puerto B. (Pb3= 1), "Led
Encendido"
Rcall Retardo
cbi portb,3
sbi portb,4
Rcall Retardo
cbi portb,4
sbi portb,5
Rcall Retardo
cbi portb,5
Rcall Retardo
rjmp Leer
; salta a la etiqueta Leer
Rutina1: ldi r16,0b00111000
out portb,r16 ;Coloca un 1 en el Pin 3,4,5 del Puerto B. "Leds
Encendidos"
Rcall Retardo
ldi r16,0b00000000
out portb,r16 ;Coloca un 0 en el Pin 3,4,5 del Puerto B. "Leds
Apagados"
Rcall Retardo
rjmp Leer
; salta a la etiqueta Leer
3. Programa Ruleta
Realizar el circuito dejando listo para ahcer pruebas
Realizar el diagrama de flujo del programa
Hacer el programa en asembler y comente cada instruccin
;////////////////// Proyecto 3 /////////////////////////////
;--------------- Reuleta ----------------------------------; Se coloca 8 leds en el puerto D
; Conecte un pulsador al Pin 14 (Pb0)
; micro: ATmega8
;----------------------------------------------------------;///////////////////////////////////////////////////////////

.include "m8def.inc"
; Libreria en assembler para el micro ATmega8
.org $0000
INIT_SP:
ldi r16,low(ramend)
out spl,r16
;Inicializa el Stack Pointer
ldi r16,high(ramend)
out sph,r16
INIT_PORT:
ser r16
out ddrd,r16
;Configura el Puerto D como SALIDAS
ldi r16,0b11111110
out ddrb,r16
;Configura el Puerto B como SALIDAS y Pb0 como
entrada
ldi r16,0b00000001

MICROCONTROLADORES
READ:
sbic pinb,0
rjmp STOP
out portd,r16
rjmp READ
LOOP:
ROTATE:

sbis pinb,0
rjmp READ
out portd,r16
rcall delay
lsl r16
brcc LOOP
ldi r16,$01
rjmp LOOP

STOP:
ldi r22,$04
ldi r23,$02
rcall STOP1
ldi r22,$03
ldi r23,$04
rcall STOP1
ldi r22,$02
ldi r23,$08
rcall STOP1
rjmp READ
STOP1:
RET0:
RET1:

RET2:

DELAY:

mov r21,r22
mov r20,r23
out portd,r16
rcall delay
dec r20
brne RET1
lsl r16
brcc RET2
ldi r16,$01
dec r21

brne RET0
ret

ldi R17, $5F


ldi R18, $17
ldi R19, $79
dec R19
brne WGLOOP2
dec R18
brne WGLOOP1
dec R17
brne WGLOOP0
; ----------------------------; delaying 3 cycles:
ldi R17, $01
WGLOOP3:
dec R17
brne WGLOOP3
; ----------------------------; delaying 2 cycles:
nop
nop
; =============================
Ret
WGLOOP0:
WGLOOP1:
WGLOOP2:

También podría gustarte