Você está na página 1de 4

Microcontroladores

Programa 1: Realizar uma programao para acender um led Este programa tem a funo de acender um led quando o boto for pressionado e apaglo quando no for pressionado.

Esquema Eletrnico:

Fluxograma:
Rot Princ.

TRISB=0xFF TRISD=0x00

LED=0

botao=0?

LED=1

LED=0

Programa: #include<16F877.h> // Diretiva de Compilao, determina as configuraes bsicas para funcionamento do PIC escolhido

#use delay(clock=4000000) // Determina a frequncia de clock do PIC neste caso de 4MHz

#fuses nowdt,nolvp,noprotect,put,brownout,xt /* nowdt= Watch dog timer desligado, nolvp= programao em baixa tenso desabilitada, noprotect= permite regravar o Pic e enxergar o cdigo, put=prev que o programa no comece antes que a alimentao seja inicializada, brownout= utilizado para forar um reset quando a tenso de alimentao sofre uma pequena queda, xt=tipo de oscilador utilizado (oscilador de cristal ligado externamente ao PIC */

#use fast_io(a) /*Informa ao compilador que o controle do TRIS do port indicado ser executado pelo
programa.Gera operaes de entrada e sada mais rpidas.*/

#use fast_io(b) #use fast_io(c) #use fast_io(d) #use fast_io(e) #byte porta=0x05 // Acesso aos ports como variveis #byte portb=0x06 #byte portc=0x07 #byte portd=0x08 #byte porte=0x09 #bit botao=portb.0 // Define o Portb.0 com o nome de botao #byte led=portd // Define o Portd.0 com o nome de led void main() { set_tris_b(0xFF); // Configura o Portb.0 com entrada e os demais Ports com sada. set_tris_d(0x00); // Configura o Portd.0 como sada e os demais como entrada. led=0; // Garante que o led comece apagado for(;;) // Lao Infinito { if(!botao) // Condio de teste do botao, se boto=0 faa a condio dentro do bloco { led=0x01; //Envia nvel lgico 1 para o Portd.0 e 0 para os demais Ports(Led aceso) } else /* Condio de teste atrelada ao if, se o boto no for pressionado, ou seja igual
a 1 executa o bloco abaixo.*/

{ led=0x00; // Envia nvel lgico 0 a todos os Ports(Led apagado) } } }

Programa 2: Realizar uma programao pra acender leds utilizando dois botes Este programa tem a funo de acender leds utilizando dois botes. O circuito dever funcionar da seguinte forma. Pressionando B1 4 leds acendero e 4 leds permanecero apagados da seguinte forma 10101010. Quando B2 for pressionado ir inverter a condio e os leds ficaro da seguinte forma 01010101. Lembrando que 0 significa led apagado e 1 significa led aceso. Esquema Eletrnico:

Rot.Principal

TRISB=0xFF TRISD=0x00 LEDS=0

B1=0?

LEDS=AAh

B2=0

LEDS=55h

Programa: #include<16F877.h> #use delay(clock=4000000) #fuses nowdt,put,brownout,nolvp,noprotect,xt #byte porta=0x05 #byte portb=0x06 #byte portc=0x07 #byte portd=0x08 #byte porte=0x09 #use fast_io(a) #use fast_io(b) #use fast_io(c) #use fast_io(d) #use fast_io(e)

#bit B1=portb.0 #bit B2=portb.1 #byte LEDS=portd

void main() { set_tris_b(0xFF); set_tris_d(0x00); LEDS=0; for(;;){ if(!B1) { LEDS=0xAA; } if(!B2) { LEDS=0x55; }

} }

Você também pode gostar