Documentos de Académico
Documentos de Profesional
Documentos de Cultura
.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
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