Moderadores: andre_luis, 51, guest2003, Renie
likio escreveu:Boa noite Fabio, acho que não fui muito claro no programa que passei, pois coloquei apenas parte do código. Mas vamos aos fatos, ja fiz esta programação em outras ocasiões e sempre funcionou, exceto nesta ocasião. mesmo que eu substitua os call por goto acontece o mesmo efeito, então o problema de sobrescrever a pilha não é o motivo. já configurei o PORTA, para entrada em todos os pinos, além disso não estou usando nenhuma outra configuração para o PIC em questão. Este programa ja utlizei para um pic16f84A, e apenas copiei para o novo pic, e não funcionou.
list p=16f628A
#include <P16f628A.inc>
__CONFIG _BOREN_ON & _CP_OFF & _PWRTE_ON & _WDT_OFF & _LVP_OFF & _MCLRE_ON & _XT_OSC
;
;********************************************************************************************
;* Definição da Memória Ram *
;********************************************************************************************
;
A_t equ H'20'
B_t equ H'21'
C_t equ H'22'
D_t equ H'23'
DEBOUNCE equ H'24'
;
;********************************************************************************************
;* Início do Programa *
;********************************************************************************************
;
org 0 ; define que o programa irá começar no endereço 0
nop ; função sem operação
nop
nop
nop
nop
;********************************************************************************************
;* Parametrização dos Registradores *
;********************************************************************************************
INÍCIO
clrf PORTA ; inicializa a porta A
clrf PORTB ; inicializa a porta C
bsf STATUS,RP0 ; seleciona o banco 1
movlw B'11111111' ; w=256
movwf OPTION_REG ; Pull-ups desabilitado, Prescaler 1:256
movlw B'00000000' ; w=0
movwf INTCON ; desabilita todas as interrupções
movlw B'00000000'
movwf TRISB ;
movlw B'11111111'
movwf TRISA
bcf STATUS,RP0
goto TECLAS
;********************************************************************************************
;* Programa Principal *
;********************************************************************************************
LED_ON
nop
bsf PORTB,1
nop
goto TEMPO
LED_OFF
nop
bcf PORTB,1
nop
goto TEMPO
;********************************************************************************************
;* Rotina de Tempo *
;********************************************************************************************
TEMPO
movlw D'7'
movwf A_t
movlw D'47'
movwf B_t
movlw D'3'
movwf C_t
nop
decfsz C_t
goto $-2
decfsz B_t
goto $-6
decfsz A_t
goto $-8
return
;********************************************************************************************
;* Leitura das teclas *
;********************************************************************************************
TRATA_TECLA 1
movlw D'10'
movwf DEBOUNCE
decfsz DEBOUNCE
goto $-1
nop
btfsc PORTA,1
return
goto LED_ON
TRATA_TECLA 2
movlw D'10'
movwf DEBOUNCE
decfsz DEBOUNCE
goto $-1
nop
btfss PORTA,2
goto LED_OFF
TECLAS
btfss PORTA,1
goto TRATA_TECLA 1
btfss PORTA,2
goto TRATA_TECLA 2
goto TECLAS
TEMPO 1
movlw D'4'
movwf A_t
movlw D'10'
movwf B_t
movlw D'25'
movwf C_t
decfsz C_t
goto $-1
decfsz B_t
goto $-5
decfsz A_t
goto $-9
return
end
EvandrPic escreveu:- No 16f628 os comparadores vem habilitados, verificar se colocou CMCON 0x07 para entrada digitais.
Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante