Problema N1: Control de movimiento de motor DC mediante el modulo HC 06 DIAGRAMA DE FLUJO
INICIO
Configurar USART Configurar como puerto de salida: B
¿Recepción completa?
No
Si
Leer dato del Buffer de Rx
¿Dato
no
[a,g]?
Dato
B=0b00000101
no
si
Mostrar B Dato
B=0b00001001
si no
Mostrar B Dato
si
B=0b00001010
no
Mostrar B si
B=0b00000110
Dato
no
Mostrar B
Rebort
Rebort
Dato
B=0b00000000
si no
Mostrar B Dato
si
B=0b00000001
no
Mostrar B
si
B=0b00000100
Dato
no
Mostrar B
Código: /* LABORATORIO FINAL 4 MICROCONTROLADORES * Control de movimiento de motor DC mediante el modulo HC 06 * puerto B como salida * Author: santiago pinco jhon christofer */ #include
//librería para entradas y salidas
int main(void) { int dato; DDRB=0X0f; PORTB=0x00; //empezamos con los leds apagados configurar_usart (); //INICIAR EL USART while(1) { while (( UCSRA & (1 << RXC ) ) == 0) {}; // CODIGO PARA FUNCION DE RECEPCION DATO dato = UDR; if(dato=='a'){ //si es a avanza PORTB=0b00000110; } if(dato=='b'){ //si es b derecha PORTB=0b00001010; } if(dato=='c'){ //si es c retrocede PORTB=0b00001001; }
if(dato=='d'){ //si PORTB=0b00000101; } if(dato=='e'){ //si PORTB=0b00000000; } if(dato=='f'){ //si PORTB=0b00000010; } if(dato=='g'){ //si PORTB=0b00000100; }
es d izquierda es e stop es f derecha es g izquierda
} } // configuración del usart //bit de datos:8 //bit de parada:1 //bit de paridad:ninguno //baudios:9600 //fosc=1Mhz void configurar_usart (void){ UBRRH=0x00; UBRRL=0x0C; UCSRA=(0<
Simulación:
16
U1 23 24 25 26 27 28 1 RXD VT52, VT100, ANSI
TXD RTS Xmodem, Ymodem, Zmodem
CTS
2 3 4 5 6 11 12 13
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
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
2 7 1
9 10 15
IN1 IN2 EN1
EN2 IN3 IN4
VSS
GN D
8 VS OUT1 OUT2
OUT3 G ND OUT4
U2 3 6
11 14
L293D
AREF AVCC
21 20