Você está na página 1de 2

LIGA LED COM BOTO E PISCA LED Dannilo Neiva de Carvalho

Aluno do 6 perodo de Engenharia Eltrica da Universidade Federal do Piau danniloneiva_18@hotmail.com Resumo Esse documento traz os resultados e as concluses concebidas atravs da simulao realizada em laboratrio das instrues presentes na sesso Procedimentos. A experincia teve como principal objetivo nos mostrar como configurar os pinos do PIC 16F877a como entrada ou sada. Foi aprendido como configur-los e como verificar e alternar o nvel (alto ou baixo) de cada pino. Abstract This paper brings the results and conclusions designed thru the simulation of the instructions presented in Procedures section made in laboratory. The experience had as primal objective show us how configure the pins of PIC 16F877a as input or output. Was learned how to configure them and how to verify and change the level (high or low) of each pin. Palavras-chave Entrada, LED, PIC, Sada. I. INTRODUO O microcontrolador um componente eletrnico que pode desempenhar inmeras funes dentro de um circuito digital. As funes que ele desempenhar so determinadas pelo programador durante a criao do programa com as instrues para o mesmo. O PIC 16F877a possui apenas 40 pinos, que podem assumir diferentes funes, dependendo da configurao. Se o componente tivesse um pino para cada funo, possuiria inmeros pinos, tornando sua utilizao, fabricao e compra inviveis. Sendo assim, utilizamos certas instrues para configurar cada porta como entrada, sada, conversor A/D, captura, comparao ou PWM. A seguir, mostramos quais as funes que cada pino pode assumir:

Familiarizar com o conjunto de instrues em Assembly do PIC16F877a. III. PROCEDIMENTOS

O procedimento experimental consiste na simulao do seguinte cdigo em Assembly utilizando o simulador MPLab. Logo aps, responder as questes pendentes.

Figura 1 Representao do PIC 16F877a e a funo de cada pinos.

II. OBJETIVOS

1 #include "P16F877a.INC" ;inclui biblioteca do PIC a ser usado 2 #define valor1 D'255' 3 #define valor2 D'255' 4 #define valor3 D'2' 5 6 cblock 0x20 7 cont1 8 cont2 9 cont3 10 Endc 11 __config _XT_OSC & _WDT_OFF 12 13;========INICIODOPROGRAMA=============== 14 bcf STATUS, RP1 ;desliga bit STATUS,RP1; 15 bsf STATUS, RP0 ;liga bit STATUS,RP0; escolhe banco 1 16 17 movlw 0xff 18 movwf TRISC ; a porta c ser entrada 19 20 clrf TRISD ; a porta d sada 21 22 bcf STATUS, RP0 23 movlw 0x00 24 movwf PORTD ; zera as sadas 25 26 le_botao btfss PORTC,0 ;testa RC0. Se ligado, pula prox linha 27 goto apaga_led ;desvia para rtulo DESLIG 28 bsf PORTD,2 ;liga RD2 (LED) 29 goto inverte ;desvia para rtulo comeco 30 apaga_led bcf PORTD,2 ;desliga RD2 (LED) 31 32 inverte movlw B'00000001' 33 xorwf PORTD,F ; ou xorwf PORTD 34 call atraso 35 goto le_botao 36 37 ;===ROTINA DE ATRASO DE TEMPO========= 38 39 atraso movlw valor3 40 movwf cont3

41 42 recarga2 movlw valor2 43 movwf cont2 44 45 recarga1 movlw valor1 46 movwf cont1 47 48 dec decfsz cont1 49 goto dec 50 decfsz cont2 51 goto recarga1 52 decfsz cont3 53 goto recarga2 54 return 55 56 57 end ;fim do programa
Instrues 1 Cdigo simulado.

) (3) Ciclos totais e o tempo gasto para um cristal de 4 MHz (cada ciclo corresponde a 4 pulsos de clock): (4) (5) A seguir, temos uma rotina para o delay de 1 ms. Para atingir o tempo desejado, precisamos de 1000 ciclos, utilizando as instrues das linhas 8 e 9, teremos um total de 750 cilos, assim, precisamos construir uma nova rotina que complete a quantidade total. Essa rotina desempenhada por dec2, onde o valor de num j foi recarregado ( 120 foi escolhido ou invs de 125 porque j se foi tirado os ciclos das outras instrues do programa) e chegando a contagem de 1000 ciclos necessrios. 1 atraso movlw D250 2 movwf num 3 goto dec 4 5 recar movlw D120 6 movwf num 7 goto dec2 8 dec decfsz num 9 goto dec 10 goto recar 11 12 dec2 decfsz num 13 goto dec2 14 return
Instrues 3 Cdigo de delay de 1 ms.

( ) Instrues 52 e 53: ( )

(2) (

O programa tem incio com a incluso da biblioteca, atribuio de valores a constantes e alocao de memria para variveis. Essa alocao feita atravs da instruo cblock 0x20, onde a varivel cont1 armazenada no endereo 0x20 e as outras em locais subsequentes (0x21 e 0x22). Na linha 21 aparece uma instruo _config, est instruo no pertence ao conjunto de instrues do PIC 16F877a, ela apenas uma diretiva do compilador (MPASM da Microchip) para informar ao micro o tipo de oscilador utilizado, quais temporizadores estaro em funcionamento, entre outros. Nesse programa, temos que o oscilador um cristal e que o temporizador watch dog est desabilitado, ou seja, o programa est desprotegido de possveis travamentos. Outra parte do programa que chama ateno se encontra na linha 32, onde temos uma rotina para fazer o LED piscar na porta D nmero 0. utilizado o comparador lgico XOR para pode fazer a alternncia de estados, entretanto, existem outras maneiras de se fazer a mesma comutao, um exemplo verificar o estado do bit em questo: 1 inverte btfss PORTD, 0 2 goto acende 3 movlw D0 4 movwf PORTD 5 goto end 6 acende movlw D1 7 movwf PORTD 8 end goto le_botao
Instrues 2 Cdigo alternar estado do LED.

V. CONCLUSO Concluiu-se que a linguagem Assembly bem verstil, ou seja, podemos realizar os mesmos comandos com instrues diferentes e complexidades diferentes. Concluiu-se tambm que, diferentemente do que se pensava, durante o delay, o microcontrolador continua executando funes e no apenas entra em um modo de suspenso. Geralmente, as instrues seguidas so instrues de decremento, que duram a quantidade de ciclos necessria ao tempo de delay pedido. Por fim, acredita-se que o objetivo geral da prtica, familiarizar com o conjunto de instrues em Assembly do PIC16F877a, foi alcanado com sucesso. VI. REFERNCIAS BIBLIOGRFICAS Notas de aula Professor Marcos Zurita. Disponvel em: http://www.ufpi.br/zurita/index/pagina/id/4614. Acessado as 16:00 de 18/12/13.

A rotina de atraso faz com que o microcontrolador tenha um tempo de inatividade, ou seja, ele continua funcionando, mas sem alterar as variveis de entrada e sada. No programa, temos uma rotina de atraso dada pelo decremento de trs variveis (cont1, cont2 e cont3), levando em conta que cada instruo equivale a um ciclo de mquina (exceto os saltos, equivalem a dois ciclos), podemos calcular quantos ciclos so gastos na rotina e quantos so os segundos de delay. Instrues 48 e 49: (1) Instrues 50 e 51:

Você também pode gostar