Microcontroladores
Programao em Linguagem C
Formato bsico do programa
/* comentrios de documentao
* iniciados sempre por uma combinao /* e terminados por */
* uma boa prtica documentar seus programas
*/
// Headers utilizados
#include <delays.h> // Delay library functions
// Portas utilizadas
//
// RC0 -> LED Vermelho
// RC1 -> LED Amarelo
// RC2 -> LED Verde
// Inicio do programa
void main () {
int i;
char p;
int x=0, y=2;
long total;
unsigned char dado;
Exemplo de definio de varivel
void main() {
Operador Operao
== Igual
!= Diferente
< Menor
> Maior
<= Menor ou igual
>= Maior ou igual
&& And (e)
|| Or (ou)
! Negao
void main() {
void main() {
TRISA = 0b11101111; // Configura direo dos pinos da PORTA A (RA4 como saida)
TRISD = 0b00000000; // Configura direo dos pinos da PORTA D (Todos como saida)
PORTA = 0x10; // Habilita RA4 (liga transistor dos LEDs
dir = 1;
while(1) {
i=1;
if (dir==1) {
while(i<=128) {
PORTD = i; // Grava valor da PORTA D
Delay1KTCYx(100);
i=i*2;
}
dir=0
} else {
i=128;
while(i>=1) {
PORTD = i; // Grava valor da PORTA D
Delay1KTCYx(100);
i=i/2;
}
dir=1;
}
}
} // FIM DO PROGRAMA
Estilo de codificao
void main()
{
...
..
while(1)
{
i=1;
if (dir==1)
{
while(i<=128)
{
PORTD = i; // Grava valor da PORTA D
Delay1KTCYx(100);
i=i*2;
}
dir=0
}
else
{
i=128;
while(i>=1)
{
PORTD = i; // Grava valor da PORTA D
Delay1KTCYx(100);
i=i/2;
}
dir=1;
}
}
} // FIM DO PROGRAMA
Estilo de codificao
void main() {
...
..
TRISA = 0b11101111; // Configura direo dos pinos da PORTA A (RA4 como saida)
TRISD = 0b00000000; // Configura direo dos pinos da PORTA D (Todos como saida)
PORTA = 0x10; // Habilita RA4 (liga transistor dos LEDs
dir = 1;
while(1) {
i=1;
if (dir==1) {
while(i<=128) {
PORTD = i; // Grava valor da PORTA D
Delay1KTCYx(100);
i=i*2;
}
dir=0
} else {
i=128;
while(i>=1) {
PORTD = i; // Grava valor da PORTA D
Delay1KTCYx(100);
i=i/2;
}
dir=1;
}
}
} // FIM DO PROGRAMA
Operaes aritmticas
Operador Operao
+ Adio
- Subtrao
* Multiplicao
/ Diviso
% Resto da diviso
++ Incrementao (unrio)
-- Decrementao (unrio)
Exemplo ps-incremento e pr-incremento
void main() {
int a,b,i=10;
} // FIM DO PROGRAMA
Exemplo ps-decremento e pr-decremento
void main() {
int a,b,i=10;
} // FIM DO PROGRAMA
Exemplo operao % (resto da diviso)
void main() {
int a,b,i=35;
a = i / 10; // a recebe 3
b = i % 10; // b recebe 5
} // FIM DO PROGRAMA
Operaes lgicas
Operador Operao
& And (e)
| Or (ou)
^ Xor (xou)
Tabela verdade
A B A&B A|B A^B ~A
0 0 0 0 0 1
0 1 0 1 1 1
1 0 0 1 1 0
1 1 1 1 0 0
Exemplos de operaes lgicas (AND)
Variveis:
A = 0b11001010
0312 Octal, 0xca Hexadecimal ou 202 decimal
B = 0b00001111
017 Octal, 0x0f Hexadecimal ou 15 decimal
A = A+20 A += 20 Soma 20 em A
C = C+A C += A Soma A em C
Variveis:
A = 0b11001010
0312 Octal, 0xca Hexadecimal ou 202 decimal
Variveis:
A = 0b00110010
062 Octal, 0x32 Hexadecimal ou 50 decimal