Académique Documents
Professionnel Documents
Culture Documents
; cargo R17=$09
; cargo al puerto D el contenido de R16
; llamo un retardo de 100ms
; desplazo a la izquierda el contenido
; desplazo a la izquierda el contenido
; resto -(3) a R16
; decremento en 1 a R17
; salto a ciclo si R17 ES $00
; cargo R16=$00
; salto relativo a bucle
LDI R18,60
; cargo R18=$20
FOR_0:
LDI R19,101
FOR_1:
LDI R20,65
FOR_2:
DEC R20
; cargo R20=$101
; cargo R20=$65
; decremento en 1 a R20
BRNE FOR_2
DEC R19
BRNE FOR_1
DEC R18
BRNE FOR_0
RET
principal
R2
R3
10k
10k
U2
15pF
C1
X1
14
15
16
17
18
19
9
10
CRYSTAL
C2
DSW1
PB0/ICP1
PB1/OC1A
PB2/SS/OC1B
PB3/MOSI/OC2
PB4/MISO
PB5/SCK
PB6/TOSC1/XTAL1
PB7/TOSC2/XTAL2
1nF
21
20
AREF
AVCC
PC0/ADC0
PC1/ADC1
PC2/ADC2
PC3/ADC3
PC4/ADC4/SDA
PC5/ADC5/SCL
PC6/RESET
PD0/RXD
PD1/TXD
PD2/INT0
PD3/INT1
PD4/T0/XCK
PD5/T1
PD6/AIN0
PD7/AIN1
23
24
25
26
27
28
1
ON
1
2
OFF
4
3
DIPSW_2
R4
R5
R6
220
R7
220
R8
220
R9
220
R10
220
R11
220
2
3
4
5
6
11
12
13
220
220
ATMEGA8
D1
D2
D3
D4
D5
D6
D7
D8
LED-RED
LED-RED
LED-RED
LED-RED
LED-RED
LED-RED
LED-RED
LED-RED
R2
R3
10k
10k
U2
15pF
C1
X1
14
15
16
17
18
19
9
10
CRYSTAL
C2
PB0/ICP1
PB1/OC1A
PB2/SS/OC1B
PB3/MOSI/OC2
PB4/MISO
PB5/SCK
PB6/TOSC1/XTAL1
PB7/TOSC2/XTAL2
1nF
21
20
AREF
AVCC
DSW1
PC0/ADC0
PC1/ADC1
PC2/ADC2
PC3/ADC3
PC4/ADC4/SDA
PC5/ADC5/SCL
PC6/RESET
PD0/RXD
PD1/TXD
PD2/INT0
PD3/INT1
PD4/T0/XCK
PD5/T1
PD6/AIN0
PD7/AIN1
ATMEGA8
23
24
25
26
27
28
1
2
3
4
5
6
11
12
13
ON
1
2
OFF
4
3
DIPSW_2
R4
R5
R6
220
R7
220
R8
220
R9
220
R10
220
R11
220
220
220
D1
D2
D3
D4
D5
D6
D7
D8
LED-RED
LED-RED
LED-RED
LED-RED
LED-RED
LED-RED
LED-RED
LED-RED
2.
CICLO_1:
SBI PORTB,0
RCALL DELAY_300MS
CBI PORTB,0
RCALL DELAY_300MS
DEC R17
BRNE CICLO_1
LDI R17,5
; pongo a 1 el PINB0
; llamo un retardo de 300mS
; pongo a 0 el PINB0
; llamo un retardo de 300mS
; decremento em 1 a R17
; salto a ciclo_1 si R17=$00
; cargo R17=5
CICLO_2:
SBI PORTB,0
RCALL DELAY_500MS
CBI PORTB,0
RCALL DELAY_500MS
DEC R17
BRNE CICLO_2
; pongo a 1 el PINB0
; llamo un retardo de 300mS
; pongo a 0 el PINB0
; llamo un retardo de 300mS
; decremento em 1 a R17
; salto a ciclo_2 si R17=$00
RCALL DELAY_1S
RJMP BUCLE
DELAY_300MS:
LDI R18,60
FOR_00:
LDI R19,101
FOR_01:
LDI R20,65
FOR_02:
DEC R20
BRNE FOR_02
DEC R19
BRNE FOR_01
DEC R18
BRNE FOR_00
RET
DELAY_500MS:
LDI R18,100
FOR_10:
LDI R19,101
FOR_11:
LDI R20,65
FOR_12:
DEC R20
BRNE FOR_12
DEC R19
BRNE FOR_11
DEC R18
BRNE FOR_10
RET
DELAY_1S:
LDI R18,200
FOR_20:
LDI R19,101
FOR_21:
LDI R20,65
FOR_22:
DEC R20
BRNE FOR_22
DEC R19
BRNE FOR_21
DEC R18
BRNE FOR_20
RET
; cargo R18=$100
; cargo R19=$101
; cargo R20=$65
; decremento en 1 a R20
; salto a FOR_12 si R20 es $00
; decremento en 1 a R19
; salto a FOR_11 si R19 es $00
; decremento en 1 a R18
; salto a FOR_10 si R18 es $00
; cargo R18=$200
; cargo R19=$101
; cargo R20=$65
; decremento en 1 a R20
; salto a FOR_22 si R20 es $00
; decremento en 1 a R19
; salto a FOR_21 si R19 es $00
; decremento en 1 a R18
; salto a FOR_20 si R18 es $00
II.
D1
LED-RED
U2
14
15
16
17
18
19
9
10
21
20
PB0/ICP1
PB1/OC1A
PB2/SS/OC1B
PB3/MOSI/OC2
PB4/MISO
PB5/SCK
PB6/TOSC1/XTAL1
PB7/TOSC2/XTAL2
AREF
AVCC
PC0/ADC0
PC1/ADC1
PC2/ADC2
PC3/ADC3
PC4/ADC4/SDA
PC5/ADC5/SCL
PC6/RESET
PD0/RXD
PD1/TXD
PD2/INT0
PD3/INT1
PD4/T0/XCK
PD5/T1
PD6/AIN0
PD7/AIN1
23
24
25
26
27
28
1
2
3
4
5
6
11
12
13
ATMEGA8
R1
220
D1
LED-RED
U2
14
15
16
17
18
19
9
10
21
20
PB0/ICP1
PB1/OC1A
PB2/SS/OC1B
PB3/MOSI/OC2
PB4/MISO
PB5/SCK
PB6/TOSC1/XTAL1
PB7/TOSC2/XTAL2
AREF
AVCC
PC0/ADC0
PC1/ADC1
PC2/ADC2
PC3/ADC3
PC4/ADC4/SDA
PC5/ADC5/SCL
PC6/RESET
PD0/RXD
PD1/TXD
PD2/INT0
PD3/INT1
PD4/T0/XCK
PD5/T1
PD6/AIN0
PD7/AIN1
23
24
25
26
27
28
1
2
3
4
5
6
11
12
13
ATMEGA8
L293
PB1
ATMEGA8
MOTOR DC
PB0
DRIVER
; Tipo de procesador
; Segmento de codigo para memoria flash
; Direccion del Vector Reset
; 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 pila
OUT SPH,R16
; habilito la parte baja de la pila
LDI R16,$03
; cargo R16=$01
OUT DDRB,R16
; configuro puerto B como salida
;..............................................................
BUCLE:
LDI R17,5
; cargo R17=5
;...............................................................
CICLO_1:
SBI PORTB,0
; pongo a 1 el PINB0
CBI PORTB,1
; pongo a 0 el PINB0
RCALL DELAY_1S
; llamo un retardo de 1S
DEC R17
; decremento em 1 a R17
BRNE CICLO_1
; salto a ciclo_1 si R17=$00
LDI R17,5
; cargo R17=5
;...............................................................
CICLO_2:
SBI PORTB,1
; pongo a 1 el PINB0
CBI PORTB,0
; pongo a 0 el PINB0
RCALL DELAY_1S
; llamo un retardo de 1S
DEC R17
; decremento em 1 a R17
BRNE CICLO_2
; salto a ciclo_2 si R17=$00
RJMP BUCLE
; salto relativo a bucle
;................................................................
DELAY_1S:
LDI R18,200
; cargo R18=$200
FOR_0:
LDI R19,101
; cargo R19=$101
FOR_1:
LDI R20,65
; cargo R20=$65
FOR_2:
DEC R20
; decremento en 1 a R20
BRNE FOR_2
; salto a FOR_2 si R20 es $00
DEC R19
; decremento en 1 a R19
BRNE FOR_1
; salto a FOR_1 si R19 es $00
DEC R18
; decremento en 1 a R18
BRNE FOR_0
; salto a FOR_0 si R18 es $00
RET
;.................................................................
c) Realizar la simulacin
U2
14
15
16
17
18
19
9
10
21
20
PB0/ICP1
PB1/OC1A
PB2/SS/OC1B
PB3/MOSI/OC2
PB4/MISO
PB5/SCK
PB6/TOSC1/XTAL1
PB7/TOSC2/XTAL2
PC0/ADC0
PC1/ADC1
PC2/ADC2
PC3/ADC3
PC4/ADC4/SDA
PC5/ADC5/SCL
PC6/RESET
PD0/RXD
PD1/TXD
PD2/INT0
PD3/INT1
PD4/T0/XCK
PD5/T1
PD6/AIN0
PD7/AIN1
AREF
AVCC
23
24
25
26
27
28
1
2
3
4
5
6
11
12
13
ATMEGA8
JRIVERA
16
2
7
1
9
10
15
IN1
IN2
EN1
EN2
IN3
IN4
VSS
GND
U1
8
VS
OUT1
OUT2
OUT3
GND OUT4
3
6
11
14
L293D
.include "m8def.inc"
.cseg
.org 0x000
rjmp inicio
; Tipo de procesador
; Segmento de codigo para memoria flash
; Direccion del Vector Reset
; Salto para empezar desde inicio
inicio:
LDI R16,LOW(RAMEND)
OUT SPL,R16
LDI R16,HIGH(RAMEND)
OUT SPH,R16
LDI R16,$FF
OUT DDRD,R16
; cargo R16=$FF
; configuro puerto D como salida
LDI R16,$00
OUT PORTD,R16
; cargo R16=$01
; configuro puerto D como salida
LDI R17,5
; cargo R17=$5
CICLO_1:
LDI R16,$FF
OUT PORTD,R16
; cargo R16=$FF
; envio el valor de R16 al puerto D
RCALL DELAY_150MS
LDI R16,$00
OUT PORTD,R16
RCALL DELAY_150MS
DEC R17
BRNE CICLO_1
RCALL DELAY_1S
RCALL DELAY_1S
CICLO_2:
LDI R17,8
LDI R16,1
; cargo R17=8
; cargo R16=1
CICLO_3:
OUT PORTD,R16
RCALL DELAY_150MS
LSL R16
R16
DEC R17
BRNE CICLO_3
LDI R17,8
LDI R16,128
CICLO_4:
OUT PORTD,R16
RCALL DELAY_150MS
LSR R16
DEC R17
BRNE CICLO_4
RJMP CICLO_2
DELAY_150MS:
LDI R18,30
FOR_00:
LDI R19,101
FOR_01:
LDI R20,65
FOR_02:
DEC R20
BRNE FOR_02
DEC R19
BRNE FOR_01
DEC R18
BRNE FOR_00
RET
; cargo R18=$30
; cargo R19=$101
; cargo R20=$65
; decremento en 1 a R20
; salto a FOR_2 si R20 es $00
; decremento en 1 a R19
; salto a FOR_1 si R19 es $00
; decremento en 1 a R18
; salto a FOR_0 si R18 es $00
DELAY_1S:
LDI R18,200
FOR_20:
LDI R19,101
FOR_21:
LDI R20,65
FOR_22:
DEC R20
BRNE FOR_22
DEC R19
BRNE FOR_21
DEC R18
BRNE FOR_20
RET
; cargo R18=$200
; cargo R19=$101
; cargo R20=$65
; decremento en 1 a R20
; salto a FOR_2 si R22 es $00
; decremento en 1 a R19
; salto a FOR_1 si R21 es $00
; decremento en 1 a R18
; salto a FOR_0 si R20 es $00
c) Hacer la simulacin
U2
14
15
16
17
18
19
9
10
21
20
PB0/ICP1
PB1/OC1A
PB2/SS/OC1B
PB3/MOSI/OC2
PB4/MISO
PB5/SCK
PB6/TOSC1/XTAL1
PB7/TOSC2/XTAL2
AREF
AVCC
ATMEGA8
PC0/ADC0
PC1/ADC1
PC2/ADC2
PC3/ADC3
PC4/ADC4/SDA
PC5/ADC5/SCL
PC6/RESET
PD0/RXD
PD1/TXD
PD2/INT0
PD3/INT1
PD4/T0/XCK
PD5/T1
PD6/AIN0
PD7/AIN1
23
24
25
26
27
28
1
2
3
4
5
6
11
12
13
R4
R5
R6
220
R7
220
R8
220
R9
220
R10
220
R11
220
220
220
D1
D2
D3
D4
D5
D6
D7
D8
LED-RED
LED-RED
LED-RED
LED-RED
LED-RED
LED-RED
LED-RED
LED-RED
Lectura de PC0
NO
PC0=1
SI
DELAY_500MS
LEDS
/*
* PREGUNTA6.asm
*
* Created: 11/09/2015 12:44:06 a.m.
* Author:
*/
.Include "M8DEF.INC"
.CSEG
.ORG 0x0000
RJMP inicio
;
;
;
;
;................................................................................
inicio:
LDI R16,HIGH(RAMEND)
OUT SPH,R16
LDI R16,LOW(RAMEND)
OUT SPL,R16
LDI R16,0XFF
OUT DDRB,R16
LDI R16,0X00
OUT DDRC,R16
ENTRADA
LDI R16,0xf
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=0B11111111
OUT PORTB,R16
;INICIALMENTE ENCENDIDO TODO LOS LEDS
RCALL DELAY_500MS
;LLAMA A RETARDO DE 500MS
LDI R16,0b01111110
;CARGANDO EL REGISTRO R16 CON 0b01111110
OUT 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 0B00111100
OUT PORTB,R16
;AVANZA 2 BIT DES DE IZQUIRDA Y
DERECHA HACIA
RCALL DELAY_500MS
;LLAMA A RUTINA DE RETARDO DE 500MS
LDI R16,0B00011000
;CARGANDO R16 CON 0B00011000
OUT 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 0B00000000
OUT PORTB,R16
;AVANZA 4 BIT DES DE IZQUIRDA Y
DERECHA HACIA
RCALL DELAY_500MS
;LLAMA A RUTINA DE RETARDO DE 500MS
RJMP LEDS
; CUANDO TODO LOS LEDS SE APAGARON VUELVE A
;..........................................................................
DELAY_500MS:
LDI R17,100
LDI R18,101
LDI R19,65
DEC R19
BRNE FOR_3
DEC R18
BRNE FOR_2
DEC R17
BRNE FOR_1
; DECREMENTA EN 1 A R19
;SALTA A FOR_3 HASTA QUE R19 SEA
;DECREMENTA R18 EN 1
;SALTA A FOR_2 HASTA QUE R18=0
;DECREMENTA EN 1 AL REGISTRO R17
;SALTA A FOR_1 HASTA QUE R17=0
FOR_1:
FOR_2:
FOR_3:
RET
C) Hacer la simulacin.
Cuando el pulsador esta en 1, comienza a apagarse los leds de ambos lados
hacia el centro.
+5V
U1
23
24
25
26
27
28
1
R1
4
3
OFF
ON
1
2
10k
PC0/ADC0
PC1/ADC1
PC2/ADC2
PC3/ADC3
PC4/ADC4/SDA
PC5/ADC5/SCL
PC6/RESET
DSW1
DIPSW_2
2
3
4
5
6
11
12
13
PD0/RXD
PD1/TXD
PD2/INT0
PD3/INT1
PD4/T0/XCK
PD5/T1
PD6/AIN0
PD7/AIN1
PB0/ICP1
PB1/OC1A
PB2/SS/OC1B
PB3/MOSI/OC2
PB4/MISO
PB5/SCK
PB6/TOSC1/XTAL1
PB7/TOSC2/XTAL2
AREF
AVCC
14
15
16
17
18
19
9
10
D1 D2
D3
LED-RED
LED-RED
21
20
ATMEGA8
D4LED-REDD5
LED-RED
D6
LED-RED
D7
LED-RED D8
LED-RED
+5V
U1
23
24
25
26
27
28
1
R1
PC0/ADC0
PC1/ADC1
PC2/ADC2
PC3/ADC3
PC4/ADC4/SDA
PC5/ADC5/SCL
PC6/RESET
1
2
10k
ON
DSW1
4
3
OFF
DIPSW_2
2
3
4
5
6
11
12
13
PD0/RXD
PD1/TXD
PD2/INT0
PD3/INT1
PD4/T0/XCK
PD5/T1
PD6/AIN0
PD7/AIN1
PB0/ICP1
PB1/OC1A
PB2/SS/OC1B
PB3/MOSI/OC2
PB4/MISO
PB5/SCK
PB6/TOSC1/XTAL1
PB7/TOSC2/XTAL2
14
15
16
17
18
19
9
10
D1
D2
LED-RED
AREF
AVCC
D3
LED-RED
D4LED-REDD5
LED-RED
D6
LED-RED
D7
LED-RED
D8
LED-RED
21
20
ATMEGA8
Desarrollo.
a) Realizar el diagrama de flujo del programas
LEDS
INICIO
.INCLUDE "M8DEF.INC"
.CSEG
.ORG 0X0000
RJMP INICIO
;.................................................................................
INICIO:
LDI R16,HIGH(RAMEND)
OUT SPH,R16
LDI R16,LOW(RAMEND)
OUT SPL,R16
LDI R16,0XFF
OUT DDRD,R16
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,PINC
ANDI R21,$03
CPI R21,0X0000
BREQ FUNCION_00
CPI R21,$01
BREQ FUNCION_01
CPI R21,$02
BREQ FUNCION_2
CPI R21,$03
BREQ FUNCION_3
RJMP LEDS
;............................................................................................
DELAY_150MS:
FOR_00:
FOR_01:
LDI R18,30
;CARGANDO R18=$30
LDI R19,101
;CARGANDO R19=$101
LDI R20,65
;CARGANDO R20=$65
FOR_02:
DEC R20
;DECREMENTA EN 1,R20=R20-1
BRNE FOR_02
; SI R20 DIFERENTE DE CERO SALTA
DEC R19
;DECREMENTA EN 1 REGISTRO R19
BRNE FOR_01
;SALTA SI R19 ES DIFRENTE DE CERO
DEC R18
;DECREMENTA EN 1 REGISTRO R18
BRNE FOR_00
;SALTA SI R18 ES DIFERENTE DE CERO
RET
;.............................................................................................
FUNCION_00:
LDI R16,$00
OUT PORTD,R16
RET
;...............................................................................................
FUNCION_01:
LDI R17,8
;CARGANDO R17=$08
CICLO_1:
CICLO_2:
LDI R16,1
;CARGANDO R16=$01
OUT PORTD,R16
RCALL DELAY_150MS
LSL R16
DEC R17
BRNE CICLO_1
LDI R17,8
LDI R16,128
OUT PORTD,R16
PUERTO D
;CARGO R16=0XFF
;ENVIO DEL VALOR DE R16 AL
RCALL DELAY_150MS
;LLAMADA A RETARDO
LDI R16,$00
;CARGANDO R16=0X000
OUT PORTD,R16
;ENVIO DEL VALOR DE R16 AL
PUERTP D
PUERTO D
LDI R16,129
OUT PORTD,R16
RCALL DELAY_150MS
LDI R16,66
OUT PORTD,R16
RCALL DELAY_150MS
LDI R16,36
OUT PORTD,R16
RCALL DELAY_150MS
LDI R16,24
OUT PORTD,R16
RCALL DELAY_150MS
;LLAMADA A RETARDO
; CARGANDO R16=66
;ENVIANDO R16=66 AL PUERTO D
;LLAMADA A RETARDO
;CARGANDO R16=36
;ENVIANDO R16=36 AL PUERTO D
;LLAMADA RETARDO
; CARGANDO R16=24
;ENVIO DEL DATO AL PUERTO D
;LLAMADA A RETARDO
RJMP LEDS
;..............................................................................................................
c) Hacer la simulacin
Para PC1=0 Y PC0=0, LEDS APAGADOS
U1
14
15
16
17
18
19
9
10
PB0/ICP1
PB1/OC1A
PB2/SS/OC1B
PB3/MOSI/OC2
PB4/MISO
PB5/SCK
PB6/TOSC1/XTAL1
PB7/TOSC2/XTAL2
21
20
AREF
AVCC
DSW1
PC0/ADC0
PC1/ADC1
PC2/ADC2
PC3/ADC3
PC4/ADC4/SDA
PC5/ADC5/SCL
PC6/RESET
PD0/RXD
PD1/TXD
PD2/INT0
PD3/INT1
PD4/T0/XCK
PD5/T1
PD6/AIN0
PD7/AIN1
23
24
25
26
27
28
1
OFF
4
3
ON
1
2
DIPSW_2
2
3
4
5
6
11
12
13
ATMEGA8
R1
R2
330
330
R3
R4
R5
R6
R7
R8
330
330
330
330
330
330
D1
D2
LED-RED
D3
D4
D5
D6
D7
D8
21
20
PB0/ICP1
PB1/OC1A
PB2/SS/OC1B
PB3/MOSI/OC2
PB4/MISO
PB5/SCK
PB6/TOSC1/XTAL1
PB7/TOSC2/XTAL2
AREF
AVCC
DSW1
PC0/ADC0
PC1/ADC1
PC2/ADC2
PC3/ADC3
PC4/ADC4/SDA
PC5/ADC5/SCL
PC6/RESET
PD0/RXD
PD1/TXD
PD2/INT0
PD3/INT1
PD4/T0/XCK
PD5/T1
PD6/AIN0
PD7/AIN1
23
24
25
26
27
28
1
4
3
OFF
ON
1
2
DIPSW_2
2
3
4
5
6
11
12
13
ATMEGA8
R1
R2
330
330
R3
R4
R5
R6
R7
R8
330
330
330
330
330
330
D1
D2
LED-RED
D3
D4
D5
D6
D7
D8
U1
14
15
16
17
18
19
9
10
DSW1
PB0/ICP1
PB1/OC1A
PB2/SS/OC1B
PB3/MOSI/OC2
PB4/MISO
PB5/SCK
PB6/TOSC1/XTAL1
PB7/TOSC2/XTAL2
21
20
AREF
AVCC
PC0/ADC0
PC1/ADC1
PC2/ADC2
PC3/ADC3
PC4/ADC4/SDA
PC5/ADC5/SCL
PC6/RESET
PD0/RXD
PD1/TXD
PD2/INT0
PD3/INT1
PD4/T0/XCK
PD5/T1
PD6/AIN0
PD7/AIN1
23
24
25
26
27
28
1
OFF
4
3
ON
1
2
DIPSW_2
2
3
4
5
6
11
12
13
ATMEGA8
R2
R1
330
330
R3
R4
R5
R6
R7
R8
330
330
330
330
330
330
D1
D2
LED-RED
D3
D4
D5
D6
D7
D8
21
20
PB0/ICP1
PB1/OC1A
PB2/SS/OC1B
PB3/MOSI/OC2
PB4/MISO
PB5/SCK
PB6/TOSC1/XTAL1
PB7/TOSC2/XTAL2
AREF
AVCC
DSW1
PC0/ADC0
PC1/ADC1
PC2/ADC2
PC3/ADC3
PC4/ADC4/SDA
PC5/ADC5/SCL
PC6/RESET
PD0/RXD
PD1/TXD
PD2/INT0
PD3/INT1
PD4/T0/XCK
PD5/T1
PD6/AIN0
PD7/AIN1
23
24
25
26
27
28
1
4
3
OFF
ON
1
2
DIPSW_2
2
3
4
5
6
11
12
13
ATMEGA8
R1
R2
330
330
R3
R4
R5
R6
R7
R8
330
330
330
330
330
330
D1
D2
LED-RED
D3
D4
D5
D6
D7
D8
Pregunta7.asm
Carga de la Pila y
de registros
Configuracin del
puerto D como
salida
INICIO
LEDS
Funcin_
00
Funcion_
01
Ciclo_1
Funcion_
02
Ciclo_2
BREQ
;..............................................................................
INICIO:
LDI R16,HIGH(RAMEND)
;CARGANDO CONFIGURACION DE LA PILA
OUT SPH,R16
;HABILITANDO LA PARTE BAJA DE LA PILA
LDI R16,LOW(RAMEND)
;CARGANDO CONFIGURACIN DE LA PILA
OUT SPL,R16
;HABILITANDO PARTE BAJA DE LA PILA
LDI R16,$FF
;CARGANDO R16=0XFF
OUT DDRB,R16
;CONFIGURANDO PUERTO B COMO SALIDA
LDI R16,$00
;CARGANDO R16=$00
OUT DDRD,R16
;CONFIGURANDO COMO ENTRADA PUERTO
OUT PORTD,R16
LDI R16,$00
;................................................................................
BUCLE:
IN R21,PINC
ANDI R21,$07
CPI R21,$01
BREQ FUNCION_0
CPI R21,$03
BREQ FUNCION_1
CPI R21,$04
BREQ FUNCION_2
RJMP BUCLE
;SALTA SI R21=$05
;COMPARA R21 CON $03
;SALTA A LA ETIQUETA SI R21=$03
;SALTO RELATIVO
;..........................................................................................
FUNCION_0:
LDI R21,$01
OUT PORTB,R21
PUERTO DATO DE R16
IN R21,PINC
ANDI R21,$07
CPI R21,$01
BREQ FUNCION_0
LDI R18,$00
OUT PORTB,R19
RJMP BUCLE
;................................................................................
FUNCION_1:
LDI R18,$00
OUT PORTB,R18
IN R21,PINC
ANDI R21,$07
CPI R21,$03
BREQ FUNCION_1
LDI R18,$00
OUT PORTB,R19
RJMP BUCLE
;................................................................................
FUNCION_2:
LDI R17,$01
OUT PORTB,R17
CONTENIDO DE R16
IN R21,PINC
ANDI R21,$07
CPI R21,$04
BREQ FUNCION_2
LDI R16,$00
OUT PORTB,R16
RJMP BUCLE
RET
c) Simulacin.
BI
BP
0
0
0
1
1
0
BM
1
0
0
RESULTADO, MOTOR
Con un pulso comienza girar
Parada, deja de girar el motor
Gira solo cuando se pulsa
21
20
BM
PB0/ICP1
PB1/OC1A
PB2/SS/OC1B
PB3/MOSI/OC2
PB4/MISO
PB5/SCK
PB6/TOSC1/XTAL1
PB7/TOSC2/XTAL2
PC0/ADC0
PC1/ADC1
PC2/ADC2
PC3/ADC3
PC4/ADC4/SDA
PC5/ADC5/SCL
PC6/RESET
PD0/RXD
PD1/TXD
PD2/INT0
PD3/INT1
PD4/T0/XCK
PD5/T1
PD6/AIN0
PD7/AIN1
AREF
AVCC
23
24
25
26
27
28
1
2
3
4
5
6
11
12
13
BP
BI
ATMEGA8
16
2
7
1
9
10
15
IN1
IN2
EN1
EN2
IN3
IN4
VSS
U2
8
VS
OUT1
OUT2
3
6
MOTOR
GND
OUT3
GND OUT4
11
14
L293D
Pregunta9.asm
d) Hacer la simulacin
INICIO:
9.- Enunciado :Se desea
visualizar en un display nodo comn, cada
500ms, los nmeros 0 a 9 si el interruptor conectado a la lnea PB0 est
abierto y las letras H O-L-A si el interruptor est cerrado. El display est
conectado en el PORTD<6:0>
Puerto D como salida
a) Realizar el diagrama de flujo del programa
BUCLE:
BRNE
DELAY_NUMERO
NUMERO:
HOLA:
DELAY_HOLA
;..............................................................................
INICIO:
LDI R16,HIGH(RAMEND)
;CARGANDO CONFIGURACION DE LA PILA
OUT SPH,R16
;HABILITANDO PARATE ALTA DE LA PILA
LDI R16,LOW(RAMEND)
;CARGANDO CONFIGURACION DE LA PILA
OUT SPL,R16
;HABILITANDO PARTE BAJA DE LA PILA
LDI R16,$FF
;CARGANDO FF AL REGISTRO R16
OUT DDRD,R16
;CONFIGURACION DE PUERTO D COMO
SALIDA
ENTRADA
PUERTO D
LDI R16,$00
OUT DDRB,R16
OUT PORTD,R16
LDI R16,$FF
OUT PORTB,R16
;................................................................................
BUCLE:
IN R17,PINB
;CARGO ENR17 EL VALOR DEL PUERTO B
ANDI R17,$01
;BINARIO ENTRE R17 Y $01
CPI R17,$01
;COMPARANDO R17 CON $01
BREQ NUMERO
;SALTA A NUMERO SI r17=$01
RJMP HOLA
; SI ES DIFERENTE SALTA A HOLA
;...........................................................................................
NUMERO:
LDI
R16,$40
OUT
PORTD,R16
RCALL DELAY_NUM
LDI
R16,$79
OUT
PORTD,R16
RCALL DELAY_NUM
LDI
R16,$24
OUT
PORTD,R16
RCALL DELAY_NUM
LDI
R16,$30
OUT
PORTD,R16
RCALL DELAY_NUM
LDI
R16,$19
OUT
PORTD,R16
RCALL DELAY_NUM
LDI
R16,$12
OUT
PORTD,R16
RCALL DELAY_NUM
LDI
R16,$03
OUT
PORTD,R16
RCALL DELAY_NUM
LDI
R16,$78
OUT
PORTD,R16
RCALL DELAY_NUM
LDI
R16,$00
OUT
PORTD,R16
RCALL DELAY_NUM
LDI R16,$18
OUT PORTD,R16
RCALL DELAY_NUM
RJMP BUCLE
;................................................................................
HOLA:
LDI
R16,$09
;CARGO R16 = $09
OUT
PORTD,R16
;ENVIO EL VALOR R16 AL PUERTO
RCALL DELAY_HOLA ;LLAMO UN RETARDO DE 150 mS
LDI
R16,$40
;CARGO R16 = $40
OUT
PORTD,R16
;ENVIO EL VALOR R16 AL PUERTO
RCALL DELAY_HOLA ;LLAMO UN RETARDO DE 150 mS
LDI
R16,$47
;CARGO R16 = $47
OUT
PORTD,R16
;ENVIO EL VALOR R16 AL PUERTO
RCALL DELAY_HOLA ;LLAMO UN RETARDO DE 150 mS
LDI
R16,$08
;CARGO R16 = $08
OUT
PORTD,R16
;ENVIO EL VALOR R16 AL PUERTO
RCALL DELAY_HOLA ;LLAMO UN RETARDO DE 150 mS
RJMP BUCLE
;SALTO RELATIVO A BUCLE
;................................................................................
D
D
D
D
DELAY_NUM:
FOR_01:
FOR_02:
FOR_03:
IN R17,PINB
ANDI R17,$01
CPI R17,$00
BREQ HOLA
LDI R18,100
LDI R19,101
LDI R20,65
; CARGO 65 AL R20
DEC R20
;DECREMENTO EN 1
BRNE FOR_03
;SI R20 ES IGUAL A CEROS
DEC R19
;DECREMENTA R19
BRNE FOR_02
;SALTA SI R19=0
DEC R18
;DECREMENTO EN 1 VALOR DE R18
BRNE FOR_01
; SALTO A FOR_01 SI R18=$00
RET
;................................................................................
DELAY_HOLA:
IN R17,PINB
ANDI R17,$01
CPI R17,$01
BREQ NUMERO
LDI R18,100
LDI R19,101
LDI R20,65
;CARGO A R20=65
DEC R20
BRNE FOR_13
DEC R19
BRNE FOR_12
DEC
R18
BRNE FOR_11
; DECREMENTANDO R20
;SALTO A FOR_13 SI R20=$00
;DECREMENTO EN 1 REGISTRO R19
; SALTO A FOR_13 SI R19=$00
;DECREMENTO EN 1 REGISTRO R18
;SALTO A FOR:11 SI R18=$00
FOR_11:
FOR_12:
FOR_13:
RET
c) Hacer la simulacin
Cuando el pulsador esta habierto
U1
14
15
16
17
18
19
9
10
21
20
PB0/ICP1
PB1/OC1A
PB2/SS/OC1B
PB3/MOSI/OC2
PB4/MISO
PB5/SCK
PB6/TOSC1/XTAL1
PB7/TOSC2/XTAL2
AREF
AVCC
PC0/ADC0
PC1/ADC1
PC2/ADC2
PC3/ADC3
PC4/ADC4/SDA
PC5/ADC5/SCL
PC6/RESET
PD0/RXD
PD1/TXD
PD2/INT0
PD3/INT1
PD4/T0/XCK
PD5/T1
PD6/AIN0
PD7/AIN1
23
24
25
26
27
28
1
2
3
4
5
6
11
12
13
ATMEGA8
14
15
16
17
18
19
9
10
21
20
PB0/ICP1
PB1/OC1A
PB2/SS/OC1B
PB3/MOSI/OC2
PB4/MISO
PB5/SCK
PB6/TOSC1/XTAL1
PB7/TOSC2/XTAL2
AREF
AVCC
PC0/ADC0
PC1/ADC1
PC2/ADC2
PC3/ADC3
PC4/ADC4/SDA
PC5/ADC5/SCL
PC6/RESET
PD0/RXD
PD1/TXD
PD2/INT0
PD3/INT1
PD4/T0/XCK
PD5/T1
PD6/AIN0
PD7/AIN1
23
24
25
26
27
28
1
2
3
4
5
6
11
12
13
ATMEGA8
INICIO
BUCLE_2
SBIS
BUCLE
DESCENDENTE
ASCENDENTE
NUMERO
NUMEROS
NUMERO
BRNE
BRNE
ASC - DES
NUMEROS
/*
* PREGUNTA10.asm
*
* Created: 13/09/2015 06:36:33 a.m.
* Author:
*/
.INCLUDE "M8DEF.INC"
.CSEG
.ORG 0X0000
RJMP INICIO
;SALTO RELATIVO A INICIO
;..............................................................................
INICIO:
LDI R16,HIGH(RAMEND)
;CARGANDO CONFIGURACION DE LA PILA
OUT SPH,R16
;HABILITANDO PARTE ALTA DE LA PILA
LDI R16,LOW(RAMEND)
;CARGANDO CONFIGURACION DE LA PILA
OUT SPL,R16
;HABILITANDO PARTE BAJA DE LA PILA
LDI R16,$FF
;CARGAMOS A R16 CON UNOS
OUT DDRD,R16
;CONFIGURANDO PUERTO D COMO SALIDA
LDI R16,$00
;CARGAMOS A R16 CON CEROS
OUT DDRC,R16
;CONFIGURANDO PUERTO C COMO ENTRADA
OUT PORTD,R16
;ENVIANDO DATO DEL R16 AL PUERTO D
LDI R16,$FF
;CARGAMOS AL R16 CON 1
OUT PORTC,R16
;ENVIO EL VALOR DE R16 AL PUERTO C
LDI R18,$00
;INICIALIZACION DE R18
;...................................................................................
BUCLE_2:
BUCLE:
ETIQUETA
ASCENDENTE:
LDI R16,$40
OUT PORTD,R16
SBIS PINC,1
RJMP BUCLE_2
SBIC PINC,0
;SALTA SI PIN0 DEL PUERTO C ES CERO
RJMP ASCENDENTE
; SALTO RELATIVO A ASCENDENTE
RJMP DESCENDENTE
;SI POR0 DE C NO ES UNO SALTA A
SBIS PINC,1
;NUEVAMENTE LEE PINC1 DE C Y SALTA SI ES UNO
RJMP INCREMENTO
;SI PIN1 DE C ES UNO SALTA INCREMENTO
RJMP BUCLE
;SI PIN1 DE C NO ES UNO SALTA A BUCLE
DESCENDENTE:
SBIS PINC,1
;LEE PIN1 DE C Y SALTA SI ES UNO
RJMP DECREMENTO ;SALTA A DECREMENTO SI PIN1 DE C ES UNO
RJMP BUCLE
; SALTO CONDICIONAL A BUCLE
;......................................................................................
INCREMENTO:
DECREMENTO:
CPI R18,$09
BREQ BUCLE
INC R18
RJMP NUMERO
CPI R18,$00
;CARGANDO R18 CON CEROS
BREQ BUCLE
;SALTA A BUCLE SI R18=$00
DEC R18
; DECREMENTA R18
RJMP NUMERO
;SALTO RELATIVO A NUMERO
;.........................................................................................
NUMERO:
CPI R18,$00
BREQ CERO
CPI R18,$01
BREQ UNO
CPI R18,$02
BREQ DOS
CPI R18,$03
BREQ TRES
CPI R18,$04
;SI
;SI
;SI
;SI
;SI
;SI
;SI
;SI
BREQ CUATRO
;SI R18 ES 4 ENTONCES SALTA A ETIQUETA CUATRO
CPI R18,$05
;SI R18 NO ES 4 ENTONCES COMPARA CON 5
BREQ CINCO
;SI R18 ES 5 SALTA A ETIQUETA CINCO
CPI R18,$06
;SI R18 NO ES 5 ENTONCES COMPARA CON 6
BREQ SEIS
;SI R18 ES 6 SALTA A ETIQUETA SEIS
CPI R18,$07
;SI R18 NO ES 6 ENTONCES COMPARA CON 7
BREQ SIETE
;SI R18 ES 7 SALTA A ETIQUETA SIETE
CPI R18,$08
;SI R18 NO ES 7 ENTONCES COMPARA CON 8
BREQ OCHO
;SI R18 ES 8 SALTA A ETIQUETA OCHO
CPI R18,$09
;SI R18 NO ES 8 ENTONCES COMPARA CON 9
BREQ NUEVE
;SI R18 ES 9 SALTA A ETIQUETA NUEVE
;................................................................................
CERO:
UNO:
DOS:
TRES:
CUATRO:
CINCO:
SEIS:
SIETE:
OCHO:
NUEVE:
LDI R16,$40
OUT PORTD,R16
RJMP BUCLE_2
LDI R16,$79
OUT PORTD,R16
RJMP BUCLE_2
LDI R16,$24
OUT PORTD,R16
RJMP BUCLE_2
LDI R16,$30
OUT PORTD,R16
RJMP BUCLE_2
LDI R16,$19
OUT PORTD,R16
RJMP BUCLE_2
LDI R16,$12
OUT PORTD,R16
RJMP BUCLE_2
LDI R16,$03
OUT PORTD,R16
RJMP BUCLE_2
LDI R16,$78
OUT PORTD,R16
RJMP BUCLE_2
LDI R16,$00
OUT PORTD,R16
RJMP BUCLE_2
LDI R16,$18
;CARGAMOS A R16 CON 19HEX
OUT PORTD,R16
;EVIANDO VALOR DE R16 A PORT D
RJMP BUCLE_2
;SALTO RELATIVO A BUCLE_2
;................................................................................
c) Hacer la simulacin
Cuando activador abierto contador ascendente
ACTIVADOR
PULSO
U1
14
15
16
17
18
19
9
10
21
20
PB0/ICP1
PB1/OC1A
PB2/SS/OC1B
PB3/MOSI/OC2
PB4/MISO
PB5/SCK
PB6/TOSC1/XTAL1
PB7/TOSC2/XTAL2
PC0/ADC0
PC1/ADC1
PC2/ADC2
PC3/ADC3
PC4/ADC4/SDA
PC5/ADC5/SCL
PC6/RESET
PD0/RXD
PD1/TXD
PD2/INT0
PD3/INT1
PD4/T0/XCK
PD5/T1
PD6/AIN0
PD7/AIN1
AREF
AVCC
23
24
25
26
27
28
1
2
3
4
5
6
11
12
13
ATMEGA8
ACTIVADOR
PULSO
U1
14
15
16
17
18
19
9
10
21
20
PB0/ICP1
PB1/OC1A
PB2/SS/OC1B
PB3/MOSI/OC2
PB4/MISO
PB5/SCK
PB6/TOSC1/XTAL1
PB7/TOSC2/XTAL2
AREF
AVCC
ATMEGA8
PC0/ADC0
PC1/ADC1
PC2/ADC2
PC3/ADC3
PC4/ADC4/SDA
PC5/ADC5/SCL
PC6/RESET
PD0/RXD
PD1/TXD
PD2/INT0
PD3/INT1
PD4/T0/XCK
PD5/T1
PD6/AIN0
PD7/AIN1
23
24
25
26
27
28
1
2
3
4
5
6
11
12
13