Buenas de nuevo, como el post indica he realizado mi primer programa, pero no ha resultado como esperaba. El objetivo de este programita es algo sencillo, simplemente realizar una subida y bajada de los leds del puerto B con la peculiaridad de que dependiendo de lo que se seleccione por el PORTA el retardo varia en la secuenci.
Me estoy volviendo loco simulando con proteus(gracias a las ayudas del foro) pero mi programita no me toma el valor del PORTA , ¿me podeis dar una pista?
;Programa para la simulacion de una serie de leds
list P=16F877
radix hex
#include <p16f877.inc> ;incluimos la libreria del PIC 16F877
;********************Zona de Etiquetas**************
temp equ 0x20 ;registro temporal
tempi equ 0x21
aux equ 0x23
aux1 equ 0x24
port equ 0x25
;****************************************************************
;*************************************************************************************+
ORG 0x00
goto inicio
ORG 0x05
;*********************************CARGO VALOR DE REFERENCIA************
;****************COnfiguracion del controlador******************************************
inicio
bsf STATUS,RP0 ;acceso al banco 1
bcf STATUS,RP1
;*******PUERTOS******************************************
clrf TRISB ;puerta B como salida, aqui estaran los leds que vamos a usar
movlw b'00000011'
movwf TRISA ;puerta A0 y A1 entrada digital para seleccionar tiempo
bsf TRISC,5 ;Lo usaremos como boton de START
;*******CONFIGURACION DEL TMR0****************************
movlw b'00000111'
movwf OPTION_REG ;configuracion del timer0 con un preescalado de 256
clrf INTCON
bcf STATUS,RP0
bcf STATUS,RP1 ;acceso al banco 0
movlw b'00000110'
movwf ADCON1 ;CONFIGURO LAS PATILLAS COMO DIGITALS
;**************FIN DE LA CONFIGURACION DEL CONTROLADOR**********************************
;****************************************************************************************
;**************COMIENZO DEL PROGRAMA**************************************************
main
clrf PORTB
movlw b'00000001'
movwf aux
movlw b'00000010'
movwf aux1
btfss PORTC,5
goto main
call tiempo
bsf PORTB,0
call retardo ;encendemos la primera bombilla y esperamos el mismo retardo
call ida
call vuelta
goto inicio
;****************************rutina Programa ***********************************
ida rlf PORTB,1
call retardo
btfss PORTB,7
goto ida
return
vuelta rrf PORTB,1
call retardo
btfss PORTB,0
goto vuelta
return ;volvemos al principio
;****************************************CALCULO DEL RETARDO
retardo
movf temp,W
movwf tempi
clrf TMR0
bcf INTCON,T0IF
retardo_2 btfss INTCON,T0IF
goto retardo_2
decfsz tempi,f
goto retardo_3
return
retardo_3 bcf INTCON,T0IF
goto retardo_2
;***************************COMPARACION PARA SELECICONAR RETARDO********************************
tiempo
movf PORTA,W
movwf port
subwf aux,W
bz _1_seg ;Igual rtetardo 1seg
bc comparo2 ;mayor
bnc _0_5_seg ;menor
comparo2 movf port,W
subwf aux1,W
bz _1_5_seg
bc _2_seg
_0_5_seg movlw D'8'; Retardo de 0.5 segundo
movwf temp
return
_1_seg movlw D'15' ; Retardo de 1 Segundo
movwf temp
return
_1_5_seg movlw D'23' ; Retardo de 1.5 segundos
movwf temp
return
_2_seg movlw D'30' ;RETARDO de 2 SEG
movwf temp
return
end