practica 1 microcontroladores
DESCRIPTION
ejercicios propuestosTRANSCRIPT
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