quinta-feira, 13 de novembro de 2008

Programa em PIC

Segue abaixo o algoritimo para pic do sistema demonstrado no vídeo da postagem abaixo:

#include

__CONFIG _WDT_OFF & _INTRC_OSC_NOCLKOUT & _MCLRE_OFF & _LVP_OFF ;Configurações Iniciais


#DEFINE BANK0 BCF STATUS,RP0 ;Facilitando a troca de banco pro banco 0
#DEFINE BANK1 BSF STATUS,RP0 ;e banco 1.
#DEFINE LED PORTA,0
;Dando nome 'LED' ao bit 0 da PORTA.
#DEFINE MOTOR PORTA,2 ;Dando nome 'MOTOR' ao bit 2 da PORTA.
#DEFINE INFRA PORTA,1 ;Dando nome 'INFRA' ao bit 1 da PORTA.
#DEFINE LEDV PORTA,3 ;Dando nome 'LEDV' ao bit 3 da PORTA.

ORG 0x00

GOTO INICIO ;Direciona o ponteiro de execução para a sub-rotina INICIO.

INICIO ;Sub-rotina INICIO.

CLRF PORTA ;Zera todo o byte PORTA.
BANK1 ;Troca do banco atual(banco 0) para o banco 1.
MOVLW B'11110010' ;Move o valor binário 11110010 para o registrador W.
MOVWF TRISA ;Move o byte W para o TRISA(que define os bits de PORTA como entrada=1 ou saída=0).
BANK0 ;Troca do banco atual(banco 1) para o banco 0.
MOVLW b'00001111' ;Move o valor binário 00001111 para o registrador W.
MOVWF CMCON ;Move o byte W para o CMCON.

MAIN ;Sub-rotina Main.
BTFSS INFRA
CALL PARA ;Chama a função PARA.
BTFSC INFRA
CALL LIGADO ;Chama a função LIGADO.
GOTO MAIN ;Direciona o ponteiro de execução para a sub-rotina MAIN.

LIGADO ;Sub-rotina LIGADO.
BSF LEDV ;Seta o bit LEDV '1'.
BCF LED ;Seta o bit LED '0'.
BSF MOTOR ;Seta o bit MOTOR '1'.
RETURN ;Retorna o ponteiro de execução para linha seguinte a chamada da função.

PARA ;Sub-rotina PARA.
BCF LEDV ;Seta o bit LEDV '0'.
BSF LED ;Seta o bit LED '1'.
BCF MOTOR ;Seta o bit MOTOR '0'.
RETURN ;Retorna o ponteiro de execução para linha seguinte a chamada da função.
END

Funcionamento:
Quando o laser for interropido o motor DC pára, e só volta a funcionar quando o laser nao estiver mais interrompido.

Dessa forma podemos simular um ambiente fabril onde quando alguma coisa invade o espaço do processo de produção, nesse caso a esteira, essa pára automaticamente evitando assim um acidente.

Nenhum comentário: