Disculpen pero tengo un pequeño problema al programar un pic 16f84a, no se si me faltaran algunas instrucciones que van al inicio, lo del resto del programa esta bien, algun detalle que se me haya escapado, con eso prendere unos leds, simulando que enciendo un motor, pero ni siquiera en la subrutina de descanso se prenden los leds que se deberian prender por eso digo que el problema es yo creo en la asignacion de puertos de salida y entrada... si necesitan alguna información extra se las respondo enseguida, tambien no se si puedan pasarme un pequeño programa de prender solo un led, uno que ya sirva, para vr si el problema es el programador.
Código:
List p=16f84a
INCLUDE <P16F84A.INC>
__CONFIG _CP_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC
timer1 equ 0c
timer2 equ 0d
timer3 equ 0e
motoraa1 equ porta, 3 ;leds
motoraa2 equ porta, 2
motorab1 equ porta, 0
motorab2 equ porta, 1
motorba1 equ portb, 3
motorba2 equ portb, 2
motorbb1 equ portb, 4
motorbb2 equ portb, 5
motorc1 equ portb, 6
motorc2 equ portb, 7
entrada1 equ portb, 0 ;entrada de dos interruptores que
entrada2 equ portb, 1 ;que estan conectados desde +5v
;y de unas resistencias de 10kohms
org 0x0000
goto encendido
org 0x0004
nop
encendido
clrwdt ;limpia el perro guardian
movlw b'00000000'
movwf intcon
bcf STATUS, rp1
bsf status, rp0
movlw b'00000000'
movwf option_reg
movlw b'00000000' ;todas son salidas en porta
movwf trisa
movlw b'00000011' ;solo porta 0 y porta 1 son entradas las demas
movwf trisb ;salidas
bcf status, rp0
clrf porta ;limpia los puertos
clrf portb
Principal
menu call descansar ;hace una demora
btfsc entrada1
call marcar_paso
btfsc entrada2
call girar
goto menu
marcar_paso clrf entrada1
clrf entrada2
bsf motoraa1
bsf motorab1
bsf motorba1
bsf motorbb1
call tempo
call tempo
call tempo
bcf motoraa1
bcf motorab1
bcf motorba1
bcf motorbb1
ciclo1 bsf motoraa2
bsf motorba2
call tempo
call tempo
bcf motoraa2
bcf motorba2
bsf motoraa1
bsf motorba1
call tempo
call tempo
bcf motoraa1
bcf motorba1
btfsc entrada2
goto continuar1
bsf motorab2
bsf motorbb2
call tempo
call tempo
bcf motorab2
bcf motorbb2
bsf motorab1
bsf motorbb1
call tempo
call tempo
bcf motorab1
bcf motorbb1
goto ciclo1
continuar1 clrf entrada1
clrf entrada2
call tempo
return
girar clrf entrada1
clrf entrada2
bsf motoraa1
bsf motorab1
bsf motorba1
bsf motorbb1
call tempo
call tempo
call tempo
bcf motoraa1
bcf motorab1
bcf motorba1
bcf motorbb1
bsf motoraa2
bsf motorba2
call tempo
call tempo
bcf motoraa2
bcf motorba2
bsf motorc1
call tempo
bcf motorc1
ciclo2 bsf motoraa1
bsf motorba1
call tempo
call tempo
bcf motoraa1
bcf motorba1
bsf motorab2
bsf motorbb2
call tempo
call tempo
bcf motorab2
bcf motorbb2
bsf motorc2
call tempo
call tempo
bcf motorc2
nop
nop
bsf motorab1
bsf motorbb1
call tempo
call tempo
bcf motorab1
bcf motorbb1
btfsc entrada1
goto continuar2
bsf motoraa2
bsf motorba2
call tempo
call tempo
bcf motoraa2
bcf motorba2
bsf motorc1
call tempo
call tempo
bcf motorc1
goto ciclo2
continuar2 clrf entrada1
clrf entrada2
bsf motorc1
call tempo
bcf motorc1
return
descansar bsf motoraa2
bsf motorab2
bsf motorba2
bsf motorbb2
call tempo
call tempo
call tempo
bcf motoraa2
bcf motorab2
bcf motorba2
bcf motorbb2
return
tempo movlw 15
movwf timer3
temp1 movlw 20
movwf timer2
temp2 movlw 25
movwf timer1
temp3 decfsz timer1
goto temp3
decfsz timer2
goto temp2
decfsz timer3
goto temp1
return
END