(Leon, 50 ms no es medi segundo... serian 500ms :-) )
Hola, Diego_z, te pego el codigo arriba :mrgreen:Código: ASM
bsf STATUS,5 ;cambiar a banco 1 movlw b'00001' ;DECLARO EL BIT 0 movwf TRISA ;DEL PUERTA A COMO ENTRADA CLRF PORTB ;EL B COMO SALIDA bcf STATUS,5 ;cambiar a banco 1
y allí dice, declaro el bit 0 (seria el bit de menor peso, posición cero), y lo mueves a TRIS A,
esto, es lo que define si es entrada o salida.... para que te acueerdes... un 0, seria 0utput (salida)
un 1, seria 1nput, (entrada) :mrgreen:
Suerte!
;*****************************************************************************
;Ejercio Contador 0 a 9 con display anodo comun
;Cristal 4 mhz
;*****************************************************************************
list p=16f84A
#include p16f84a.inc
__CONFIG _CP_OFF & _XT_OSC & _WDT_OFF ;Configuracion Fusibles Pic
f equ 1
tmro equ 0x01 ;Registro Option o Tmro
pcl equ 0x02
estado equ 0x03 ;Registro Status
display equ 0x06 ;Registro Portb o Trisb
boton equ 0x05 ;Registro Porta o Trisa
temp equ 0x21 ;Variable GPR
cuenta equ 0x22
org 0
bsf estado,5 ;Ingresar a banco 1
movlw 0xff ;255-->W
movwf boton ;Portc=input
clrf display ;Portb=Output
movlw b'00000111' ;configuro TMR0
movwf tmro ;Option_Tmro=7
bcf estado,5 ;Salir de Banco 1
clrf display ;inicio Portb=0
comf display,f ;apago el display
clrf cuenta ;variable cuenta=0
inicio: movf cuenta,w ;cargo cuenta a w
call tabla ;llamo tabla segun w
movwf display ;muestro el numero segun valor de cuenta
call delay1s ; llamo rutina de retardo 1seg
INCRE btfsc boton,0 ;pulsaste el boton
goto INCRE ;no-->sigo preguntado $-1
espera btfss boton,0 ;si-->espero que sueltes el boton
goto espera ;aun no sueltas el boton
incf cuenta,f ;soltaste el bonton incremento cuenta
movf cuenta,w ;
sublw d'10' ;
btfsc estado,2 ; cuenta es 10, Si (cuenta=0)
clrf cuenta
goto inicio ;repetir secuencia
tabla addwf pcl,f
retlw 0x18 ;0
retlw 0x7b ;1
retlw 0x2c ;2
retlw 0x29 ;3
retlw 0x4b ;4
retlw 0x89 ;5
retlw 0xc8 ;6
retlw 0x3b ;7
retlw 0x8 ;8
retlw 0xb ;9
delay1s movlw d'30' ;Rutina delay= 32,7ms x 30 aprox 1seg
movwf temp
delay1 clrf tmro ;inicio timer0 desde 0 a 128
delay2 btfss tmro,7 ;¿Timer0 es = 128?
goto delay2
decfsz temp ;Se a repedito el Bucle durante 30 Veces??
goto delay1
return
end
[/sup]