Documente Academic
Documente Profesional
Documente Cultură
0
0
0
0
0
0
0
0
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
?
?
?
?
?
?
?
?
1
1
0
0
1
0
1
1
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
1
1
0
0
1
0
1
1
ATMEGA8
Ejercicio 2. Programa que suma los datos ingresados por los 4 bits
menos significativos del Puerto B y Puerto C. El resultado se visualiza
por el puerto D.
Programa en asembler
.include "m8def.inc"; Tipo de procesador
.cseg ; Segmento de codigo para memoria flash
.org 0x0000; Direccion del Vector Reset
RJMP inicio; Salto para empezar desde inicio
inicio:
LDI R16,0b00000000 ; carga la constante 0x00 en el registro R16
LDI R17,0b11111111 ; carga la constante 0xFF en el registro R17
OUT DDRB,R16 ; Configura todos los bits del puerto B como entradas
OUT DDRC,R16 ; Configura todos los bits del puerto B como entradas
OUT DDRD,R17 ; Configura todos los bits del puerto D como salidas
lazo:
IN R18,PINB ; Almacena datos del puerto B en el registro R18
IN R19,PINC ; Almacena datos del puerto C en el registro R19
ADD R18,R19 ; Suma R18 y R19, el resultado se almacena en R18
OUT PORTD,R18 ; Visualiza por el puerto B el dato de R18
RJMP lazo ; Bucle, se repite desde lazo
0
0
0
0
0
0
0
0
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
?
?
?
?
?
1
1
0
0
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
1
0
1
0
0
Programa en asembler
.include "m8def.inc"; Tipo de procesador
.cseg ; Segmento de codigo para memoria flash
.org 0x0000; Direccion del Vector Reset
RJMP inicio; Salto para empezar desde inicio
inicio:
LDI R16,0b00000000 ; carga la constante 0x00 en el registro R16
LDI R17,0b11111111 ; carga la constante 0xFF en el registro R17
OUT DDRB,R16 ; Configura todos los bits del puerto B como entradas
OUT DDRC,R16 ; Configura todos los bits del puerto B como entradas
OUT DDRD,R17 ; Configura todos los bits del puerto D como salidas
lazo:
IN R18,PINB ; Almacena datos del puerto B en el registro R18
IN R19,PINC ; Almacena datos del puerto C en el registro R19
AND R18,R19 ; R18 and R19, el resultado se almacena en R18
OUT PORTD,R18 ; Visualiza por el puerto B el dato de R18
RJMP lazo ; Bucle, se repite desde lazo
Circuito para prueba
0
0
0
0
0
0
0
0
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
?
?
?
?
0
1
1
0
1
1
0
1
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
0
1
0
0
ATMEGA8
R1
1k
U1
R2
220
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
D1
LED-YELLOW
21
20
AREF
AVCC
ATMEGA8
EJERCICIO
Realizar un programa para crear la siguiente lgica.
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
Entradas
Salidas
PB0
PB1
PD0
PD1
Programa en asembler
.include "m8def.inc"
.cseg
.org 0x0000
rjmp inicio
inicio:
clr r16
out ddrb,r16
ser r16
out ddrd,r16
;CONDICION INICIAL
;LEEMOS EL DATO = R16
primero:
;PB1 PB0 = 00
ldi r17,0b00000000
out portd,r17
in r16,pinb
;LEEMOS EL DATO = R16
andi r16,0b00000011
cpi r16,0b00000000
brne programa
rjmp primero
segundo:
ldi r17,0b00000010
out portd,r17
in r16,pinb
andi r16,0b00000011
cpi r16,0b00000001
brne programa
rjmp segundo
tercero:
ldi r17,0b00000010
out portd,r17
in r16,pinb
andi r16,0b00000011
cpi r16,0b00000010
brne programa
rjmp tercero
cuarto:
ldi r17,0b00000011
out portd,r17
in r16,pinb
andi r16,0b00000011
cpi r16,0b00000011
brne programa
rjmp cuarto
;PB1 PB0 = 01
;LEEMOS EL DATO = R16
;PB1 PB0 = 10
;LEEMOS EL DATO = R16
;PB1 PB0 = 11
;LEEMOS EL DATO = R16
U1
0
0
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
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
U1
0
1
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
1
0