MICROCONTRLADORES CAPÍTULO_5

Disciplina:Projetos Elétricos I13 materiais187 seguidores
Pré-visualização1 página
*
*
*

CAPÍTULO 5

 OPERADORES

*
*
*

OPERADOR DE ATRIBUIÇÃO
	Como o próprio nome diz é utilizado para atribuir certo valor a uma variável. Por exemplo:

a-) 		x = 50;
		
	Atribui à variável x o valor 50.

b-) 		PORTB.F0 = PORTA.F1;
		
		Atribui ao pino 0 da porta B (esquerda) o nível lógico do pino 1 da porta A (direita).

*
*
*

OPERADORES ARITMÉTICOS
		São utilizados para realizar operações matemáticas.

*
*
*

DIFERANÇA ENTRE / E %
		Em uma divisão real (em que as variáveis são declaradas como sendo do tipo float) quando realizamos a operação de divisão, 9/2 por exemplo, obtemos como resultado 4,5.
		Se as variáveis forem declaradas como sendo do tipo inteira, a operação 9/2 resulta igual a 4 (parte inteira da divisão) e a operação 9%2 resulta igual a 1 (que é o resto da divisão).

 		9 2
		 		1 4

*
*
*

OPERADORES RELACIONAIS
		São utilizados em testes condicionais para determinar a relação existente entre dados.

*
*
*

DIFERENÇA ENTRE OS OPERADORES = E ==
		Os operadores = e == realizam tarefas diferentes.
		Por exemplo:
		if (PORTB.F0 == 0) PORTA.F0 = 1; 		
		 Se o pino 0 da porta B for igual a 0 ( faz uma comparação)	 atribui ao pino 0 da porta A nível lógico 1 (faz uma atribuição).

*
*
*

OPERADORES LÓGICOS BIT A BIT

*
*
*

	Faça um programa que só permita a partida do motor de uma guilhotina quando as mãos do operador estiverem pressionando dois botões, um de cada lado da máquina.
EXEMPLO 1
 FUNÇÃO AND

*
*
*

 CIRCUITO DO EXEMPLO 1

*
*
*

FLUXOGRAMA DO EXEMPLO 1

*
*
*

PROGRAMA DO EXEMPLO 1
void main()
{
 	TRISB.F0 = 0,
		TRISA = 6;
		PORTB = 0;
 	 	CMCON = 7;			
		while (1) 		
 		{ 		
	 	PORTB.F0 = PORTA.F2 & PORTA.F1;
 	 }
}

*
*
*

	Faça um programa para ligar o led da figura 1 quando a chave 1 estiver aberta e a chave 0 fechada.
EXEMPLO 2
 RB0 = ~RA2 & RA1

*
*
*

 CIRCUITO DO EXEMPLO 1

*
*
*

FLUXOGRAMA DO EXEMPLO 2
início
1
N
S
fim

*
*
*

PROGRAMA DO EXEMPLO 1
void main()
{
 	TRISB.F0 = 0,
		TRISA = 6;
		PORTB = 0;
 	 	CMCON = 7;			
		while (1) 		
 		{ 		
	 	PORTB.F0 = ~ PORTA.F2 & PORTA.F1;
 	 }
}

*
*
*

OPERADORES LÓGICOS
	O operador NOT (~) pode estar acompanhado dos operadores AND, OR ou EX-OR.
	
exemplo:

PORTB.F0 = PORTA.F0 & ~PORTA.F1;
PORTB.F0 = PORTA.F0 & (~PORTA.F1);
 É possível colocar em uma mesma expressão dois ou mais operadores, iguais ou diferentes.

exemplos:

PORTB.F0 = PORTA.F0 & PORTA.F1 & PORTA.F2 & PORTA.F3
PORTB.F0 = PORTA.F0 & PORTA.F1 | PORTA.F2 & PORTA.F3

*
*
*

EXEMPLO 3
	Faça um programa para ligar 8 led’s, conectados nos pinos da porta B do microcontrolador, da figura 3, de forma sequencial ou seja, liga Led 0, depois desliga o Led 0 e liga o Led 1, depois desliga o Led 1 e liga o Led 2 e assim por diante. Após ligar e desligar o led 7, liga o led 0 e o ciclo reinicia. Cada Led deve permanecer ligado durante 0,5 s. Utilize o operador << (deslocamento à esquerda).

*
*
*

CIRCUITO ELETRÔNICO

*
*
*

FLUXOGRAMA

*
*
*

PROGRAMA
void main()
{
 TRISB = 0;
 PORTB = 0;
 while(1)	
 {
 PORTB = 1;
 delay_ms (500);
 PORTB = PORTB << 1;
 delay_ms (500);
 PORTB = PORTB << 1;
 delay_ms (500);		
 PORTB = PORTB << 1;
 delay_ms (500);

 PORTB = PORTB << 1;
 delay_ms (500);
 PORTB = PORTB << 1;
 delay_ms (500);
 PORTB = PORTB << 1;
 delay_ms (500);
 PORTB = PORTB << 1;
 delay_ms (500);	
 }
}

*
*
*

2ª OPÇÃO
void main()
{
	 int i;
 TRISB = 0;
 PORTB = 0b00000001;
 while(1)
 {
 delay_ms (500);
 i = PORTB.F7;
 PORTB = PORTB << 1;
 PORTB.F0 = i;
 }
}