Está en la página 1de 4

Cada grupo deberá traer un circuito con un procesador Atmega 164, el mismo que tendrá conectado a uno de sus

pórticos ocho LEDs, un grupo de ocho interruptores


en otro pórtico, otro grupo de tres interruptores en otro pórtico, todos con sus respectivas resistencias limitadoras.
También cada grupo deberá traer el programa para  master y un programa para cada esclavo 
Cada uno de los esclavos deberá tener su propia dirección, que será la que se coloque en el grupo de tres interruptores de cada uno de ellos.
El master debe enviar al esclavo un comando de 4 bits (4bits bajos de los sus sws), y la dirección del esclavo con el cual desea comunicarse (4bits altos de sus sws) y
recibir en sus leds la dirección del esclavo que esta respondiendo. Los comandos serán:
0000 si se desea que el esclavo haga rotar el bits 0 a la izquierda en el nibble bajo y el bit 7 a la derecha en el nibble alto   
0001 si se desea que el esclavo haga rotar un bit de derecha a izquierda en sus leds
0010 si se desea que el esclavo haga rotar un bit de izquierda a derecha en sus leds 
0011 si se desea que el esclavo haga rotar el bits 3 a la derecha en el nibble bajo y el bit 4 a la izquierda en el nibble alto   
Usar el protocolo de comunicación  (SOH, ADR, COMANDO, PARÁMETRO)
Para evitar problemas con diferentes referencia de tierra, usar una sola fuente para alimentar TODOS los MICROS, o en su defecto usar fuentes diferentes, pero antes
de interconectarlos revisar el voltaje entre cada fuente para estar seguros de que están debidamente conectadas.

CODIGO PARA EL MAESTRO


.NOLIST ; LDI SOH,1
.INCLUDE"M164PDEF.INC" ;BIT DE INICIO DE TRAMA
.LIST ; STS UDR0,SOH
.DEF TEMPO=R16 ;ESPERA1: LDS TEMPO,UCSR0A
.DEF LEDS=R20 ; SBRS TEMPO,5
.DEF AUX=R17 ;VERIFICO SI YA ENVIO EL SOH
.DEF ADRESS=R18 ; RJMP ESPERA1
.DEF COMANDO=R19 ; ENVIO DIRECCION
.DEF CONT=R21 CPI CONT,1
.CSEG BREQ ENVIOCOMANDO
.ORG 0X00 CPI AUX,255
JMP START BRNE SALIR
.ORG 0X28 ;INTERRUPCION POR RECEPCION IN ADRESS,PINA
JMP LLEGODATO LSR ADRESS
START: ;CONFIGURACION DE PUERTOS ;LEO COMANDO Y ADRESS
LDI TEMPO,0B00000000 ANDI ADRESS,0B01110000
;PORTA COMO ENTRADA PARA SWITCHS ;SOLO TOMO DATO DE ADRESS MSB
OUT DDRA,TEMPO SWAP ADRESS
LDI TEMPO,0B11111111 ;INTERCAMBIO NIBBLES
;PORTC COMO SALIDA PARA LEDS STS UDR0,ADRESS
OUT DDRC,TEMPO ESPERA2: LDS TEMPO,UCSR0A ;VERIFICO SI
LDI TEMPO,0B00000001 YA ENVIO LA ADRESS
;PB0 COMO SALIDA PARA EL RELOJ SBRS TEMPO,5
OUT DDRB,TEMPO RJMP ESPERA2
;CLR LEDS ;

LDI TEMPO,0B00000010
;CONFIGURACION DE PINES DE RX Y TX Y SWITCHS DE ADRESS RJMP SALIR
OUT DDRD,TEMPO ENVIOCOMANDO:
;PUD=0 IN COMANDO,PINA
IN TEMPO,MCUCR ANDI COMANDO,0B00001111 ;SOLO TOMO
ANDI TEMPO,0B11101111 DATOS DE COMANDO LSB
OUT MCUCR,TEMPO STS UDR0,COMANDO
LDI TEMPO,0B11100000 ESPERA3:
OUT PORTD,TEMPO LDS TEMPO,UCSR0A
;STACK POINTER ;VERIFICO SI YA ENVIO LA ADRESS
LDI TEMPO,HIGH(RAMEND) SBRS TEMPO,5
OUT SPH,TEMPO RJMP ESPERA3
LDI TEMPO,LOW(RAMEND) CLR CONT
OUT SPL,TEMPO RJMP LAZO
;CONFIGURACION DE COMUICACION ASINCRONICA LLEGODATO: PUSH TEMPO
CALL CONFIGSINCR IN TEMPO,SREG
CLR TEMPO PUSH TEMPO
;LIMPIO REGSTROS LDS LEDS,UDR0
SER AUX CPI LEDS,255
CLR ADRESS BREQ APAGAR
CLR COMANDO OUT PORTC,LEDS
SEI ;SACO LA DIRECCION DEL ESCLAVO Q RESPONDE
; LDI LEDS,0B00001111 CLR AUX
LAZO: ; OUT PORTC,LEDS LDI CONT,1
;SACO LA DIRECCION DEL ESCLAVO Q RESPONDE RJMP SALIR
;ENVIO SOH APAGAR:
LDI AUX,255 LDI TEMPO,HIGH(51)
CLR LEDS STS UBRR0H,TEMPO
OUT PORTC,LEDS LDI TEMPO,LOW(51)
SALIR: STS UBRR0L,TEMPO
POP TEMPO ;9600 BAUDIOS A 8MHZ
OUT SREG,TEMPO LDI TEMPO,0B00000000
POP TEMPO ;U2X0=1
RETI STS UCSR0A,TEMPO
RETARDO: LDI TEMPO,0B10011000
LDI TEMPO,5 ;RX Y TX, TRANS A 8BITS ;
LAZO1: STS UCSR0B,TEMPO
DEC TEMPO LDI TEMPO,0B01100110
CPI TEMPO,0 ;PARIDAD PAR, 1 BIT DE PARADA, TRANS A 8 BITS
BRNE LAZO1 STS UCSR0C,TEMPO
RET ;MODO SINCRONICO
RET
CONFIGSINCR:

CODIGO PARA EL ESCLAVO


.NOLIST LDI TEMPO,0B00000000
.INCLUDE"M164PDEF.INC" ;U2X0=1
.LIST STS UCSR0A,TEMPO
LDI TEMPO,0B10011000
;HABILITA RX Y TX, HABILITO INT, Y TRANS A 8BITS
.DEF TEMPO=R16 ;
.DEF LEDS=R22 STS UCSR0B,TEMPO
.DEF AUX=R17 LDI TEMPO,0B01100110
.DEF ADRESS=R18 ;PARIDAD PAR, 1 BIT DE PARADA, TRANS A 8 BITS
.DEF COMANDO=R19 STS UCSR0C,TEMPO
.DEF MYADRESS=R20 ;MODO SINCRONICO
.DEF CONT=R21 SEI
.CSEG CLR CONT
.ORG 0X00 ; LDI LEDS,0B11110000
JMP START
.ORG 0X28 ;INTERRUPCION POR RECEPCION LAZO:
JMP LLEGODATO
START: ;CONFIGURACION DE PUERTOS
RJMP LAZO
LDI TEMPO,0B00000000
;PORTA COMO ENTRADA PARA SWITCHS
OUT DDRA,TEMPO LLEGODATO: PUSH TEMPO
LDI TEMPO,0B11111111 IN TEMPO,SREG
;PORTC COMO SALIDA PARA LEDS PUSH TEMPO
OUT DDRC,TEMPO ; LDS SOH,UDR0
LDI TEMPO,0B00000000 ; SBRS SOH,0
;PB0 COMO ENTRADA PARA EL RELOJ ; INC CONT
OUT DDRB,TEMPO ;VERIFICO SI SOH=1
; RJMP SALIR
LDI TEMPO,0B00000010 CPI CONT,1
;CONFIGURACION DE PINES DE RX Y TX Y SWITCHS DE ADRESS BREQ ANALIZA
OUT DDRD,TEMPO ;RECIBO COMANDO SI EL MAESTRO ENTABLA COUNICACION CONMIGO
;PUD=0
IN TEMPO,MCUCR
LDS ADRESS,UDR0
ANDI TEMPO,0B11101111
;ALMACENO LA DIRECCION Q LLEGO
OUT MCUCR,TEMPO
IN MYADRESS,PIND
LDI TEMPO,0B11100000
LSR MYADRESS
OUT PORTD,TEMPO
;LEO MI ADRESS DE ESCLAVO
;STACK POINTER
ANDI MYADRESS,0B01110000
LDI TEMPO,HIGH(RAMEND)
SWAP MYADRESS
OUT SPH,TEMPO
CP ADRESS,MYADRESS
LDI TEMPO,LOW(RAMEND)
;COMPARO SI EL MICRO QUIERE COMUNICARSE CONMIGO
OUT SPL,TEMPO
BREQ ENVIOMIADRESS
;CONFIGURACION DE COMUICACION
LDI LEDS,0
LDI TEMPO,HIGH(51)
OUT PORTC,LEDS
STS UBRR0H,TEMPO
LDI MYADRESS,255
LDI TEMPO,LOW(51)
SER AUX
STS UBRR0L,TEMPO
;9600 BAUDIOS A 8MHZ
ENVIOMIADRESS:
CLR AUX
LDI CONT,1 OUT PORTC,LEDS
STS UDR0,MYADRESS CALL RETARDO
;ENVIO MI ADRESS AL MAESTRO LDI LEDS,0B00000100
ESPERA1: LDS TEMPO,UCSR0A OUT PORTC,LEDS
SBRS TEMPO,5 CALL RETARDO
RJMP ESPERA1 LDI LEDS,0B00001000
RJMP SALIR OUT PORTC,LEDS
ANALIZA: CALL RETARDO
CPI AUX,255 LDI LEDS,0B00010000
BREQ LAZO OUT PORTC,LEDS
LDS COMANDO,UDR0 CALL RETARDO
CLR AUX LDI LEDS,0B00100000
;LEO INDICACION DEL MAESTRO OUT PORTC,LEDS
IN LEDS,PINA CALL RETARDO
;una vez aprobada MI DIRECCION LEO MIS DPSW Y ENCIENDO MIS LDI LEDS,0B01000000
LEDS OUT PORTC,LEDS
OUT PORTC,LEDS CALL RETARDO
CPI COMANDO,0B00000000 LDI LEDS,0B10000000
BREQ PRIMERAOP CALL RETARDO
CPI COMANDO,0B00000001 BREQ SALIR
BREQ SEGUNDAOP CUARTAOP:
CPI COMANDO,0B00000010 CLR CONT
BREQ TERCERAOP LDI LEDS,0B00011000
CPI COMANDO,0B00000011 OUT PORTC,LEDS
CALL CUARTAOP CALL RETARDO
BREQ LAZO LDI LEDS,0B00100100
PRIMERAOP: OUT PORTC,LEDS
CLR CONT CALL RETARDO
LDI LEDS,0B10000001 LDI LEDS,0B01000010
OUT PORTC,LEDS OUT PORTC,LEDS
CALL RETARDO CALL RETARDO
LDI LEDS,0B01000010 LDI LEDS,0B10000001
OUT PORTC,LEDS OUT PORTC,LEDS
CALL RETARDO CALL RETARDO
LDI LEDS,0B00100100 RET
OUT PORTC,LEDS
CALL RETARDO
LDI LEDS,0B00011000 SALIR:
OUT PORTC,LEDS POP TEMPO
CALL RETARDO OUT SREG,TEMPO
BREQ LAZO POP TEMPO
SEGUNDAOP: RETI
CLR CONT RETARDO:
LDI LEDS,0B10000000 LDI TEMPO,255
OUT PORTC,LEDS LAZO1:
CALL RETARDO DEC TEMPO
LDI LEDS,0B01000000 CPI TEMPO,0
OUT PORTC,LEDS BRNE LAZO1
CALL RETARDO RET
LDI LEDS,0B00100000
OUT PORTC,LEDS
CALL RETARDO
LDI LEDS,0B00010000
OUT PORTC,LEDS
CALL RETARDO
LDI LEDS,0B00000100
OUT PORTC,LEDS
CALL RETARDO
LDI LEDS,0B00000010
OUT PORTC,LEDS
CALL RETARDO
LDI LEDS,0B00000001
OUT PORTC,LEDS
CALL RETARDO
BREQ SALIR
TERCERAOP:
CLR CONT
LDI LEDS,0B00000001
OUT PORTC,LEDS
CALL RETARDO
LDI LEDS,0B00000010
SIMULACION

D9 D10
D1

LED-GREEN LED-RED
LED-YELLOW DSW6
CUASQUER VERONICA DSW5 D18 6 OFF ON
1 D11
D2 6 OFF ON 1 5 2
ADD20
PRACTICA # 5 5 2
ADD10
4 3
ADD21
ADD11 ADD22
4 3 LED-GREEN LED-RED
DSW4 ADD12
LED-YELLOW DIPSW_3
6 OFF ON 1 DIPSW_3 D19 D12
5 2
ADD00 D3
ADD01
4 3
ADD02 RN1 LED-GREEN LED-RED
DIPSW_3 LED-YELLOW 1 16 RN2 RN3
2 15
L00 D20 1 16 D13 1 16
D4 L01 L10 L20
RP1 3 14
L02
2 15
L11
2 15
L21
RESPACK-8 4 13 3 14 3 14
L03 L12 L22
5 12 LED-GREEN 4 13 LED-RED 4 13
L04 L13 L23
LED-YELLOW 6 11 5 12 5 12
7 10
L05 D21 6 11
L14 D14 6 11
L24
D5 8 9
L06
7 10
L15
7 10
L25
L07 L16 L26
RP2 8 9 RP3 L17 8 9
L27
1

2
3
4
5
6
7
8
9

330
RESPACK-8 LED-GREEN RESPACK-8 LED-RED
LED-YELLOW 330 330
D22 D15
D6
DSW1
OFF ON
9 1 LED-GREEN LED-RED
SW00

2
3
4
5
6
7
8
9

2
3
4
5
6
7
8
9
2 LED-YELLOW
3
SW01 DSW2 D23 D16
4
SW02 D7 9 OFF ON 1 DSW3
SW03 SW10 OFF ON
5 2 9 1
SW04 SW11 SW20
6 3 LED-GREEN 2 LED-RED
SW05 SW12 SW21
7 LED-YELLOW 4 3
8
SW06
5
SW13 D24 4
SW22 D17
SW07 D8 6
SW14
5
SW23
SW15 SW24
DIPSWC_8 7 6
SW16 SW25
8 LED-GREEN 7 LED-RED
SW17 SW26
LED-YELLOW 8
SW27
DIPSWC_8
DIPSWC_8
U1 U2 U3
40 37 40 37 40 37
clock PB0/XCK0/T0/PCINT8 PA0/ADC0/PCINT0 SW00 CLOCK PB0/XCK0/T0/PCINT8 PA0/ADC0/PCINT0 SW10 CLOCK PB0/XCK0/T0/PCINT8 PA0/ADC0/PCINT0 SW20
41 36 41 36 41 36
PB1/T1/CLKO/PCINT9 PA1/ADC1/PCINT1 SW01 PB1/T1/CLKO/PCINT9 PA1/ADC1/PCINT1 SW11 PB1/T1/CLKO/PCINT9 PA1/ADC1/PCINT1 SW21
42 35 42 35 42 35
PB2/AIN0/INT2/PCINT10 PA2/ADC2/PCINT2 SW02 PB2/AIN0/INT2/PCINT10 PA2/ADC2/PCINT2 SW12 PB2/AIN0/INT2/PCINT10 PA2/ADC2/PCINT2 SW22
43 34 43 34 43 34
PB3/AIN1/OC0A/PCINT11 PA3/ADC3/PCINT3 SW03 PB3/AIN1/OC0A/PCINT11 PA3/ADC3/PCINT3 SW13 PB3/AIN1/OC0A/PCINT11 PA3/ADC3/PCINT3 SW23
44 33 44 33 44 33
PB4/SS/OC0B/PCINT12 PA4/ADC4/PCINT4 SW04 PB4/SS/OC0B/PCINT12 PA4/ADC4/PCINT4 SW14 PB4/SS/OC0B/PCINT12 PA4/ADC4/PCINT4 SW24
1 32 1 32 1 32
PB5/MOSI/PCINT13 PA5/ADC5/PCINT5 SW05 PB5/MOSI/PCINT13 PA5/ADC5/PCINT5 SW15 PB5/MOSI/PCINT13 PA5/ADC5/PCINT5 SW25
2 31 2 31 2 31
PB6/MISO/PCINT14 PA6/ADC6/PCINT6 SW06 PB6/MISO/PCINT14 PA6/ADC6/PCINT6 SW16 PB6/MISO/PCINT14 PA6/ADC6/PCINT6 SW26
3 30 3 30 3 30
PB7/SCK/PCINT15 PA7/ADC7/PCINT7 SW07 PB7/SCK/PCINT15 PA7/ADC7/PCINT7 SW17 PB7/SCK/PCINT15 PA7/ADC7/PCINT7 SW27
9 19 9 19 9 19
RX PD0/RXD0/PCINT24 PC0/SCL/PCINT16 L00 TX PD0/RXD0/PCINT24 PC0/SCL/PCINT16 L10 TX PD0/RXD0/PCINT24 PC0/SCL/PCINT16 L20
10 20 10 20 10 20
TX PD1/TXD0/PCINT25 PC1/SDA/PCINT17 L01 RX PD1/TXD0/PCINT25 PC1/SDA/PCINT17 L11 RX PD1/TXD0/PCINT25 PC1/SDA/PCINT17 L21
11 21 11 21 11 21
PD2/INT0/RXD1/PCINT26 PC2/TCK/PCINT18 L02 PD2/INT0/RXD1/PCINT26 PC2/TCK/PCINT18 L12 PD2/INT0/RXD1/PCINT26 PC2/TCK/PCINT18 L22
12 22 12 22 12 22
PD3/INT1/TXD1/PCINT27 PC3/TMS/PCINT19 L03 PD3/INT1/TXD1/PCINT27 PC3/TMS/PCINT19 L13 PD3/INT1/TXD1/PCINT27 PC3/TMS/PCINT19 L23
13 23 13 23 13 23
PD4/OC1B/XCK1/PCINT28 PC4/TDO/PCINT20 L04 PD4/OC1B/XCK1/PCINT28 PC4/TDO/PCINT20 L14 PD4/OC1B/XCK1/PCINT28 PC4/TDO/PCINT20 L24
14 24 14 24 14 24
ADD00 PD5/OC1A/PCINT29 PC5/TDI/PCINT21 L05 ADD10 PD5/OC1A/PCINT29 PC5/TDI/PCINT21 L15 ADD20 PD5/OC1A/PCINT29 PC5/TDI/PCINT21 L25
15 25 15 25 15 25
ADD01 PD6/ICP/OC2B/PCINT30 PC6/TOSC1/PCINT22 L06 ADD11 PD6/ICP/OC2B/PCINT30 PC6/TOSC1/PCINT22 L16 ADD21 PD6/ICP/OC2B/PCINT30 PC6/TOSC1/PCINT22 L26
16 26 16 26 16 26
ADD02 PD7/OC2A/PCINT31 PC7/TOSC2/PCINT23 L07 ADD12 PD7/OC2A/PCINT31 PC7/TOSC2/PCINT23 L17 ADD22 PD7/OC2A/PCINT31 PC7/TOSC2/PCINT23 L27
29 8 29 8 29 8
AREF XTAL1 AREF XTAL1 AREF XTAL1
27 7 27 7 27 7
AVCC XTAL2 AVCC XTAL2 AVCC XTAL2
4 4 4
RESET RESET RESET RESET RESET RESET
ATMEGA164P ATMEGA164P ATMEGA164P
RESET

C1 R1
10k
100n

REFERENCIAS BIBLIOGRAFICAS

Clases magistrales, Ing. Chico Patricio, Sistemas Microprocesados, EPN, 2012.

También podría gustarte