Professional Documents
Culture Documents
E. P. INGENIERA ELECTRNICA
INFORME PREVIO N4
Comunicacin serial (usart)
ASIGNATURA:
LABORATORIO DE MICROCONTROLADORES
TURNO 92G
INTEGRANTES:
ALVARADO OYOLA JOSE M
Problema 1:
CDIGOS
1213220438
DIAGRAMA DE FLUJO:
CALCULOS PREVIOS:
VELOCIDAD SIMPLE:
UBRR=
Fosc
1M
1=
1=12.02 12
16( BAUD)
16 ( 4800 )
BAUD=
error=
Fosc
1M
=
=4807.7
16 (UBRR+1) 16 (13)
T E
48004807,69
100 =
100 =0,159
E
4807.69
/*
* AssemblerApplication4.asm
*
* Created: 23/10/2015 09:12:03 a.m.
* Author: jalvarado
*/
.cseg
.org$00
rjmp inicio
inicio:
;programa principal
ldi r16, high(ramend) ;definimos la pila para utilizar subrutinas
out sph,r16
ldi r16,low(ramend)
out spl,r16
ldi r17,$0f
out ddrb,r17
rcall configuracion_usart ; rutina que configura los
; parametros del usart
;numero
esperadato:
;empieza con leds apagados
ldi r18,$00
out portb,r18
ldi r19,$00
;cuando la bandera ucsra tiene un valor salta
sbis ucsra,rxc
rjmp esperadato
in r20,udr ;leo el dato
cpi r20,$41 ;compara la letra A
brne esperadato
;si es igual
contador:
U1
D3
D2
LED-BIBY LED-BIBY
D1
14
15
16
17
18
19
9
10
LED-BIBY
R1
R2
R3
220
220
220
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
RXD
TXD
RTS
CTS
CONCLUSIONES:
Tener en cuenta que para poder sondear los pulsadores se puede utilizar
tanto la mscara cmo tambin las instrucciones sbis y sbic
Para la simulacin se puede hacer uso del Virtual Terminal, pero cuando
se tenga que hacer uso de la implementacin tendremos que usar del
max232 y adicionalmente cmo ahora las mquinas son ms modernas,
un convertidor de serial a usb.
El cdigo ASCII es un puente de comunicacin entre el teclado del
computador y el software de PROTEUS.
Para cambiar los parmetros de la trama hay que tener en cuenta las
configuraciones del terminal virtual del PROTEUS.
Tarea:
EJERCICIO:
Realizar un programa que emule 4 interruptores digitales
Programacin en atmel:
Mostrando la programacin en lenguaje C en Word:
#include <avr/io.h>
#include <util/delay.h>
int8_t pulsador=1; //declara variables de 8 bits
int8_t pulsador2=1;
int8_t pulsador3=1;
int8_t pulsador4=1;
int main(void)
{
DDRB&=~_BV(PB0);
DDRB&=~_BV(PB1);
DDRB&=~_BV(PB2);
DDRB&=~_BV(PB3);
DDRD|=_BV(PD0);
DDRD|=_BV(PD1);
DDRD|=_BV(PD2);
DDRD|=_BV(PD3);
PORTB|=_BV(PB0);
PORTB|=_BV(PB1);
PORTB|=_BV(PB2);
PORTB|=_BV(PB3);
while(1) //BUCLE INFINITO
{
if(bit_is_clear(PINB,PB0)&(pulsador==1)) //VERIFICA SI PB0=0
{
_delay_ms(40);
if(bit_is_clear(PINB,PB0)&(pulsador==1))
{
PORTD ^= _BV(PD0);
pulsador=0;
}
}
if(bit_is_set(PINB,PB0)) //VERIFICA SI PB0=1
{
pulsador=1;
}
if(bit_is_clear(PINB,PB1)&(pulsador2==1)) //VERIFICA SI PB0=0
{
_delay_ms(40);
if(bit_is_clear(PINB,PB1)&(pulsador2==1))
{
PORTD ^= _BV(PD1);
pulsador2=0;
}
}
if(bit_is_set(PINB,PB1)) //VERIFICA SI PB0=1
{
pulsador2=1;
}
}
}