He escrito un código para encender / apagar alguna luz LED conectada a diferentes pines de E / S del mismo PUERTO (es decir, PORTD) del microcontrolador atmega8. Este proceso se realiza mediante la aplicación de Android enviando un byte diferente a través de USART. Cuando se envía un byte de datos, el LED correspondiente está ENCENDIDO. Cuando dos o más LED están ENCENDIDOS enviando sus datos correspondientes a continuación, si para apagar un LED específico, se envía un byte específico, todo el LED está apagado. Si uso dos puertos separados (es decir, PORTC y PORTD), obtengo la salida exacta, pero en este caso solo puedo usar un pin de PORTD y un pin de PORTC para dos LED ON / OFF. Si uso más de dos pines, se produce el fallo anterior. Mi código está abajo.
ISR(USART_RXC_vect)
{
while(!(UCSRA & (1<<RXC)));
rec=UDR;
switch(rec)
{
case 65:{
PORTD |=1<<4;
}break;
case 66:{
PORTD |=1<<5;
}break;
case 67:{
PORTD |=1<<6;
}break;
case 68:{
PORTD |=1<<7;
}break;
case 69:{
PORTD&=~1<<4;
}break;
case 70:{
PORTD&=~1<<5;
}break;
case 71:{
PORTC&=~1<<6;
}break;
case 72:{
PORTB&=~1<<7;
}break;
}
}
por favor, que alguien me ayude a resolver este problema.