srta
DETALHADAMENTE o funcionamento do programa a seguir:
int main(void){
WDTCTL = WDTPW + WDTHOLD;
//desativar o watchdog
P1DIR = BIT0 + BIT6;
//setar os bits 0 e 6 em 1 e os bits restantes em 0
P1OUT = BIT0;
//acender o bit0 e apagar todos os outros
while (1){
//loop infinito com condição verdadeira
while (P1IN & BIT3);
//interrompe enquanto o bit3 estiver setado
P1OUT ^= BIT0 + BIT6;
O bit0 vai apagar e o bit6 vai acender
while (!(P1IN & BIT3));
//interromper enquanto o bit3 não estiver setado
}
Funcionamento:
Quando o botão for apertado nada ocorrerá, quando o botão for solto os valores irão inverter e o bit6 irá acender e o bit3 apagar. Toda as vezes que o botão for acionado, os valores irão inverter.
2. Explique o que são interrupções e para que são utilizadas.
A interrupção serve para parar o código, depois executam uma função própria para a interrupção e depois retorna a executar o código novamente.
3. Quais comandos, na linguagem C, devem ser realizados para:
• Configurar, na porta P1, os pinos 3 e 6 como saida e os demais como entrada?
• Configurar a porta P1 para que os pinos 1 e 2 gerem interrupcao na borda de subida e os pinos 0 e 7 gerem interrupcao na borda de descida?
• Ativar a saida do pino P1.3 sem alterar o valor dos demais pinos da porta P1?
• Desativar a saida do pino P1.6 sem alterar o valor dos demais pinos da porta P1?
•P1DIR = BIT3 + BIT6;
•P1IE = BIT1 + BIT2 + BIT0 + BIT7; P1IES = BIT0 + BIT7;
•P1DIR &= BIT3;
•P1DIR &=~ BIT6;
4. A partir do diagrama mostrado na figura 2, construa um programa em C para o
MSP430 que execute as seguintes operações:
• Inicialmente, o programa mostra o LED1 aceso e o LED2 apagado;
• A cada 500 ms, o estado dos LEDs se alterna (se o LED estava aceso, deve ser apagado; se estiver apagado, deve ser acionado);
• Cada vez que a chave SW1 for acionada, o tempo que o LED1 fica aceso (e