Escolar Documentos
Profissional Documentos
Cultura Documentos
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
#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.*/
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
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)
void main() { set_tris_b(0xFF); set_tris_d(0x00); LEDS=0; for(;;){ if(!B1) { LEDS=0xAA; } if(!B2) { LEDS=0x55; }
} }