practica 1 microcontroladores

37
Solución de la primera práctica calificada. 1. Diseñe un programa que controle el encendido de 8 Leds ubicados en el puerto D, Estos deben encender de dos en dos hasta que todos estén encendidos, el encendido debe comenzar cuando se cierra un interruptor ubicado en el pin pc0. Se pide: a) Realizar el diagrama de flujo del programa b)Escribir el programa; comente cada instrucción /* * PREGUNTA1.asm * * Created: 13/09/2015 05:37:30 p.m. * Author: */ .include "m8def.inc" ;Tipo de procesador .cseg ;Segmento de código para memoria flash .org 0x000 ; Dirección del Vector Roset rjmp inicio ; Salto para empezar desde inicio inicio: LDI R16,LOW(RAMEND) ; carga la configuración de la pila OUT SPL,R16 ; habilita la parte alta de la pila LDI R16,HIGH(RAMEND) ; carga la configuración de la pila OUT SPH,R16 ; habilito la parte baja de la pila LDI R16,$FF ; cargo R16=$FF OUT DDRD,R16 ; configuro puerto D como salida LDI R16,$00 ; cargo R16=$00 OUT PORTD,R16 ; envió $00 por el puerto D RCALL DELAY BUCLE: LDI R17,$05 ; cargo R17=$09 CICLO: OUT PORTD,R16 ; cargo al puerto D el contenido de R16 RCALL DELAY ; llamo un retardo de 100ms LSL R16 ; desplazo a la izquierda el contenido de R16

Upload: einsten-vargas-ventura

Post on 08-Dec-2015

215 views

Category:

Documents


0 download

DESCRIPTION

ejercicios propuestos

TRANSCRIPT

Solución de la primera práctica calificada.

1.  Diseñe un programa que controle el encendido de  8 Leds ubicados en el puerto D, Estos deben encender de dos en dos hasta que todos estén encendidos, el encendido debe comenzar cuando se cierra un interruptor ubicado en el pin pc0. Se pide:

a) Realizar el diagrama de flujo del programa

b) Escribir el programa; comente cada instrucción

/* * PREGUNTA1.asm * * Created: 13/09/2015 05:37:30 p.m.* Author:

*/ .include "m8def.inc" ;Tipo de procesador.cseg ;Segmento de código para memoria flash.org 0x000 ; Dirección del Vector Rosetrjmp inicio ; Salto para empezar desde inicio

inicio:LDI R16,LOW(RAMEND) ; carga la configuración de la pilaOUT SPL,R16 ; habilita la parte alta de la pilaLDI R16,HIGH(RAMEND) ; carga la configuración de la pilaOUT SPH,R16 ; habilito la parte baja de la pilaLDI R16,$FF ; cargo R16=$FFOUT DDRD,R16 ; configuro puerto D como salidaLDI R16,$00 ; cargo R16=$00OUT PORTD,R16 ; envió $00 por el puerto DRCALL DELAY

BUCLE:LDI R17,$05 ; cargo R17=$09

CICLO:OUT PORTD,R16 ; cargo al puerto D el contenido de R16RCALL DELAY ; llamo un retardo de 100msLSL R16 ; desplazo a la izquierda el contenido de R16LSL R16 ; desplazo a la izquierda el contenido de R16(??)SUBI R16,-(3) ; resto -(3) a R16DEC R17 ; decremento en 1 a R17BRNE ciclo ; salto a ciclo si R17 ES $00LDI R16,$00 ; cargo R16=$00RJMP BUCLE ; salto relativo a bucle

DELAY: LDI R18,60; cargo R18=$20

FOR_0:LDI R19,101 ; cargo R20=$101FOR_1:LDI R20,65 ; cargo R20=$65FOR_2:

DEC R20 ; decremento en 1 a R20BRNE FOR_2 ; salto a FOR_2 si R20 es $00DEC R19 ; decremento en 1 a R19BRNE FOR_1 ; salto a FOR_1 si R19 es $00 DEC R18 ; decremento en 1 a R18BRNE FOR_0 ; salto a FOR_1 si R18 es $00

RET ; retorno al programa principal

c) Presentar el circuito dejando listo para hacer pruebas en el laboratorio.

PB0/ICP114

PB1/OC1A15

PB2/SS/OC1B16

PB3/MOSI/OC217

PB4/MISO18

PB5/SCK19

PB6/TOSC1/XTAL19

PB7/TOSC2/XTAL210

PC6/RESET1

PD0/RXD2

PD1/TXD3

PD2/INT04

PD3/INT15

PD4/T0/XCK6

PD5/T111

PD6/AIN012

PD7/AIN113

PC0/ADC023

PC1/ADC124

PC2/ADC225

PC3/ADC326

PC4/ADC4/SDA27

PC5/ADC5/SCL28

AREF21

AVCC20

U2

ATMEGA8

12

X1CRYSTAL

C1

15pF

C2

1nF

R110k

R210k

R310k

OFFON12

43

DSW1

DIPSW_2

R4

220R5

220R6

220R7

220R8

220R9

220R10

220R11

220

D1LED-RED

D2LED-RED

D3LED-RED

D4LED-RED

D5LED-RED

D6LED-RED

D7LED-RED

D8LED-RED

d) Simular el funcionamiento de dicho circuito con el software Proteus.

PB0/ICP114

PB1/OC1A15

PB2/SS/OC1B16

PB3/MOSI/OC217

PB4/MISO18

PB5/SCK19

PB6/TOSC1/XTAL19

PB7/TOSC2/XTAL210PC6/RESET 1

PD0/RXD 2

PD1/TXD 3

PD2/INT0 4

PD3/INT1 5

PD4/T0/XCK 6

PD5/T1 11

PD6/AIN0 12

PD7/AIN1 13

PC0/ADC0 23

PC1/ADC1 24

PC2/ADC2 25

PC3/ADC3 26

PC4/ADC4/SDA 27

PC5/ADC5/SCL 28

AREF21

AVCC20

U2

ATMEGA8

12

X1CRYSTAL

C1

15pF

C2

1nF

R110k

R210k

R310k

OFFON12

43

DSW1

DIPSW_2

R4

220R5

220R6

220R7

220R8

220R9

220R10

220R11

220

D1LED-RED

D2LED-RED

D3LED-RED

D4LED-RED

D5LED-RED

D6LED-RED

D7LED-RED

D8LED-RED

2.  Un programa sigue los siguientes pasos:

Definición del procesador a emplearse. Definición de variables, en nuestro caso de tipo byte. Configuración de los puertos. Pin B0 salida.

a) Pone la salida B0 a “1” (prende LED) durante 300ms b) Pone la salida B0 a “0” (apaga LED) durante 300ms.

Repite a) y b) 10 veces Retardo de un segundo

c) Prende LED durante 500ms d) Apaga LED durante 200ms

Repite c ) y d ) 5 veces Retardo un segundo Repite de manera infinita.

I. Se pide escribir las instrucciones para implementar el programa.

/* * PREGUNTA2.asm * * Created: 13/09/2015 05:53:39 p.m. * Author: */ .include "m8def.inc" ;Tipo de procesador.cseg ; Segmento de codigo para memoria flash.org 0x000 ; Direccion del Vector Resetrjmp inicio ; Salto para empezar desde inicio

inicio:LDI R16,LOW(RAMEND) ; carga la configuracion de la pilaOUT SPL,R16 ; habilita la parte alta de la pilaLDI R16,HIGH(RAMEND) ; carga la configuracion de la pilaOUT SPH,R16 ; habilito la parte baja de la pilaLDI R16,$01 ; cargo R16=$01OUT DDRB,R16 ; configuro puerto B como salida

BUCLE:LDI R17,10 ; cargo R17=10

CICLO_1:SBI PORTB,0 ; pongo a 1 el PINB0RCALL DELAY_300MS ; llamo un retardo de 300mSCBI PORTB,0 ; pongo a 0 el PINB0RCALL DELAY_300MS ; llamo un retardo de 300mSDEC R17 ; decremento em 1 a R17BRNE CICLO_1 ; salto a ciclo_1 si R17=$00LDI R17,5 ; cargo R17=5

CICLO_2:SBI PORTB,0 ; pongo a 1 el PINB0RCALL DELAY_500MS ; llamo un retardo de 300mSCBI PORTB,0 ; pongo a 0 el PINB0RCALL DELAY_500MS ; llamo un retardo de 300mSDEC R17 ; decremento em 1 a R17BRNE CICLO_2 ; salto a ciclo_2 si R17=$00

RCALL DELAY_1SRJMP BUCLE ; salto relativo a bucle

DELAY_300MS:LDI R18,60 ; cargo R18=$60FOR_00:LDI R19,101 ; cargo R19=$101FOR_01:LDI R20,65 ; cargo R20=$65FOR_02:DEC R20 ; decremento en 1 a R20BRNE FOR_02 ; salto a FOR_02 si R20 es $00DEC R19 ; decremento en 1 a R19BRNE FOR_01 ; salto a FOR_1 si R19 es $00 DEC R18 ; decremento en 1 a R18BRNE FOR_00 ; salto a FOR_1 si R18 es $00RET

DELAY_500MS:LDI R18,100 ; cargo R18=$100FOR_10:LDI R19,101 ; cargo R19=$101FOR_11:LDI R20,65 ; cargo R20=$65FOR_12:DEC R20 ; decremento en 1 a R20BRNE FOR_12 ; salto a FOR_12 si R20 es $00DEC R19 ; decremento en 1 a R19BRNE FOR_11 ; salto a FOR_11 si R19 es $00 DEC R18 ; decremento en 1 a R18BRNE FOR_10 ; salto a FOR_10 si R18 es $00RET

DELAY_1S:LDI R18,200 ; cargo R18=$200FOR_20:LDI R19,101 ; cargo R19=$101FOR_21:LDI R20,65 ; cargo R20=$65FOR_22:DEC R20 ; decremento en 1 a R20BRNE FOR_22 ; salto a FOR_22 si R20 es $00DEC R19 ; decremento en 1 a R19BRNE FOR_21 ; salto a FOR_21 si R19 es $00 DEC R18 ; decremento en 1 a R18BRNE FOR_20 ; salto a FOR_20 si R18 es $00RET

II. Realice la simulación del sistemaNota: se presenta el circuito para realizar la simulación

PB0/ICP114

PB1/OC1A15

PB2/SS/OC1B16

PB3/MOSI/OC217

PB4/MISO18

PB5/SCK19

PB6/TOSC1/XTAL19

PB7/TOSC2/XTAL210

PC6/RESET1

PD0/RXD2

PD1/TXD3

PD2/INT04

PD3/INT15

PD4/T0/XCK6

PD5/T111

PD6/AIN012

PD7/AIN113

PC0/ADC023

PC1/ADC124

PC2/ADC225

PC3/ADC326

PC4/ADC4/SDA27

PC5/ADC5/SCL28

AREF21

AVCC20

U2

ATMEGA8

R1

220

D1LED-RED

PB0/ICP114

PB1/OC1A15

PB2/SS/OC1B16

PB3/MOSI/OC217

PB4/MISO18

PB5/SCK19

PB6/TOSC1/XTAL19

PB7/TOSC2/XTAL210

PC6/RESET1

PD0/RXD2

PD1/TXD3

PD2/INT04

PD3/INT15

PD4/T0/XCK6

PD5/T111

PD6/AIN012

PD7/AIN113

PC0/ADC023

PC1/ADC124

PC2/ADC225

PC3/ADC326

PC4/ADC4/SDA27

PC5/ADC5/SCL28

AREF21

AVCC20

U2

ATMEGA8

R1

220

D1LED-RED

3. Hacer funcionar un motor CD, con el integrado L293, tal que durante 5 segundos gire en un sentido y durante 5 segundos en el otro.

L293PB0

ATMEGA8

MOTOR DC

DRIVER

PB1

a) Realizar el diagrama de flujo del programab) Escriba las instrucciones

/* * PREGUNAT3.asm * * Created: 13/09/2015 06:04:23 p.m. * Author: */

/* * PREGUNTA_3.asm * * Created: 13/09/2015 04:01:39 p.m. * Author: Acedo */

.include "m8def.inc" ; Tipo de procesador

.cseg ; Segmento de codigo para memoria flash

.org 0x000 ; Direccion del Vector Resetrjmp inicio ; Salto para empezar desde inicio

inicio:LDI R16,LOW(RAMEND) ; carga la configuracion de la pilaOUT SPL,R16 ; habilita la parte alta de la pilaLDI R16,HIGH(RAMEND) ; carga la configuracion de la pilaOUT SPH,R16 ; habilito la parte baja de la pilaLDI R16,$03 ; cargo R16=$01OUT DDRB,R16 ; configuro puerto B como salida;..............................................................BUCLE:LDI R17,5 ; cargo R17=5;...............................................................CICLO_1:SBI PORTB,0 ; pongo a 1 el PINB0CBI PORTB,1 ; pongo a 0 el PINB0RCALL DELAY_1S ; llamo un retardo de 1SDEC R17 ; decremento em 1 a R17BRNE CICLO_1 ; salto a ciclo_1 si R17=$00LDI R17,5 ; cargo R17=5;...............................................................CICLO_2:SBI PORTB,1 ; pongo a 1 el PINB0CBI PORTB,0 ; pongo a 0 el PINB0RCALL DELAY_1S ; llamo un retardo de 1SDEC R17 ; decremento em 1 a R17

BRNE CICLO_2 ; salto a ciclo_2 si R17=$00RJMP BUCLE ; salto relativo a bucle;................................................................DELAY_1S:LDI R18,200 ; cargo R18=$200FOR_0:LDI R19,101 ; cargo R19=$101FOR_1:LDI R20,65 ; cargo R20=$65FOR_2:DEC R20 ; decremento en 1 a R20BRNE FOR_2 ; salto a FOR_2 si R20 es $00DEC R19 ; decremento en 1 a R19BRNE FOR_1 ; salto a FOR_1 si R19 es $00 DEC R18 ; decremento en 1 a R18BRNE FOR_0 ; salto a FOR_0 si R18 es $00RET;.................................................................

c) Realizar la simulación

PB0/ICP114

PB1/OC1A15

PB2/SS/OC1B16

PB3/MOSI/OC217

PB4/MISO18

PB5/SCK19

PB6/TOSC1/XTAL19

PB7/TOSC2/XTAL210PC6/RESET 1

PD0/RXD 2

PD1/TXD 3

PD2/INT0 4

PD3/INT1 5

PD4/T0/XCK 6

PD5/T1 11

PD6/AIN0 12

PD7/AIN1 13

PC0/ADC0 23

PC1/ADC1 24

PC2/ADC2 25

PC3/ADC3 26

PC4/ADC4/SDA 27

PC5/ADC5/SCL 28

AREF21

AVCC20

U2

ATMEGA8

IN12 OUT1 3

OUT2 6

OUT3 11

OUT4 14

IN27

IN310

IN415

EN11

EN29

VS

8

VSS

16

GND GND

U1

L293D

JRIVERA

4. Enunciado: Empleando el microcontrolador ATmega8 realizar el encendido intermitente (5veces) de 8 LED’s conectados en ánodo común al Puerto D. Luego de un retardo de 2 segundos un LED se desplaza desde el pin D0 a D7 y reversa, emulando las luces de auto fantástico, con un retardo de 150ms. Toda las acciones debe comenzar cundo se cierra un interruptor.

a) Realizar el diagrama de flujo del programa

b) Escriba las instrucciones comentadas.

/* * PREGUNTA4.asm

* * Created: 13/09/2015 06:17:24 p.m. * Author: */

.include "m8def.inc" ; Tipo de procesador.cseg ; Segmento de codigo para memoria flash.org 0x000 ; Direccion del Vector Resetrjmp inicio ; Salto para empezar desde inicio

inicio:LDI R16,LOW(RAMEND) ; carga la configuracion de la pila

OUT SPL,R16 ; habilita la parte alta de la pila

LDI R16,HIGH(RAMEND) ; carga la configuracion de la pilaOUT SPH,R16 ; habilito la parte baja de la pila

LDI R16,$FF ; cargo R16=$FFOUT DDRD,R16 ; configuro puerto D como salida

LDI R16,$00 ; cargo R16=$01OUT PORTD,R16 ; configuro puerto D como salida

LDI R17,5 ; cargo R17=$5

CICLO_1:LDI R16,$FF ; cargo R16=$FFOUT PORTD,R16 ; envio el valor de R16 al puerto D

RCALL DELAY_150MS ; llamo un retardo de 150mSLDI R16,$00 ; cargo R16=$00OUT PORTD,R16 ; envio el valor de R16 al puerto D

RCALL DELAY_150MS ; llamo un retardo de 150mSDEC R17 ; decremento em 1 a R17

BRNE CICLO_1 ; salta a ciclo_1 si R17=$00RCALL DELAY_1S ; llamo un retardo de 1SRCALL DELAY_1S ; llamo un retardo de 1S

CICLO_2:LDI R17,8 ; cargo R17=8LDI R16,1 ; cargo R16=1

CICLO_3:OUT PORTD,R16 ; envio el valor de R16 al puerto D

RCALL DELAY_150MS ; llamo un retardo de 150mSLSL R16 ; desplazo un bit a la izquierda de R16

DEC R17 ; decremento en 1 a R17

BRNE CICLO_3 ; salta a ciclo_3 si R17=$00LDI R17,8 ; cargo R17=8LDI R16,128 ; cargo R16=128

CICLO_4:OUT PORTD,R16 ; envio el valor de R16 al puerto D

RCALL DELAY_150MS ; llamo un retardo de 150mSLSR R16 ; desplazo un bit a la derecha de R16

DEC R17 ; decremento en 1 a R17

BRNE CICLO_4 ; salta a ciclo_4 si R17=$00RJMP CICLO_2 ; salto relativo a ciclo_2

DELAY_150MS:LDI R18,30 ; cargo R18=$30FOR_00:LDI R19,101 ; cargo R19=$101FOR_01:LDI R20,65 ; cargo R20=$65FOR_02:DEC R20 ; decremento en 1 a R20BRNE FOR_02 ; salto a FOR_2 si R20 es $00DEC R19 ; decremento en 1 a R19BRNE FOR_01 ; salto a FOR_1 si R19 es $00 DEC R18 ; decremento en 1 a R18BRNE FOR_00 ; salto a FOR_0 si R18 es $00RET

DELAY_1S:LDI R18,200 ; cargo R18=$200FOR_20:LDI R19,101 ; cargo R19=$101FOR_21:LDI R20,65 ; cargo R20=$65FOR_22:DEC R20 ; decremento en 1 a R20BRNE FOR_22 ; salto a FOR_2 si R22 es $00DEC R19 ; decremento en 1 a R19BRNE FOR_21 ; salto a FOR_1 si R21 es $00 DEC R18 ; decremento en 1 a R18BRNE FOR_20 ; salto a FOR_0 si R20 es $00RET

c) Hacer la simulación

Pregunta6.asm

Carga de registros y de Pila

Puerto B como salidaPuerto C como entrada

Lectura de PC0

PC0=1

PB0/ICP114

PB1/OC1A15

PB2/SS/OC1B16

PB3/MOSI/OC217

PB4/MISO18

PB5/SCK19

PB6/TOSC1/XTAL19

PB7/TOSC2/XTAL210

PC6/RESET1

PD0/RXD2

PD1/TXD3

PD2/INT04

PD3/INT15

PD4/T0/XCK6

PD5/T111

PD6/AIN012

PD7/AIN113

PC0/ADC023

PC1/ADC124

PC2/ADC225

PC3/ADC326

PC4/ADC4/SDA27

PC5/ADC5/SCL28

AREF21

AVCC20

U2

ATMEGA8

R4

220R5

220R6

220R7

220R8

220R9

220R10

220R11

220

D1LED-RED

D2LED-RED

D3LED-RED

D4LED-RED

D5LED-RED

D6LED-RED

D7LED-RED

D8LED-RED

5. Hacer los cambios en el programa p6 en caso de conectarse los LEDs en cátodo común.

6.-Realizar un juego de LEDs que se desplacen desde los extremos (D7 y D0 inicialmente encendidos) hacia el centro. Los LEDs están conectados al PORTB. Toda la acción de encendido debe comenzar cuando se cierra un interruptor ubicado en el pin PC0

DESARROLLO.

a) Realizar el diagrama de flujo del programa.

NO

SI

b) Escriba las instrucciones comentadas

/* * PREGUNTA6.asm * * Created: 11/09/2015 12:44:06 a.m. * Author: */

.Include "M8DEF.INC" ; CARGAMOS CARACTERISTICAS DEL ATMEGA

.CSEG ; AQUI COMIENSA SEGMENTO DEL CODIGO

.ORG 0x0000 ; INICIA EN LA DIRECCIÓN 0X000 DE LA MEMORIARJMP inicio ; SALTA A inicio

;................................................................................

inicio:

LDI R16,HIGH(RAMEND) ;CARGANDO CONFIGURACIóN DE LA PILAOUT SPH,R16 ;HABILITAR PARTE ALTA DE LA PILALDI R16,LOW(RAMEND) ;CARGANDO CONFIGURACION DE LA PILAOUT SPL,R16 ;HABILITANDO PARTE BAJA DE LA PILALDI R16,0XFF ;CARGANDO R16 CON (0XFF)OUT DDRB,R16 ;CONFIGURANDO PUERTO B COMO SALIDALDI R16,0X00 ;CARGANDO R16 CON 0X000=0B00000000OUT DDRC,R16 ;CONFIGURANDO PUERTO C COMO ENTRADALDI R16,0xff ;CARGANDO R16 CON 0XFF=0B11111111

OUT PORTB,R16 ;LOS LED ENCENDIDO INICIALMENTE;.....................................................................

PULSADOR: SBIC PINC,0 ;LEE EL PIN0 DEL PUERTO C,

RJMP PULSADOR ;SI PIN0=0 SALTA A PULSADOR SBIS PINC,0 ;LEE EL PIN0 DEL PUERTO C, RJMP LEDS ; SI PIN0=1 SALTA A LEDS

LEDS:

LDI R16,0XFF ;CARGANDO R16 CON 0XFF=0B11111111OUT PORTB,R16 ;INICIALMENTE ENCENDIDO TODO LOS LEDSRCALL DELAY_500MS ;LLAMA A RETARDO DE 500MSLDI R16,0b01111110 ;CARGANDO EL REGISTRO R16 CON 0b01111110OUT PORTB,R16 ;AVANZA UN BIT DES DE IZQUIRDA Y

DERECHA HACIA RCALL DELAY_500MS ;LLAMA A RETARDO DE 500MS LDI R16,0B00111100 ;CARGANDO R16 CON 0B00111100OUT PORTB,R16 ;AVANZA 2 BIT DES DE IZQUIRDA Y

DERECHA HACIA RCALL DELAY_500MS ;LLAMA A RUTINA DE RETARDO DE 500MSLDI R16,0B00011000 ;CARGANDO R16 CON 0B00011000OUT PORTB,R16 ;AVANZA 3 BIT DES DE IZQUIRDA Y

DERECHA HACIA RCALL DELAY_500MS ;LLAMA A RUTINA DE RETARDO DE 500MS

LDI R16,0B00000000 ;CARGANDO R16 CON 0B00000000OUT PORTB,R16 ;AVANZA 4 BIT DES DE IZQUIRDA Y

DERECHA HACIA RCALL DELAY_500MS ;LLAMA A RUTINA DE RETARDO DE 500MSRJMP LEDS ; CUANDO TODO LOS LEDS SE APAGARON VUELVE A

;..........................................................................

DELAY_500MS:LDI R17,100 ;CARGANDO R17 CON 100

FOR_1:

LDI R18,101 ;CARGANDO R18 CON 100FOR_2:

LDI R19,65 ;CARGANDO R19 CON 100

FOR_3:DEC R19 ; DECREMENTA EN 1 A R19BRNE FOR_3 ;SALTA A FOR_3 HASTA QUE R19 SEA DEC R18 ;DECREMENTA R18 EN 1BRNE FOR_2 ;SALTA A FOR_2 HASTA QUE R18=0DEC R17 ;DECREMENTA EN 1 AL REGISTRO R17BRNE FOR_1 ;SALTA A FOR_1 HASTA QUE R17=0

RET

C) Hacer la simulación.

Cuando el pulsador esta en 1, comienza a apagarse los leds de ambos lados hacia el centro.

PB0/ICP114

PB1/OC1A15

PB2/SS/OC1B16

PB3/MOSI/OC217

PB4/MISO18

PB5/SCK19

PB6/TOSC1/XTAL19

PB7/TOSC2/XTAL210

PC6/RESET1

PD0/RXD2

PD1/TXD3

PD2/INT04

PD3/INT15

PD4/T0/XCK6

PD5/T111

PD6/AIN012

PD7/AIN113

PC0/ADC023

PC1/ADC124

PC2/ADC225

PC3/ADC326

PC4/ADC4/SDA27

PC5/ADC5/SCL28

AREF21

AVCC20

U1

ATMEGA8

D1LED-RED

D2 D3LED-RED

D4LED-REDD5LED-RED

D6LED-RED

D7LED-RED D8LED-RED

R110k

+5V

OFF

ON

1 24 3

DSW1DIPSW_2

Cuando el pulsador esta en cero se quedan prendidos.

PB0/ICP1 14

PB1/OC1A 15

PB2/SS/OC1B 16

PB3/MOSI/OC2 17

PB4/MISO 18

PB5/SCK 19

PB6/TOSC1/XTAL1 9

PB7/TOSC2/XTAL2 10PC6/RESET1

PD0/RXD2

PD1/TXD3

PD2/INT04

PD3/INT15

PD4/T0/XCK6

PD5/T111

PD6/AIN012

PD7/AIN113

PC0/ADC023

PC1/ADC124

PC2/ADC225

PC3/ADC326

PC4/ADC4/SDA27

PC5/ADC5/SCL28

AREF 21

AVCC 20

U1

ATMEGA8

D1LED-RED

D2 D3LED-RED

D4LED-REDD5LED-RED

D6LED-RED

D7LED-RED D8LED-RED

R110k

+5V

OFF

ON

1 24 3

DSW1DIPSW_2

7.- Enunciado: Se conecta dos interruptores al PORTC<1:0> con pull-up internas y según el valor leído realice una acción determinada conforme al siguiente tabla de verdad:

PC1 PC0 PORTD0 0 LEDS apagados0 1 Auto fantástico1 0 LEDS intermitentes1 1 Juego de LEDS

El circuito de prueba, de acuerdo a las explicaciones dadas y con resistencias pull up internas activadas, se tiene el siguiente:

Función_00 Funcion_01 Funcion_02 Función_03

Ciclo_1

Pregunta7.asm

Carga de la Pila y de registros

Configuración del puerto D como salida

INICIO

LEDS

Desarrollo.

a) Realizar el diagrama de flujo del programas

b) Escriba las instrucciones comentada

/* * pregunta7.asm * * Created: 11/09/2015 09:39:37 p.m. * Author: */

.INCLUDE "M8DEF.INC" ;CARGANDO CARACTERISTICAS DEL ATMEGA8 .CSEG ;INICIO DEL SEGMENTO CODIGO .ORG 0X0000 ;DIRECCION DE INICIO 0X0000 RJMP INICIO ;.................................................................................

INICIO:

LDI R16,HIGH(RAMEND) ;CARGANADO CONFIGURACION DE LA PILA OUT SPH,R16 ;HABILITANDO LA PARTE HALTA DE LA PILA LDI R16,LOW(RAMEND) ;CARGANADO CONFIGURACION DE LA PILA OUT SPL,R16 ;HABILITANDO PARTE BAJA DE LA PILA

LDI R16,0XFF ;CARGANDO REGISTRO R16 CON 0XFF OUT DDRD,R16 ;CONFIGURANDO PUERTO D COMO SALIDA

LDI R16,0x0000 ;CARGANDO R16 CON 0X0000 OUT DDRC,R16 ;CONFIGURANDO PUERTO C COMO ENTRADA OUT PORTD,R16 ;ENVIO EL VALOR DE R16 AL PUERTO D;........................................................................................

LEDS:

IN R21,PINCANDI R21,$03CPI R21,0X0000BREQ FUNCION_00CPI R21,$01BREQ FUNCION_01CPI R21,$02BREQ FUNCION_2CPI R21,$03BREQ FUNCION_3RJMP LEDS

;............................................................................................

DELAY_150MS:

LDI R18,30 ;CARGANDO R18=$30FOR_00:

LDI R19,101 ;CARGANDO R19=$101FOR_01:

LDI R20,65 ;CARGANDO R20=$65FOR_02:

DEC R20 ;DECREMENTA EN 1,R20=R20-1BRNE FOR_02 ; SI R20 DIFERENTE DE CERO SALTADEC R19 ;DECREMENTA EN 1 REGISTRO R19BRNE FOR_01 ;SALTA SI R19 ES DIFRENTE DE CERODEC R18 ;DECREMENTA EN 1 REGISTRO R18BRNE FOR_00 ;SALTA SI R18 ES DIFERENTE DE CERORET

;.............................................................................................

FUNCION_00:LDI R16,$00OUT PORTD,R16RET

;...............................................................................................

FUNCION_01:LDI R17,8 ;CARGANDO R17=$08LDI R16,1 ;CARGANDO R16=$01

CICLO_1:OUT PORTD,R16 ;ENVIO VALOR DE R16 A PUERTO DRCALL DELAY_150MS ;LLAMADA AL RETARDOLSL R16 ;DESPLAZA UN BIT A LA IZQUIERDADEC R17 ;DECREMENTA R17BRNE CICLO_1 ;SI R17 DIFERENTE DE CERO, SALTALDI R17,8 ;CARGANDO R17=$08LDI R16,128 ;CARGANDO R16=128

CICLO_2:OUT PORTD,R16 ; ENVIO DE VALOR DE R16 AL

PUERTO DRCALL DELAY_150MS ; LLAMADA A RETARDOLSR R16 ;DESPLAZAMIENTO A LA DERECHA DE R16DEC R17 ;DECREMENTO DE R17BRNE CICLO_2 ; SALTO SI R17=0X0000RJMP LEDS

;..................................................................................................

FUNCION_2:

LDI R16,$FF ;CARGO R16=0XFFOUT PORTD,R16 ;ENVIO DEL VALOR DE R16 AL

PUERTO DRCALL DELAY_150MS ;LLAMADA A RETARDOLDI R16,$00 ;CARGANDO R16=0X000OUT PORTD,R16 ;ENVIO DEL VALOR DE R16 AL

PUERTP DRCALL DELAY_150MS ;LLAMADA A UN RETARDORJMP LEDS

;......................................................................................................

FUNCION_3:

LDI R16,129 ;CARGANDO REGISTRO R16=129OUT PORTD,R16 ;ENVIO VALOR DE REGISTRO AL

PUERTO DRCALL DELAY_150MS ;LLAMADA A RETARDOLDI R16,66 ; CARGANDO R16=66OUT PORTD,R16 ;ENVIANDO R16=66 AL PUERTO DRCALL DELAY_150MS ;LLAMADA A RETARDOLDI R16,36 ;CARGANDO R16=36OUT PORTD,R16 ;ENVIANDO R16=36 AL PUERTO DRCALL DELAY_150MS ;LLAMADA RETARDOLDI R16,24 ; CARGANDO R16=24OUT PORTD,R16 ;ENVIO DEL DATO AL PUERTO DRCALL DELAY_150MS ;LLAMADA A RETARDO

RJMP LEDS

;..............................................................................................................

c) Hacer la simulaciónPara PC1=0 Y PC0=0, LEDS APAGADOS

PB0/ICP114

PB1/OC1A15

PB2/SS/OC1B16

PB3/MOSI/OC217

PB4/MISO18

PB5/SCK19

PB6/TOSC1/XTAL19

PB7/TOSC2/XTAL210PC6/RESET 1

PD0/RXD 2

PD1/TXD 3

PD2/INT0 4

PD3/INT1 5

PD4/T0/XCK 6

PD5/T1 11

PD6/AIN0 12

PD7/AIN1 13

PC0/ADC0 23

PC1/ADC1 24

PC2/ADC2 25

PC3/ADC3 26

PC4/ADC4/SDA 27

PC5/ADC5/SCL 28

AREF21

AVCC20

U1

ATMEGA8

OFF ON 12

43

DSW1

DIPSW_2

D1LED-RED

R1330

R2

330R3330

R4330

R5330

R6330

R7330

R8330

D2LED-RED

D3LED-RED

D4LED-RED

D5LED-RED

D6LED-RED

D7LED-RED

D8LED-RED

Para PC1=0 y PC0=1, auto fantástico.

PB0/ICP114

PB1/OC1A15

PB2/SS/OC1B16

PB3/MOSI/OC217

PB4/MISO18

PB5/SCK19

PB6/TOSC1/XTAL19

PB7/TOSC2/XTAL210

PC6/RESET1

PD0/RXD2

PD1/TXD3

PD2/INT04

PD3/INT15

PD4/T0/XCK6

PD5/T111

PD6/AIN012

PD7/AIN113

PC0/ADC023

PC1/ADC124

PC2/ADC225

PC3/ADC326

PC4/ADC4/SDA27

PC5/ADC5/SCL28

AREF21

AVCC20

U1

ATMEGA8

OFF ON 12

43

DSW1

DIPSW_2

D1LED-RED

R1330

R2

330R3330

R4330

R5330

R6330

R7330

R8330

D2LED-RED

D3LED-RED

D4LED-RED

D5LED-RED

D6LED-RED

D7LED-RED

D8LED-RED

Para PC1=1 y PC0=0, Leds intermitentes

PB0/ICP114

PB1/OC1A15

PB2/SS/OC1B16

PB3/MOSI/OC217

PB4/MISO18

PB5/SCK19

PB6/TOSC1/XTAL19

PB7/TOSC2/XTAL210

PC6/RESET1

PD0/RXD2

PD1/TXD3

PD2/INT04

PD3/INT15

PD4/T0/XCK6

PD5/T111

PD6/AIN012

PD7/AIN113

PC0/ADC023

PC1/ADC124

PC2/ADC225

PC3/ADC326

PC4/ADC4/SDA27

PC5/ADC5/SCL28

AREF21

AVCC20

U1

ATMEGA8

OFF ON 12

43

DSW1

DIPSW_2

D1LED-RED

R1330

R2

330R3330

R4330

R5330

R6330

R7330

R8330

D2LED-RED

D3LED-RED

D4LED-RED

D5LED-RED

D6LED-RED

D7LED-RED

D8LED-RED

Para PC1=1 y PC0=1, Juego de LEDS

PB0/ICP114

PB1/OC1A15

PB2/SS/OC1B16

PB3/MOSI/OC217

PB4/MISO18

PB5/SCK19

PB6/TOSC1/XTAL19

PB7/TOSC2/XTAL210

PC6/RESET1

PD0/RXD2

PD1/TXD3

PD2/INT04

PD3/INT15

PD4/T0/XCK6

PD5/T111

PD6/AIN012

PD7/AIN113

PC0/ADC023

PC1/ADC124

PC2/ADC225

PC3/ADC326

PC4/ADC4/SDA27

PC5/ADC5/SCL28

AREF21

AVCC20

U1

ATMEGA8

OFF ON 12

43

DSW1

DIPSW_2

D1LED-RED

R1330

R2

330R3330

R4330

R5330

R6330

R7330

R8330

D2LED-RED

D3LED-RED

D4LED-RED

D5LED-RED

D6LED-RED

D7LED-RED

D8LED-RED

8.-Realizar un programa que realice el encendido y monitoreo de un motor a través de contactores.

Existen 3 pulsadores: uno de parada ( BP ) , uno de marcha ( BM) y uno para funcionamiento intermitente ( BI ) , y un sensor de supervisión ( S ) . En caso de presionar BM el motor funciona de manera permanente y si se cierra BP o S el motor se apaga. Con BI el motor funciona solo si este está presionado.

a) Realizar el diagrama de flujo del programa

Función_00 Funcion_01 Funcion_02

Ciclo_1

Ciclo_2

Pregunta7.asm

Carga de la Pila y de registros

Configuración del puerto D como salida

INICIO

LEDS

BREQ

b) Escriba las instrucciones comentada

/* * PREGUNTA8.asm * * Created: 11/09/2015 11:05:25 p.m. * Author: */

.INCLUDE "M8DEF.INC" ;CARGANDO CARACTERISTICAS DE ATMEGA8 .CSEG ;INICIO DE SEGMENTO DE CODIGO .ORG 0X000 ;POSICION DE INICIO DE MEMORIA RJMP INICIO

;..............................................................................

INICIO:

LDI R16,HIGH(RAMEND) ;CARGANDO CONFIGURACION DE LA PILAOUT SPH,R16 ;HABILITANDO LA PARTE BAJA DE LA PILALDI R16,LOW(RAMEND) ;CARGANDO CONFIGURACIÓN DE LA PILAOUT SPL,R16 ;HABILITANDO PARTE BAJA DE LA PILALDI R16,$FF ;CARGANDO R16=0XFFOUT DDRB,R16 ;CONFIGURANDO PUERTO B COMO SALIDALDI R16,$00 ;CARGANDO R16=$00OUT DDRD,R16 ;CONFIGURANDO COMO ENTRADA PUERTO COUT PORTD,R16 ;ENVIANDO EL VALOR R16 AL PUERTO BLDI R16,$00 ;CARGANDO R16 CON $FF

;................................................................................

BUCLE: IN R21,PINC ; LEE PUERTO Y GUARDA EN R21ANDI R21,$07 ;op AND Para convertir en cero el pin resetCPI R21,$01 ;COMPARANDO R21 CON $06BREQ FUNCION_0 ;SALTA A FUNCIO SI R21=$06CPI R21,$03 ;COMPARA R21 CON $05BREQ FUNCION_1 ;SALTA SI R21=$05CPI R21,$04 ;COMPARA R21 CON $03BREQ FUNCION_2 ;SALTA A LA ETIQUETA SI R21=$03RJMP BUCLE ;SALTO RELATIVO

;..........................................................................................

FUNCION_0:

LDI R21,$01 ;CARGANDO R16 CON 0X0000OUT PORTB,R21 ;ENVIANDO A LA SALIDA DEL

PUERTO DATO DE R16IN R21,PINC ; LEE PUERTO Y GUARDA EN R21ANDI R21,$07 ;op AND Para convertir en cero el pin

resetCPI R21,$01 ;COMPARANDO R21 CON $06BREQ FUNCION_0 ;SALTA A FUNCIO SI R21=$06LDI R18,$00OUT PORTB,R19RJMP BUCLE ;SALTO RELATIVO

;................................................................................

FUNCION_1:

LDI R18,$00 ;CARGANDO R16 CON $02OUT PORTB,R18 ;ENVIANDO AL PUERTO DE SALIDA BIN R21,PINC ; LEE PUERTO Y GUARDA EN R21ANDI R21,$07 ;op AND Para convertir en cero el pin

resetCPI R21,$03 ;COMPARANDO R21 CON $06BREQ FUNCION_1 ;SALTA A FUNCIO SI R21=$06LDI R18,$00OUT PORTB,R19RJMP BUCLE ;SALTO REALTIVO A FUNCION MOTOR

;................................................................................

FUNCION_2:

LDI R17,$01 ;CARGANDO R16 CON $02OUT PORTB,R17 ;ENVIANDO AL PUERTO B CONTENIDO

DE R16IN R21,PINC ; LEE PUERTO Y GUARDA EN R21ANDI R21,$07 ;op AND Para convertir en cero el pin

reCPI R21,$04 ;COMPARANDO R21 CON $03BREQ FUNCION_2 ;SI ES IGUAL SALTALDI R16,$00 ;CARGANDO R16 CON 00000OUT PORTB,R16 ;ENVIO DATO DE R16 A PUERTO BRJMP BUCLE

RET

c) Simulación.BI BP BM RESULTADO, MOTOR 0 0 1 Con un pulso comienza girar0 1 0 Parada, deja de girar el motor1 0 0 Gira solo cuando se pulsa

Aplicando un pulso BM comienza a girar el motorDespués se aplica un pulso BP y deja de girar el motorGira solo cuando se mantiene pulsado BI

Pregunta9.asm

Carga de la Pila y de registros

INICIO:

Puerto D como salida

PB0/ICP114

PB1/OC1A15

PB2/SS/OC1B16

PB3/MOSI/OC217

PB4/MISO18

PB5/SCK19

PB6/TOSC1/XTAL19

PB7/TOSC2/XTAL210

PC6/RESET1

PD0/RXD2

PD1/TXD3

PD2/INT04

PD3/INT15

PD4/T0/XCK6

PD5/T111

PD6/AIN012

PD7/AIN113

PC0/ADC023

PC1/ADC124

PC2/ADC225

PC3/ADC326

PC4/ADC4/SDA27

PC5/ADC5/SCL28

AREF21

AVCC20

U1

ATMEGA8

IN12

OUT13

OUT26

OUT311

OUT414

IN27

IN310

IN415

EN11

EN29

VS

8

VSS

16

GND GND

U2

L293D

BM

BP

BI

MOTOR

d) Hacer la simulación9.- Enunciado :Se desea visualizar en un display ánodo común, cada 500ms, los números 0 a 9 si el interruptor conectado a la línea PB0 está abierto y las letras H O-L-A si el interruptor está cerrado. El display está conectado en el PORTD<6:0>

a) Realizar el diagrama de flujo del programa

b) Escriba las instrucciones comentada

/* * AssemblerApplication1.asm * * Created: 12/09/2015 10:46:41 p.m. * Author: */

.INCLUDE "M8DEF.INC" ;CARGANDO CARACTERISTICAS DE ATMEGA8 .CSEG ;INICIO DEL SEGMENTO DE CODIGO .ORG 0X0000 ;DIRECCION DE INICIO RJMP INICIO ;SALTO RELATIVO A INCIO

;..............................................................................

INICIO:

LDI R16,HIGH(RAMEND) ;CARGANDO CONFIGURACION DE LA PILAOUT SPH,R16 ;HABILITANDO PARATE ALTA DE LA PILALDI R16,LOW(RAMEND) ;CARGANDO CONFIGURACION DE LA PILAOUT SPL,R16 ;HABILITANDO PARTE BAJA DE LA PILALDI R16,$FF ;CARGANDO FF AL REGISTRO R16OUT DDRD,R16 ;CONFIGURACION DE PUERTO D COMO SALIDALDI R16,$00 ;CARGANDO CEROS AL REGISTRO R16OUT DDRB,R16 ;CONFIGURANDO PUERTO B COMO ENTRADAOUT PORTD,R16 ;ENVIO DE VALOR DE R16 ALPUERTO R16LDI R16,$FF ;CARGO $FF AL REGISTRO R16OUT PORTB,R16 ;ENVIO VALOR DE REGISTRO R16 AL

PUERTO D

;................................................................................

BUCLE:IN R17,PINB ;CARGO ENR17 EL VALOR DEL PUERTO BANDI R17,$01 ;BINARIO ENTRE R17 Y $01CPI R17,$01 ;COMPARANDO R17 CON $01BREQ NUMERO ;SALTA A NUMERO SI r17=$01RJMP HOLA ; SI ES DIFERENTE SALTA A HOLA

;...........................................................................................

NUMERO:LDI R16,$40 ;CARGO R16 = $40OUT PORTD,R16 ;ENVIO EL VALOR R16 AL PUERTO DRCALL DELAY_NUM ;LLAMO UN RETARDO DE 150 mSLDI R16,$79 ;CARGO R16 = $79OUT PORTD,R16 ;ENVIO EL VALOR R16 AL PUERTO DRCALL DELAY_NUM ;LLAMO UN RETARDO DE 150 mSLDI R16,$24 ;CARGO R16 = $24OUT PORTD,R16 ;ENVIO EL VALOR R16 AL PUERTO DRCALL DELAY_NUM ;LLAMO UN RETARDO DE 150 mSLDI R16,$30 ;CARGO R16 = $30OUT PORTD,R16 ;ENVIO EL VALOR R16 AL PUERTO DRCALL DELAY_NUM ;LLAMO UN RETARDO DE 150 mSLDI R16,$19 ;CARGO R16 = $19OUT PORTD,R16 ;ENVIO EL VALOR R16 AL PUERTO DRCALL DELAY_NUM ;LLAMO UN RETARDO DE 150 mSLDI R16,$12 ;CARGO R16 = $12OUT PORTD,R16 ;ENVIO EL VALOR R16 AL PUERTO DRCALL DELAY_NUM ;LLAMO UN RETARDO DE 150 mSLDI R16,$03 ;CARGO R16 = $03OUT PORTD,R16 ;ENVIO EL VALOR R16 AL PUERTO DRCALL DELAY_NUM ;LLAMO UN RETARDO DE 150 mSLDI R16,$78 ;CARGO R16 = $7SOUT PORTD,R16 ;ENVIO EL VALOR R16 AL PUERTO DRCALL DELAY_NUM ;LLAMO UN RETARDO DE 150 mSLDI R16,$00 ;CARGO R16 = $00OUT PORTD,R16 ;ENVIO EL VALOR R16 AL PUERTO DRCALL DELAY_NUM ;LLAMADA A SUBRUTINA RETARDOLDI R16,$18 ;CARGO $18 AL REGISTRO R16OUT PORTD,R16 ;ENVIA AL PUERTO R16RCALL DELAY_NUM ; LLAMADA A UN RETARDO DE 500MSRJMP BUCLE

;................................................................................

HOLA:

LDI R16,$09 ;CARGO R16 = $09OUT PORTD,R16 ;ENVIO EL VALOR R16 AL PUERTO DRCALL DELAY_HOLA ;LLAMO UN RETARDO DE 150 mSLDI R16,$40 ;CARGO R16 = $40OUT PORTD,R16 ;ENVIO EL VALOR R16 AL PUERTO DRCALL DELAY_HOLA ;LLAMO UN RETARDO DE 150 mSLDI R16,$47 ;CARGO R16 = $47OUT PORTD,R16 ;ENVIO EL VALOR R16 AL PUERTO DRCALL DELAY_HOLA ;LLAMO UN RETARDO DE 150 mSLDI R16,$08 ;CARGO R16 = $08OUT PORTD,R16 ;ENVIO EL VALOR R16 AL PUERTO DRCALL DELAY_HOLA ;LLAMO UN RETARDO DE 150 mSRJMP BUCLE ;SALTO RELATIVO A BUCLE

;................................................................................

DELAY_NUM:

IN R17,PINB ;GUARDO EN R17 EL VALOR DEL PUERTO B ANDI ANDI R17,$01 ;BINARIA ENTRE R17 Y $01 CPI R17,$00 ;COMPARO R17 Y $01BREQ HOLA ;SALTA A HOLA LDI R18,100 ;CARGAO A R17=$00

FOR_01:LDI R19,101 ;CARGO VALOR 101 AL REGISTRO R19

FOR_02:LDI R20,65 ; CARGO 65 AL R20

FOR_03:DEC R20 ;DECREMENTO EN 1BRNE FOR_03 ;SI R20 ES IGUAL A CEROSDEC R19 ;DECREMENTA R19BRNE FOR_02 ;SALTA SI R19=0DEC R18 ;DECREMENTO EN 1 VALOR DE R18BRNE FOR_01 ; SALTO A FOR_01 SI R18=$00RET

;................................................................................

DELAY_HOLA:

IN R17,PINB ; GUARDO EN R17 VALOR PINBANDI R17,$01 ;ANDI BINARIA ENTRE R17 Y $01CPI R17,$01 ; COMAPRA R17 CON $01BREQ NUMERO ;SALTA SI R17=$01LDI R18,100 ;CARGO R18=100

FOR_11:LDI R19,101 ;CARGA CON $101 AL REGISTRO R19

FOR_12:LDI R20,65 ;CARGO A R20=65

FOR_13:DEC R20 ; DECREMENTANDO R20BRNE FOR_13 ;SALTO A FOR_13 SI R20=$00DEC R19 ;DECREMENTO EN 1 REGISTRO R19BRNE FOR_12 ; SALTO A FOR_13 SI R19=$00DEC R18 ;DECREMENTO EN 1 REGISTRO R18BRNE FOR_11 ;SALTO A FOR:11 SI R18=$00

RET

c) Hacer la simulaciónCuando el pulsador esta habierto

PB0/ICP114

PB1/OC1A15

PB2/SS/OC1B16

PB3/MOSI/OC217

PB4/MISO18

PB5/SCK19

PB6/TOSC1/XTAL19

PB7/TOSC2/XTAL210

PC6/RESET1

PD0/RXD2

PD1/TXD3

PD2/INT04

PD3/INT15

PD4/T0/XCK6

PD5/T111

PD6/AIN012

PD7/AIN113

PC0/ADC023

PC1/ADC124

PC2/ADC225

PC3/ADC326

PC4/ADC4/SDA27

PC5/ADC5/SCL28

AREF21

AVCC20

U1

ATMEGA8

Cuando el pulsador está cerrado

PB0/ICP114

PB1/OC1A15

PB2/SS/OC1B16

PB3/MOSI/OC217

PB4/MISO18

PB5/SCK19

PB6/TOSC1/XTAL19

PB7/TOSC2/XTAL210PC6/RESET 1

PD0/RXD 2

PD1/TXD 3

PD2/INT0 4

PD3/INT1 5

PD4/T0/XCK 6

PD5/T1 11

PD6/AIN0 12

PD7/AIN1 13

PC0/ADC0 23

PC1/ADC1 24

PC2/ADC2 25

PC3/ADC3 26

PC4/ADC4/SDA 27

PC5/ADC5/SCL 28

AREF21

AVCC20

U1

ATMEGA8

10.- Realizar un contador ascendente y descendente según si el interruptor conectado al PORTC.0 está abierto (ascendente ) o cerrado ( descendente ) . Los pulsos a contarse entran desde un

Pregunta10.asm

Carga de la PILA y de Registro

INICIO

PUERTO D COMO SALIDA Y PORT C ENTRADA

BUCLE_2

SBIS

BUCLE

DESCENDENTEASCENDENTE

NUMERO NUMERONUMEROS NUMEROS

BRNE BRNE

ASC - DES

pulsador conectado al PORTC.1. El número de pulsos es visualizado en un display cátodo común conectado al PORTD.

Desarrollo.

a) Realizar el diagrama de flujo del programa

b) Escriba las instrucciones comentada

/* * PREGUNTA10.asm * * Created: 13/09/2015 06:36:33 a.m. * Author: */

.INCLUDE "M8DEF.INC" ;CARGANDO CARACTERISTICAS DE ATMEGA8 .CSEG ;INICIO DEL SEGMENTO DE CODIGO .ORG 0X0000 ;DIRECCION DE INICIO RJMP INICIO ;SALTO RELATIVO A INICIO ;.............................................................................. INICIO:

LDI R16,HIGH(RAMEND) ;CARGANDO CONFIGURACION DE LA PILAOUT SPH,R16 ;HABILITANDO PARTE ALTA DE LA PILALDI R16,LOW(RAMEND) ;CARGANDO CONFIGURACION DE LA PILAOUT SPL,R16 ;HABILITANDO PARTE BAJA DE LA PILALDI R16,$FF ;CARGAMOS A R16 CON UNOSOUT DDRD,R16 ;CONFIGURANDO PUERTO D COMO SALIDALDI R16,$00 ;CARGAMOS A R16 CON CEROSOUT DDRC,R16 ;CONFIGURANDO PUERTO C COMO ENTRADAOUT PORTD,R16 ;ENVIANDO DATO DEL R16 AL PUERTO DLDI R16,$FF ;CARGAMOS AL R16 CON 1OUT PORTC,R16 ;ENVIO EL VALOR DE R16 AL PUERTO CLDI R18,$00 ;INICIALIZACION DE R18

;...................................................................................

LDI R16,$40 ;CARGAMOS A R16 CON 40HEXOUT PORTD,R16 ;ENVIO VALOR DE R16 AL PORT D

BUCLE_2:SBIS PINC,1 ;SALTA SI PIN1 DEL PUERTO C ES UNORJMP BUCLE_2 ;SALTO RELATIVO A BUCLE_2

BUCLE:SBIC PINC,0 ;SALTA SI PIN0 DEL PUERTO C ES CERORJMP ASCENDENTE ; SALTO RELATIVO A ASCENDENTERJMP DESCENDENTE ;SI POR0 DE C NO ES UNO SALTA A ETIQUETA

ASCENDENTE:SBIS PINC,1 ;NUEVAMENTE LEE PINC1 DE C Y SALTA SI ES

UNORJMP INCREMENTO ;SI PIN1 DE C ES UNO SALTA INCREMENTORJMP BUCLE ;SI PIN1 DE C NO ES UNO SALTA A BUCLE

DESCENDENTE:SBIS PINC,1 ;LEE PIN1 DE C Y SALTA SI ES UNORJMP DECREMENTO ;SALTA A DECREMENTO SI PIN1 DE C ES UNORJMP BUCLE ; SALTO CONDICIONAL A BUCLE

;......................................................................................

INCREMENTO:CPI R18,$09 ;COMPARANDO VALOR DE R18 CON 9BREQ BUCLE ;SALTA A BUCLE SI R18=$09INC R18 ;INCREMETA AL R18RJMP NUMERO ;SALTO RELATIVO A NUMERO

DECREMENTO:CPI R18,$00 ;CARGANDO R18 CON CEROSBREQ BUCLE ;SALTA A BUCLE SI R18=$00DEC R18 ; DECREMENTA R18RJMP NUMERO ;SALTO RELATIVO A NUMERO

;.........................................................................................

NUMERO:CPI R18,$00 ;COMPARANDO R18 CON$00BREQ CERO ;SI SON IGUALES SALTA A CEROCPI R18,$01 ;SI NO SON IGUALES COMPARA CON $01BREQ UNO ;SI SON IGUALES SALTA A ETIQUETA UNOCPI R18,$02 ;SI R18 NO IGUAL A 1 ENTONCES COMPRA CON 2BREQ DOS ;SI R18=2 ENTONCES SALTA A ETIQUETA DOSCPI R18,$03 ;SI R18 NO IGUAL A 2 ENTONCES COMPARA CON 3BREQ TRES ;SI R18 ES IGUAL A 3 SALTA A ETIQUETA TRESCPI R18,$04 ;SI R18 NO ES IGUAL A 4 ENTONCES COMPARA

CON 5BREQ CUATRO ;SI R18 ES 4 ENTONCES SALTA A ETIQUETA

CUATROCPI R18,$05 ;SI R18 NO ES 4 ENTONCES COMPARA CON 5BREQ CINCO ;SI R18 ES 5 SALTA A ETIQUETA CINCOCPI R18,$06 ;SI R18 NO ES 5 ENTONCES COMPARA CON 6BREQ SEIS ;SI R18 ES 6 SALTA A ETIQUETA SEISCPI R18,$07 ;SI R18 NO ES 6 ENTONCES COMPARA CON 7BREQ SIETE ;SI R18 ES 7 SALTA A ETIQUETA SIETECPI R18,$08 ;SI R18 NO ES 7 ENTONCES COMPARA CON 8BREQ OCHO ;SI R18 ES 8 SALTA A ETIQUETA OCHOCPI R18,$09 ;SI R18 NO ES 8 ENTONCES COMPARA CON 9BREQ NUEVE ;SI R18 ES 9 SALTA A ETIQUETA NUEVE

;................................................................................

CERO:LDI R16,$40 ;CARGAMOS A R16 CON 40HEXOUT PORTD,R16 ;EVIANDO VALOR DE R16 A PORT DRJMP BUCLE_2 ;SALTO RELATIVO A BUCLE_2

UNO:LDI R16,$79 ;CARGAMOS A R16 CON 79HEXOUT PORTD,R16 ;EVIANDO VALOR DE R16 A PORT DRJMP BUCLE_2 ;SALTO RELATIVO A BUCLE_2

DOS:LDI R16,$24 ;CARGAMOS A R16 CON 24HEXOUT PORTD,R16 ;EVIANDO VALOR DE R16 A PORT DRJMP BUCLE_2 ;SALTO RELATIVO A BUCLE_2

TRES:LDI R16,$30 ;CARGAMOS A R16 CON 30HEXOUT PORTD,R16 ;EVIANDO VALOR DE R16 A PORT DRJMP BUCLE_2 ;SALTO RELATIVO A BUCLE_2

CUATRO:LDI R16,$19 ;CARGAMOS A R16 CON 19HEXOUT PORTD,R16 ;EVIANDO VALOR DE R16 A PORT DRJMP BUCLE_2 ;SALTO RELATIVO A BUCLE_2

CINCO:LDI R16,$12 ;CARGAMOS A R16 CON 12HEXOUT PORTD,R16 ;EVIANDO VALOR DE R16 A PORT DRJMP BUCLE_2 ;SALTO RELATIVO A BUCLE_2

SEIS:LDI R16,$03 ;CARGAMOS A R16 CON 03HEXOUT PORTD,R16 ;EVIANDO VALOR DE R16 A PORT DRJMP BUCLE_2 ;SALTO RELATIVO A BUCLE_2

SIETE:LDI R16,$78 ;CARGAMOS A R16 CON 78HEXOUT PORTD,R16 ;EVIANDO VALOR DE R16 A PORT DRJMP BUCLE_2 ;SALTO RELATIVO A BUCLE_2

OCHO:LDI R16,$00 ;CARGAMOS A R16 CON 00HEX

OUT PORTD,R16 ;EVIANDO VALOR DE R16 A PORT DRJMP BUCLE_2 ;SALTO RELATIVO A BUCLE_2

NUEVE:LDI R16,$18 ;CARGAMOS A R16 CON 19HEXOUT PORTD,R16 ;EVIANDO VALOR DE R16 A PORT DRJMP BUCLE_2 ;SALTO RELATIVO A BUCLE_2

;................................................................................

c) Hacer la simulaciónCuando activador abierto contador ascendente

PB0/ICP114

PB1/OC1A15

PB2/SS/OC1B16

PB3/MOSI/OC217

PB4/MISO18

PB5/SCK19

PB6/TOSC1/XTAL19

PB7/TOSC2/XTAL210

PC6/RESET1

PD0/RXD2

PD1/TXD3

PD2/INT04

PD3/INT15

PD4/T0/XCK6

PD5/T111

PD6/AIN012

PD7/AIN113

PC0/ADC023

PC1/ADC124

PC2/ADC225

PC3/ADC326

PC4/ADC4/SDA27

PC5/ADC5/SCL28

AREF21

AVCC20

U1

ATMEGA8

ACTIVADOR

PULSO

Contador descendente cuando el buton activador está cerrado.

PB0/ICP114

PB1/OC1A15

PB2/SS/OC1B16

PB3/MOSI/OC217

PB4/MISO18

PB5/SCK19

PB6/TOSC1/XTAL19

PB7/TOSC2/XTAL210

PC6/RESET1

PD0/RXD2

PD1/TXD3

PD2/INT04

PD3/INT15

PD4/T0/XCK6

PD5/T111

PD6/AIN012

PD7/AIN113

PC0/ADC023

PC1/ADC124

PC2/ADC225

PC3/ADC326

PC4/ADC4/SDA27

PC5/ADC5/SCL28

AREF21

AVCC20

U1

ATMEGA8

ACTIVADOR

PULSO