Conseguir que por RD0, RD1 salgan 5V

#1
hola a todos, tengo un problema y nose como solucionarlo a ver si me podeis echar una mano, estoy usando el puerto D de un 16f877a para controlar la señal de habilitacion de un 74ls244, entonces quiero activar los bit RD0 y RD1 y los demas desactivados, esta funcion es la que estoy usando:
MOVLW b'00000011'
MOVWF PORTD
mi problema es que midiendo con el multimetro las patillas RD0 y RD1 me marcan 2,3V, insuficiente para que el 74LS244 lo reconozca como nivel alto,¿ como lo puedo hacer para que por esas patillas me salgan 5V ?



gracias a todos
 
#2
Hola champi, tendrías que verificar si estás configurando bien el TRISD para que funcionen como salida.

saludos.
 
#3
Hola, gracias por conttestar tan rapido, el puerto lo tengo inicializado de la siguiente manera:
COMIENZO

BSF STATUS,RP0
MOVLW B'11111111' ; Poner el Puerto C como entrada de datos.
MOVWF TRISC
CLRF TRISB ; Poner el Puerto B como salida de datos.
CLRF TRISD;
BCF STATUS,RP0
uso tambien el puerto C y B pero cn estos no tengo problemas, ¿esta asi bien configurado el puerto D no? o falla ahi?

un saludo
 
#5
el TRISE no lo tengo configurado, y el PSPMODE... esque soy un poco novato, los bit PSP son el RD0 y RD1 no?, por esos bit son por los que quiero conseguir los 5V
 
#7
okok gracias por la información, creo que el PSPMODE es igual a 0 no? de todos modos este es mi codigo:
list p=16f877a, f=inhx32
;************* Asignación de nombres de Registros de Funciones especiales a direcciones ************
#include <p16f877a.inc> ;
;**************************** Igualdades ***********************************************************************
;**************************** Registros ************************************************************************

PRUEBA EQU 0X20;

;**************************** Sección Código de Reset *******************************************************
ORG 0x00 ;Dirección del Vector Reset
GOTO COMIENZO ;Comienzo del Programa
;**************************** Sección de Configuración ******************************************************
ORG 0x05 ; Inicio de Programa
;(Una posición detrás del vector de Interrupción)
COMIENZO

BSF STATUS,RP0
MOVLW B'11111111' ; Poner el Puerto C como entrada de datos.
MOVWF TRISC
CLRF TRISB ; Poner el Puerto B como salida de datos.
CLRF TRISD;
BCF STATUS,RP0
;**************************** Principal **************************************************************************
SEG1

MOVLW b'00000000'
MOVWF PORTD
MOVF PORTC,0 ; Leer el Puerto C y llevarlo al Acumulador.
MOVWF PRUEBA ;

MOVF PRUEBA,0 ;
MOVWF PORTB ; Transferir el dato del Acumulador al Puerto B
GOTO SEG2

SEG2

MOVLW b'00000000'
MOVWF PORTD
MOVF PORTC,0 ; Leer el Puerto C y llevarlo al Acumulador.
MOVWF PRUEBA ;
MOVF PRUEBA,0 ;
MOVWF PORTB ; Transferir el dato del Acumulador al Puerto B
GOTO SEG1


END
 
#8
champi87, en el código dice

MOVLW b'00000000'
MOVWF PORTD

De esa forma nunca vas a tener 5v en los puertos D0 y D1

EDIT.

El valor en POR,BOR y RESET de PSPMODE es 0.
 
#14
si las salidas RD0 y RD1 las tengo multiplexadas a las 2 señaes d habilitación que tiene el 74LS244.

No tengo un esquematico, esta noche lo realizare, pero vamos es un montaje muy simple, te lo explico por si te puedes hacer una idea, son 2 switch conectados cada uno a un 244 diferente, las salidas de estos switch van al PORTC( estan multiplexadas ls salidas de los 2 switch al puerto C); depues tengo 16 led conectados a dos 244, conectados ambos en el PORTB; y tengo las señales de habilitacion de cada 244( en total 4" 2 para los switch y 2 para los led") conectadas al RDO, RD1, RD2, y RD3; cada bit del puerto D manda las 2 señales a la vez que necesita el 244 para habilitarlo
 
Arriba