Amanhã pela manhã haverá notícias da finalização da eletrônica e pela tarde teste de todos os componentes juntos funcionando. Amanhã postamos video da Esteira LM3 finalizada.
Aí segue o código para PIC 16f628a comentado:
#include
__CONFIG _WDT_OFF & _INTRC_OSC_NOCLKOUT & _MCLRE_OFF & _LVP_OFF
CBLOCK 0x20 ;ENDEREÇO INICIAL DA MEMÓRIA DE USUÁRIO
TEMPO
ENDC
#DEFINE BANK0 BCF STATUS,RP0
#DEFINE BANK1 BSF STATUS,RP0
#DEFINE LED PORTA,1
#DEFINE MOTOR PORTA,2
#DEFINE INFRA PORTA,0
#DEFINE LEDV PORTA,3
#DEFINE BALANCA PORTA,4
ORG 0x00
GOTO INICIO
ORG 0x04
GOTO TRATA_TIMER
INICIO
CLRF PORTA
BANK1
MOVLW B'00000111' ; bit do 0 ao 2, configuração de Preescale - 111 = 1:256 Timmer0; bit 8, habilita uso de periféricos.
MOVWF OPTION_REG ; Move o byte de configuração do Work para o registrador OPTION_REG
MOVLW B'11110001'
MOVWF TRISA ; seta as portas de entrada e saida
BANK0
MOVLW b'00000111'
MOVWF CMCON ; Desabilita comparadores
MOVLW .20 ; Atribui 20 para W
MOVWF TEMPO ; Atribui valor de W para TEMPO
MAIN
BTFSS BALANCA ;Checa se o peso exedeu 200g
GOTO EXPESO ;Se execedeu va para expeso
BTFSS INFRA ;Checa se o laser foi interrompido
CALL PARA ;se foi va para subrotina PARA
BTFSC INFRA ;checa se laser nao está interrompido
CALL LIGADO ;se nao estiver va para LIGADO
GOTO MAIN
LIGADO ;Sub-Rotina Ligado
BSF LEDV ;Liga led verde
BCF LED ;Desliga led vermelho
BSF MOTOR ;Liga motor
RETURN
PARA ;Sub-Rotina PARA
BCF LEDV ;desliga led verde
BSF LED ;liga led vermelho
BCF MOTOR ;desliga motor
MOVLW .20
MOVWF TEMPO
MOVLW B'10100000' ; BIT: 7-INTERRUPÇÃO, 5-TIMMER, 2-Flag Timmer
MOVWF INTCON ; Move o byte de configuração do Work para o registrador INTCON
LOOP
GOTO LOOP
RETURN
TRATA_TIMER ; Trata a interrupção gerada pelo Timmer0
BCF INTCON, T0IF ; Desabilita flag de Timmer0
BCF INTCON, GIE ; Habilita Interrupção Geral
BTFSS INFRA
GOTO MAIN
DECFSZ TEMPO ; Decrementa Variavel TEMPO2 e testa se TEMPO2 = 0 pula a proxima linha.
GOTO TESTALED
GOTO MAIN
TESTALED ;Sub-Rotina TESTALED
BTFSC LED ;Checa se led vermelho está apagado
GOTO ASCENDE ;se estiver vai para subrotina ascende
BTFSS LED ;testa se led vermelho está aceso
GOTO APAGA ;se estiver vai para subrotina apaga
ASCENDE ;Sub-Rotina ASCENDE
BCF LED ;Apaga led vermelho
RETFIE
APAGA ;Sub-Rotina APAGA
BSF LED ;Ascende led vermelho
RETFIE
EXPESO ;Sub-Rotina EXPESO
BCF LEDV ;Apaga led verde
BSF LED ;Ascende led vermelho
BCF MOTOR ;Desliga motor
GOTO MAIN
END
Nenhum comentário:
Postar um comentário