List p=16f84a
#include <p16f84a.inc>
radix hex
status equ 0x03
porta equ 0x05
portb equ 0x06
f equ 1
w equ 0
#define banco1 bsf status,5
#define banco0 bcf status,5
PDel0 equ 0x3c
PDel1 equ 0x3e
PDe20 equ 0x54
PDe21 equ 0x56
valormax equ 0x3f
valormin equ 0x40
calculo equ 0x41
decrement equ 0x42
evento equ 0x44
org 0x00
goto inicio
org 0x04
org 0x05
inicio
banco1
movlw 0x1f
movwf porta
movlw 0x00
movwf portb
banco0
movlw d'13'
movwf valormax
movlw 0x00
movwf valormin
movlw 0x00
movwf portb
movwf calculo
inicio1
btfsc porta,0
goto UP
btfsc porta,1
goto DOWN
call envio
goto inicio1
UP
movf valormax,0
xorwf calculo,0
btfsc status,2
goto iguala13
incf calculo,1
movf valormax,0
subwf calculo,0
btfss status,0
goto MenorMayor
MenorMayor
movf calculo,0
movwf decrement
call envio
goto inicio1
iguala13
bcf portb,2
btfsc porta,1
goto DOWN
goto iguala13
DOWN
movf valormin,0
xorwf calculo,0
btfsc status,2
goto iguala0
decf calculo,1
movf calculo,0
subwf valormin,0
btfss status,0
goto MenorMayor
iguala0
bsf portb,2
btfsc porta,0
goto UP
goto iguala0
envio
call detecta1
call tiempoT
bsf portb,2
bcf portb,2
call detecta2
call tiempoT
bsf portb,2
bcf portb,2
btfsc porta,0
call UP
btfsc porta,1
call DOWN
goto envio
tiempoT
movf valormin,0
xorwf calculo,0
btfsc status,2
goto iguala0
movf calculo,0
movwf evento
denuevo
call retardo
decfsz evento,1
goto denuevo
return
retardo
movlw .158 ; 1 set numero de repeticion
movwf PDel0 ; 1 |
PLoop0 clrwdt ; 1 clear watchdog
decfsz PDel0, 1 ; 1 + (1) es el tiempo 0 ?
goto PLoop0 ; 2 no, loop
clrwdt ; 1 ciclo delay
return ; 2+2 Fin.
detecta1
bucle
btfsc porta,4
return
goto bucle
detecta2
bucle1
btfss porta,4
return
goto bucle1
end
este es mi programa del pic no me funciona creo que algo esta mal siempre que lo enchufo el pco siempre se queda prendido.. pareciera que no lee los pulsadores
aver si me ayudan en con el codigo!!!