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

Temas similares

15/07/2011 #1


Duda como hacer una instrucción en PIC
Hola estoy desarrollando un programa en C para un 16f628a y tengo una duda.

Estoy utilizando una instrucción.
if (PORTA & 0x01) PORTB |= 0x02;
-->> si puerto A es 0000.0001 entonces puerto B es 0000.0010

Entonces tengo un pulsador en puerto A y quiero que mientras yo pulse se mantenga la salida del puerto B y cuando lo suelte se quite. Sé que parece una tontería pero no lo consigo.

Entendido? necesito que se mantenga solo esa instrucción mientras yo pulse el pulsador y que cuando lo suelte el puerto B se apague.


Gracias.
15/07/2011 #2

Avatar de Basalto

Tienes que ponerlo en un bucle infinito:
while(1){
if (PORTA & 0x01) PORTB |= 0x02;
}

Tienes que poner en el registro ADCON1 como pines digitales, y el TRISA como entrada y TRISB como salida.
Un Saludo
15/07/2011 #3


Hola! nunca he programado nada, pero estoy interesado en aprender a programar microcontroladores. Deseo saber si puedo lograrlo solo con ayuda de ustedes. de ser asi, deseo que alguien con experiencia me de una guia de pasos ordenados secuencialmente, para yo seguirla. Empezando desde lo mas elemental. Mi mayor confusion, es con las instrucciones, no comprendo como escribir estas. Muchas gracias!
15/07/2011 #4

Avatar de wlopez

Mira turbojet..una solucion sencilla seria que negaras la accion...es decir en tu codigo escribes:
if (PORTA & 0x01) PORTB |= 0x02;
-->> si puerto A es 0000.0001 entonces puerto B es 0000.0010

intenta esto
-->> si puerto A es diferente de 0000.0000 entonces puerto B es 0000.0010
if (PORTA # 0x01) PORTB |= 0x02;

o si no la otra opcion es que le pongas un
Else o elseif
es decir si no cumple tu condicion que pones entonces que se cumpla la
if (PORTA & 0x01) PORTB |= 0x02;
else PORTB |= 0x00;

espero te sirva
15/07/2011 #5
Moderador

Avatar de Chico3001

feluribe dijo: Ver Mensaje
Hola! nunca he programado nada, pero estoy interesado en aprender a programar microcontroladores. Deseo saber si puedo lograrlo solo con ayuda de ustedes. de ser asi, deseo que alguien con experiencia me de una guia de pasos ordenados secuencialmente, para yo seguirla. Empezando desde lo mas elemental. Mi mayor confusion, es con las instrucciones, no comprendo como escribir estas. Muchas gracias!
Hay varios tutoriales en este foro... revisa los temas marcados como "Destacados"

Saludos...
17/07/2011 #6


He intentado hacer lo del bucle infinito pero no lo he conseguido, lo que necesito esque la salida del puerto B se me active cuando tenga la entrada del puerto A en nivel alto

Código:
#include <16F628A.h>
#FUSES NOWDT // No Watch Dog Timer
#FUSES XT // Crystal osc <= 4mhz
//#FUSES NOPUT // No Power Up Timer
//#FUSES NOPROTECT // Code not protected from reading
//#FUSES NODEBUG // No Debug mode for ICD
//#FUSES NOBROWNOUT // No brownout reset
//#FUSES NOLVP // No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
//#FUSES NOCPD // No EE protection
//#FUSES WRT_50% // Lower half of Program Memory is Write Protected
#use delay(clock=12000000) // Reloj a 4 MHz

#BYTE TRISA = 0x85 // Variable TRISB en 86h
#BYTE TRISB = 0x86 // Variable TRISA en 85h
#BYTE PORTA = 0x05 // Variable PORTB en 06h
#BYTE PORTB = 0x06 // Variable PORTA en 05h
#BYTE OPTION_REG = 0x81 // Variable OPTION_REG en 81h
void main()

{    bit_clear(OPTION_REG,7);
    TRISB = 0x00; // Puerto B: B0...B7 Salidas
    TRISA = 0xFF; // Puerto A: A0...A7 Entradas
    output_B(0x00);
        while(true)
        {
        if (PORTA & 0x01) PORTB |= 0x02;    
        }
}
18/07/2011 #7


Alguien puede echarme una mano?

Gracias!
18/07/2011 #8

Avatar de george.manson.69

if(PORTA & 0x01) PORTB|=0x02;
else PORTB&=0xFD;
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.