[RESOLVIDO] PROBLEMAS COM A CONFIGURAÇÃO DO PIC16F76 /876

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Mensagempor RobL » 08 Jun 2010 09:31


BSF STATUS, RP0
MOVLW B'00000111'
MOVWF ADCON1


BSF STATUS, RP0 ; Select Bank 1
MOVLW 0x06 ;configura todos os pinos
MOVWF ADCON1 ; como entrada digital

Tente entrar com 6 em vez de 7 no ADCON1

Coloque suas portas A como entrada
MOVLW B'11111111'
MOVWF TRISA
RobL
Dword
 
Mensagens: 1546
Registrado em: 20 Fev 2007 17:56

Mensagempor Rodrigo.rb3s » 09 Jun 2010 08:43

RobL

Altereri os registradores como mandaram, esse pic não tem o "cmcom" o registrador que faz essa função é CCP1CON E O ADCON1 PRA VALOR "6"
mas ainda não resolveu, eu colco chaves e resistor de pull up nos pinos do PORTA e esecuto o programa ele testa sempre o primeiro botao que eu pesso mas não testa os outros mesmo eu invertendo as posiçoes ele só testa um e para...

BTFSC PORTA,0

OU BTFSC PORTA,1 eu ainda não sei porque, ai está o Codigo que eu alterei...


INCLUDE <P16F76.INC>
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_OFF & _XT_OSC
ERRORLEVEL -302
;*************************************************************************
; LOCAL PARA DEFINIR VARAVEIS
;
CBLOCK 0X20
TMPLCDREGISTER
MSDELAYCOUNTER
ENDC
;LOCAL PARA DEFINIR CONSTANTES
#DEFINE BANK0 BCF STATUS,RP0
#DEFINE BANK1 BSF STATUS,RP0
#DEFINE LCD_RS PORTB,2 ;PIC RB2(17) NO LCD PINO(4) RS
#DEFINE LCD_E PORTB,3 ;PIC RB3(18) NO LCD PINO(6) ENABLE
#DEFINE LCD_DB4 PORTB,4 ;PIC RB4(10) NO LCD PINO(11)
#DEFINE LCD_DB5 PORTB,5 ;PIC RB5(11) NO LCD PINO(12)
#DEFINE LCD_DB6 PORTB,6 ;PIC RB6(12) NO LCD PINO(13)
#DEFINE LCD_DB7 PORTB,7 ;PIC RB7(13) NO LCD PINO(14)
;

;
;*************************************************************************


;*************************************************************************
;
ORG 0X00
GOTO INICIO
ORG 0X04
NOP
RETFIE
;
; PORT B'76543210'
;
INICIO
MOVLW 0X00
MOVWF CCP1CON
CLRF PORTB
CLRF PORTB
CLRF PORTB
BANK1
MOVLW 0X00
MOVWF OPTION_REG
MOVLW 0X00
MOVWF INTCON
MOVLW 0x06
MOVWF ADCON1
MOVLW 0XFF
MOVWF TRISA
MOVLW 0X00
MOVWF TRISB
MOVLW 0X00
MOVWF TRISC
BANK0

;
;*************************************************************************
; COMEÇO DO PROGRAMA
;*************************************************************************
CALL LCDINIT ; ROTINA QUE INICIALIZA DISPLAY LCD
; PRIMEIRA CHAMADA OBRIGATÓRIA
; AO INICIAR O PROGRAMA
;*************************************************************************
CALL SISTEMAPRONTO ; PRIMEIRA MENSAGEM NO DISPLAY DE ;LCD
;*************************************************************************
;
CLRF PORTC
LOOP
BTFSC PORTA,1 ; TESTA O PORTA,0 SE ESTÁ EM 0
GOTO LOOP ; NAO
MOVLW H'FF'
CALL MSDELAY
CALL PROCESSO_EM_ANDAMENTO
GOTO PROCESSO
BSF PORTC,4
BTFSC PORTA,0
GOTO SENSOR2
BSF PORTB,0
GOTO SENSOR2
SENSOR2
BTFSC PORTA,2
GOTO LOOP
BSF PORTB,1
GOTO PROCESSO
PROCESSO
CALL PROCESSO_EM_ANDAMENTO
BSF PORTC,3
BCF PORTB,1
MOVLW H'FF'
CALL MSDELAY
CALL MSDELAY
CALL MSDELAY
BCF PORTC,3
BSF PORTB,1
GOTO SENSOR3
SENSOR3
BTFSC PORTA,3
GOTO PROCESSO
BCF PORTC,3
BCF PORTB,0
BCF PORTB,1
CALL PROCESSO_FINALIZADO
GOTO LOOP
byte
Avatar do usuário
Rodrigo.rb3s
Bit
 
Mensagens: 14
Registrado em: 05 Mai 2010 16:57

Mensagempor RobL » 09 Jun 2010 14:57

Sua inicialização realmente estava correta com relação as portas A.
Deve ser hardware ou pgm.
Veja isso:

Código: Selecionar todos
BTFSC PORTA,0
GOTO SENSOR2
BSF PORTB,0
GOTO SENSOR2
SENSOR2
BTFSC PORTA,2
GOTO LOOP


Enquanto seu PORTA, 2 estiver alto (1L) ficará preso nesse looping. Não fará mais nada.
Sua PORTA, 2 está vindo a zero em algum momento no qual a PORTA, 0 está zero ?

Outra detalhe:
Tem certeza que seu MSDELAY está correto, ou seja, não está preso nesse looping ?

Você tem como simular isso no MPLAB ? Seria uma saída para ver o que está acontecendo.
RobL
Dword
 
Mensagens: 1546
Registrado em: 20 Fev 2007 17:56

Resolvido

Mensagempor Rodrigo.rb3s » 18 Jun 2010 15:28

agradeço a ajuda de todos, consegui resolver o problema ta funcionando do jeito que eu queria agora....

um dos problemas era desligar as entradas analógicas do pic

outro problema era com o looping principal do programa,
o programa executava um teste em todos os pinos mas quando ele chegava no fim do programa voltava para o começo e ficava preso em um laço infinito como disse o 'Robl'.

e tambem com o AMPOP que não zerava corretamente. mas colocando um resistor de PULL UP e retirando outro resistor , resolveu o problema.

valeu a ajuda de todos...

se alguem se interessar eu posto o programa completo e corrigido...
byte
Avatar do usuário
Rodrigo.rb3s
Bit
 
Mensagens: 14
Registrado em: 05 Mai 2010 16:57

Anterior

Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x