Você está na página 1de 3

Objetivo:

Familiarizar al estudiante con las herramientas existentes para la simulacin


grafica de sistemas Microprocesados con el paquete de software Proteus; en
este caso utilizando el Atmega164p
1. Justificar mediante clculos el tiempo tomado en el numeral 1
de la prctica. Presentar sus clculos
Mediante el simulador del Atmega se obtiene un tiempo de 751us con una
frecuencia de 1MHz
1*1 = 1
1*249 = 249

ciclo de reloj (instruccin ldi)


ciclos de reloj (instruccin dec)

2*249-1 = 497 ciclos de reloj (instruccin brne)


1*1 = 1

ciclo de reloj (instruccin inc)

2*1 = 2

ciclos de reloj (instruccin rjmp)

1*1 = 1

ciclo de reloj (instruccin out)

Total ciclos de reloj = 1+249+497+1+2+1 = 751us

2. Modificar el programa para que alternativamente sea un


contador ascendente y luego descendente. Simular el diseo
y capturar la pantalla del analizador lgico con las 8 seales
individuales, en la que se pueda ver las secuencias
ascendentes y descendentes en forma alternada. Entregar el
listado del programa incluyendo comentarios y justificaciones

/*
* contadorad.asm
*
* Created: 16/05/2015 11:40:35
* Author: Jonathan Cacuango de la Torre
*/
.include "m164pdef.inc"
// definir variables
.def contador=r16 ;variable q utilizo como contador
.def tempo=r17 ;variable temporal
.def maximo=r18 ;
.cseg
.org 0x0000 ;inicio del programa
ldi contador,0 ;inicialio variable en cero
ldi tempo,0b11111111 ;almaceno el numero 255
ldi maximo,255 ;cargo el numero maximo al q va a llegar el contador
out ddra,tempo ;decalro como salida el puerto A
lazo: ;lazo mas externo
out porta,contador ;cargo en el puerto A la var contador
;ciclo de retraso
ldi tempo,255 ;cargo el numero 255
salto: ;es un ciclo de retraso
dec tempo ;decremento la variable tempo
brne salto ;comparo si es cero
inc contador ;incremento el contador
cp contador,maximo ;realizo una comparacion si llego al numero max deseado
brne lazo ;regreso a salto
decremento: ;ciclo de decremento
out porta,contador ;cargo el contador en el puerto A
;ciclo de retraso
ldi tempo,255 ; cargo 255 en la variabl temporal
salto1:
dec tempo ;deremento el contador
brne salto1 ;regreso a salto1
dec contador ;decremento el contador
brne decremento ;regreso a decremento
rjmp lazo ;regreso al lazo principal
3. Adicionalmente realizar lo que el instructor solicite

Bit que viaja de izquierda a derecha


/*
* registro.asm
*
* Created: 15/05/2015 12:49:45
* Author: Jonathan cacuango de la Torre
*/

.include"m164pdef.inc"
//definir variables
.def contador = R16 ; se define R16 como el contador
.def tempo = R17 ; este es un registro auxiliar
.cseg
.org 0x0000 ; todos los programas inician en 0x0000
ldi contador,1 ; inicio la cuenta en cero
ldi tempo,0b11111111 ; para definir al Puerto A como salida se debe
out ddra,tempo ; poner 1L en cada uno de los bits del DDRA
lazo: out porta,contador ; envo del contenido de contador al Puerto A
ldi r19,10
salto: ;ciclo de retraso
ldi tempo,10 ; se inicia una rutina de retardo
salto1: ;ciclo de retraso
ldi r18,80
salto2: ;ciclo de retraso
dec r18 ; salto se repite 80 veces
brne salto2 ; hasta que la bandera Z=1
dec tempo ;salto que se repite 10 veces
brne salto1
dec r19 ;salto que se repite 10 veces
brne salto
rol contador ; desplazo el bit hacia la izquierda
rjmp lazo ; repitir el proceso indefinidamente

Você também pode gostar