adjunto mi codigo segun yo ya casi terminado ahora el problema es que al simularlo en proteus corre muy bien pero al pasarlo al micro no hace nada que puede pasar?? y como mencionas como podria acoplarle en ves de un push un sensor de herradura?? ya que aqui tengo duda por que me han comentado que el sensor de herradura al prender o apagar aria una oscilacion y mi micro detectaria muchos 0 y 1
include <P18F4550.INC>
config FOSC=XTPLL_XT
config PLLDIV=1
config CPUDIV=OSC1_PLL2
config PWRT=ON
config BOR=OFF
config WDT=OFF
config MCLRE=ON
config LVP=OFF
config CP0=OFF
config CP1=OFF
config CP2=OFF
config CP3=OFF
cblock 00H
contador
PDel0
PDel1
PDel2
var
val0
val1
val2
val3
val4
val5
val6
val7
val8
val9
val01
val02
val03
val04
val05
val06
val07
val08
val09
endc
org 00H
goto inicio
PDelay movlw .91 ; 1 set number of repetitions (C)
movwf PDel0 ; 1 |
PLoop0 movlw .95 ; 1 set number of repetitions (B)
movwf PDel1 ; 1 |
PLoop1 movlw .138 ; 1 set number of repetitions (A)
movwf PDel2 ; 1 |
PLoop2 clrwdt ; 1 clear watchdog
clrwdt ; 1 cycle delay
decfsz PDel2, 1 ; 1 + (1) is the time over? (A)
goto PLoop2 ; 2 no, loop
decfsz PDel1, 1 ; 1 + (1) is the time over? (B)
goto PLoop1 ; 2 no, loop
decfsz PDel0, 1 ; 1 + (1) is the time over? (C)
goto PLoop0 ; 2 no, loop
clrwdt ; 1 cycle delay
return ; 2+2 Done
inicio
movlw b'00001111'
movwf ADCON1
movwf TRISD
movlw 01h
clrf TRISB ;ESTABLECE PUERTO B CMO SALIDA
clrf PORTB ;LIMPIAS PUERTO B
clrf contador
;------------------constates de cambio------
movlw b'11010' ;valor maximo que llega antes de cambiar
movwf val01
movlw b'101010'
movwf val02
movlw b'111010'
movwf val03
movlw b'1001010'
movwf val04
movlw b'1011010'
movwf val05
movlw b'1101010'
movwf val06
movlw b'1111010'
movwf val07
movlw b'10001010'
movwf val08
movlw b'10011010'
movwf val09
;---------------constantes nible alto----------
movlw .10
movwf val0
movlw b'00010000' ; ultimo a mostrar 10
movwf val1
movlw b'00100000' ; ultimo a mostrar 20
movwf val2
movlw b'00110000' ; ultimo a mostrar 30
movwf val3
movlw b'01000000' ; ultimo a mostrar 40
movwf val4
movlw b'01010000' ; ultimo a mostrar 50
movwf val5
movlw b'01100000' ; ultimo a mostrar 60
movwf val6
movlw b'01110000' ; ultimo a mostrar 70
movwf val7
movlw b'10000000' ; ultimo a mostrar 80
movwf val8
movlw b'10010000' ; ultimo a mostrar 90
movwf val9
;---------------------------------------------------
;-----------------EMPIEZA EL CODIGO-----------------
;----------------------------------------------------
tu btfsc PORTD,0 ;pregunta si d0 es 0 volts
goto tu ;sino se cumple la condicion de arriba vuelve a preguntar asta q se cumpla
rcall PDelay
incf contador ;incrementa contador en 1
movf contador,w ;mueve el valor de contador a w
cpfseq val0
goto te
goto segundo
te movwf PORTB
goto tu
;------------------------------->
segundo
clrf PORTB
clrf contador
CLRF PORTB
movf val1,w
clrf PORTB
movwf PORTB
goto tercero
;----------------------------------------------------
;----------------------------------------------------
tercero
btfsc PORTD,0 ;pregunta si d0 es 0 volts
goto tercero ;sino se cumple la condicion de arriba vuelve a preguntar asta q se cumpla
rcall PDelay
incf val1 ;incrementa contador en 1
movf val1,w ;mueve el valor de contador a w
cpfseq val01
goto tee
goto cuarto
tee movwf PORTB
goto tercero
;--------------------------------------->
cuarto
clrf PORTB
clrf val1
CLRF PORTB
movf val2,w
clrf PORTB
movwf PORTB
goto quinto
;-----------------------------------
;-----------------------------------
quinto
btfsc PORTD,0 ;pregunta si d0 es 0 volts
goto quinto ;sino se cumple la condicion de arriba vuelve a preguntar asta q se cumpla
rcall PDelay
incf val2 ;incrementa contador en 1
movf val2,w ;mueve el valor de contador a w
cpfseq val02
goto teee
goto seis
teee movwf PORTB
goto quinto
;--------------------------------->
seis
clrf PORTB
clrf val2
CLRF PORTB
movf val3,w
clrf PORTB
movwf PORTB
goto siete
;---------------------------------
;---------------------------------
siete
btfsc PORTD,0 ;pregunta si d0 es 0 volts
goto siete ;sino se cumple la condicion de arriba vuelve a preguntar asta q se cumpla
rcall PDelay
incf val3 ;incrementa contador en 1
movf val3,w ;mueve el valor de contador a w
cpfseq val03
goto teeei
goto ocho
teeei movwf PORTB
goto siete
;---------------------------------
ocho
clrf PORTB
clrf val3
CLRF PORTB
movf val4,w
clrf PORTB
movwf PORTB
goto nueve
;---------------------------------
;---------------------------------
nueve
btfsc PORTD,0 ;pregunta si d0 es 0 volts
goto nueve ;sino se cumple la condicion de arriba vuelve a preguntar asta q se cumpla
rcall PDelay
incf val4 ;incrementa contador en 1
movf val4,w ;mueve el valor de contador a w
cpfseq val04
goto teeeii
goto diez
teeeii movwf PORTB
goto nueve
;---------------------------------
diez
clrf PORTB
clrf val4
CLRF PORTB
movf val5,w
clrf PORTB
movwf PORTB
goto once
;---------------------------------
;---------------------------------
once
btfsc PORTD,0 ;pregunta si d0 es 0 volts
goto once ;sino se cumple la condicion de arriba vuelve a preguntar asta q se cumpla
rcall PDelay
incf val5 ;incrementa contador en 1
movf val5,w ;mueve el valor de contador a w
cpfseq val05
goto tii
goto doce
tii movwf PORTB
goto once
;---------------------------------
doce
clrf PORTB
clrf val5
CLRF PORTB
movf val6,w
clrf PORTB
movwf PORTB
goto trece
;---------------------------------
;---------------------------------
trece
btfsc PORTD,0 ;pregunta si d0 es 0 volts
goto trece ;sino se cumple la condicion de arriba vuelve a preguntar asta q se cumpla
rcall PDelay
incf val6 ;incrementa contador en 1
movf val6,w ;mueve el valor de contador a w
cpfseq val06
goto tiii
goto catorce
tiii movwf PORTB
goto trece
;--------------------------------->
catorce
clrf PORTB
clrf val6
CLRF PORTB
movf val7,w
clrf PORTB
movwf PORTB
goto quince
;----------------------------------""verificar apartir de aqui
;----------------------------------
quince
btfsc PORTD,0 ;pregunta si d0 es 0 volts
goto quince ;sino se cumple la condicion de arriba vuelve a preguntar asta q se cumpla
rcall PDelay
incf val7 ;incrementa contador en 1
movf val7,w ;mueve el valor de contador a w
cpfseq val07
goto top
goto diesiseis
top movwf PORTB
goto quince
;--------------------------------->
diesiseis
clrf PORTB
clrf val7
CLRF PORTB
movf val8,w
clrf PORTB
movwf PORTB
goto diesisiete
;----------------------------------
;----------------------------------
diesisiete
btfsc PORTD,0 ;pregunta si d0 es 0 volts
goto diesisiete ;sino se cumple la condicion de arriba vuelve a preguntar asta q se cumpla
rcall PDelay
incf val8 ;incrementa contador en 1
movf val8,w ;mueve el valor de contador a w
cpfseq val08
goto topp
goto diesiocho
topp movwf PORTB
goto diesisiete
;--------------------------------->
diesiocho
clrf PORTB
clrf val8
CLRF PORTB
movf val9,w
clrf PORTB
movwf PORTB
goto diesinueve
;----------------------------------
;----------------------------------
diesinueve
btfsc PORTD,0 ;pregunta si d0 es 0 volts
goto diesinueve ;sino se cumple la condicion de arriba vuelve a preguntar asta q se cumpla
rcall PDelay
incf val9 ;incrementa contador en 1
movf val9,w ;mueve el valor de contador a w
cpfseq val09
goto toppp
goto tu
toppp movwf PORTB
;goto diesisiete
goto tu
end