Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

06/02/2014 #21
Moderador

Avatar de D@rkbytes

nelsonr dijo: Ver Mensaje
Hola D@rkbytes tengo que comentarte que me confundí y dije que el puerto en este caso B era usado por un LDC mas no es así, esta siendo usada por un teclado, como lo muestra la imagen.
Este puerto (B) está configurado como lo dice la librería de C CCS para manejar un teclado.
Como bien me indicas el puerto queda deshabilitado pero cuando trato de ponerlo en High el pin (B0) no lo mantiene. Me di cuenta que por ejemplo si yo pongo la intrusión Output_high(Pin_B0); y después le pongo un delay_ms(5000); se mantiene por ese tiempo y luego se deshabilita
Lo que yo quiero hacer con el pin (B0) que puse como ejemplo, es poderlo manejar en alto o bajo a mi parecer y por eso busque manuales que me ayuden con la direcciones TRISX que es donde pienso que estoy fallando. Y es por eso que acudo a ustedes para que me aclaren este punto o de no ser este el punto que afecta me ayuden a aclara el misterio.
Posiblemente tengas algún conflicto dentro del programa, ya que no deberías tener problemas para controlar RB0.
Otra causa que podría estar interfiriendo con el pin RB0 son las instrucciones de la librería para el teclado.

También puedes usar la pantalla y el teclado por el mismo puerto, por ejemplo en el puerto C y así ahorras pines y aparte ya tienes libre todo el puerto B, aunque es más recomendable usar la pantalla y el teclado por el puerto B, ya que éste tiene resistencias pull-up internas.

Para que veas que no existe problema para controlar el pin RB0, adjunto un ejemplo que modifiqué para usar una pantalla LCD 16x2 y teclado matricial 3x4 por puertos separados.

Notarás que cuando se actúa sobre el pulsador en RA0 se detiene el proceso durante 5 segundos debido al retardo de encendido del LED en RB0.

Suerte.
14/02/2014 #22


D@rkbytes Problemas con PIC16F877A ya lo solucione mi primer problema era una declaracion previa:
eeprom. Muchas GRacias

---------- Actualizado después de 47 minutos ----------

D@rkbytes y el otro problemita que tengo como lo solucionaria no? eso de la sentencia para activar mi alarma en pbp.
15/02/2014 #23
Moderador

Avatar de D@rkbytes

marvin villalobos dijo: Ver Mensaje
D@rkbytes ¿Y el otro problemita que tengo cómo lo solucionaría?
Eso de la sentencia para activar mi alarma en pbp.
Para no salirse del tema, realiza tu consulta dentro de algún tema similar sobre RTC DS1307.
Y por favor agrega una clara descripción de cual es el problema.
Si tu proyecto cuenta con simulación o algún esquema, es preferible que los incluyas.

Saludos.
21/05/2016 #24


Problemas con PIC16F877A
Tengo problemas con mi PIC16F877A, puesto que al quemar programas y armarlos físicamente me presenta dificultades, intente solucionarlo poniendo capacitores de 22, 15, 30, pf y nada, aumente y disminuí la resistencia en el Masterclear, tampoco funciono, puse capacifores de 0.1 nf entre el pin 11 y 12 y el 31 y 32, cambiando el cristal, mi código esta bien, e incluso con códigos tan sencillos como prender un led, no hace su función correcta, mi teoría es que los fuses que he puesto en Mikro C, estén incorrectos(solo esta activado la opción de brown-out reset y el oscilador es un HS), ayuda, urge. ...
21/05/2016 #25

Avatar de ruben90

Alguien dijo mikroC? Si subes tu código tal vez pueda ayudarte.
21/05/2016 #26


Mi codigo
Código PHP:
sbit LCD_RS at RD2_bit;
sbit LCD_EN at RD3_bit;
sbit LCD_D4 at RD4_bit;
sbit LCD_D5 at RD5_bit;
sbit LCD_D6 at RD6_bit;
sbit LCD_D7 at RD7_bit;

sbit LCD_RS_Direction at TRISD2_bit;
sbit LCD_EN_Direction at TRISD3_bit;
sbit LCD_D4_Direction at TRISD4_bit;
sbit LCD_D5_Direction at TRISD5_bit;
sbit LCD_D6_Direction at TRISD6_bit;
sbit LCD_D7_Direction at TRISD7_bit;

char  keypadPort at PORTB;
int i;
char password[4];
char get_password()
{
INICIO:
{
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(12"INSERTE CODIGO");
for(
i=0;i<3;i++)
{
while (
password[i] == 0)
{
password[i] = Keypad_Key_Click();
}

if(
password[i]==1)     password[i]  = '1';
if(
password[i]==2)     password[i]  = '2';
if(
password[i]==3)     password[i]  = '3';
if(
password[i]==5)     password[i]  = '4';
if(
password[i]==6)     password[i]  = '5';
if(
password[i]==7)     password[i]  = '6';
if(
password[i]==9)     password[i]  = '7';
if(
password[i]==10)    password[i]  = '8';
if(
password[i]==11)    password[i]  = '9';
Lcd_Chr(2i+1password[i]);
}
if(
strcmp(password,"123") == 0) {return 1;}
else
{
password[0]  = 0;
password[1]  = 0;
password[2]  = 0;
password[3]  = 0;
goto 
INCORRECTO;}
}
INCORRECTO:
{
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(16"CODIGO");
Lcd_Out(24"INCORRECTO");
Delay_ms(3000);
goto 
INICIO;

}
}

void main(){

PORTC=0X00;
PORTD=0X00;
PORTB=0X00;
TRISB=0XFF;
TRISD=0X00;

Lcd_Init();    keypad_Init();
Lcd_Cmd(_LCD_CURSOR_OFF)
;
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1,"SISTEMA");
Lcd_Out(2,"INICIALIZADO");
delay_ms(2000);
get_password();

while(
1){

Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1,"CODIGO");
Lcd_Out(2,"CORRECT0");
portc.b4 = ~ portc.b4;
delay_ms(3000);
goto 
SUSPENDIDO;
}
SUSPENDIDO:
{
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(15"SISTEMA");
Lcd_Out(24"SUSPENDIDO");
delay_ms(10000);
Lcd_Cmd(_LCD_CLEAR);
}
 } 
21/05/2016 #27

Avatar de ruben90

char keypadPort at PORTB; //Esto es una librería? Porque las variables no pueden tener espacios.
char get_password() //creo que el problema radica en tu sub rutina.

Tengo 2 preguntas:
El compilador te tira error o advertencia?
Corriste el código en algún simulador?
21/05/2016 #28


Si, es una libreria, y lo simule en Proteus 8, y funciona a la perfección, incluso llego a "funcionar" en fisico, pero el problema es que no se que fuses necesito tener para que este funcione, solo tengo activado el "Brown-out reset".
21/05/2016 #29

Avatar de ruben90

Prueba el siguiente código para encender y apagar todo el puerto A:
Código:
void main() {
TRISA = 0;
PORTA = 0;
ADCON1 = 7;
while(1) {
PORTA = 0x00;
delay_ms(1000);
PORTA = 0xFF;
delay_ms(1000);
}
}
Al crear el proyecto NO configures nada en los fuses.
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.