entrada e saida

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

entrada e saida

Mensagempor rebelk » 30 Dez 2006 22:00

tenho muitas duvidas em relação a entrada e saida de um pino ou uma porta . vamos supor que eu quero ultilizar um pino em um determinado momento como saida de dados e depois como entrada de dados , EX: ( na comunicação a tres fios com uma memoria AT59C22),
mas estou com duvidas de como proceder neste momento.

Do mesmo modo é com uma porta , como devo progama-la para receber e enviar dados .

alguem pode me responder ?

estou progamando em C
rebelk
Byte
 
Mensagens: 301
Registrado em: 15 Nov 2006 20:16

Mensagempor Red Neck Guy » 30 Dez 2006 22:13

tem que manipular o tris, não tem jeito não.
Ou tu faz a declaração do registrador na mão, ou usa as funções do CCS - :oops:

Seria algo assim

DATA_PIN_DIR = SAIDA;
//CODIGO QUE MANIPULA O PINO COMO SAÍDA
DATA_PIN_DIR = ENTRADA;
// CÓDIGO QUE MANIPULA O PINO COMO ENTRADA


ou assim
set_tris_x(0bXXXXXX)
//código que manipula o pino como entrada/saida
set_tris_x(0bxxxxxxx)
// código que manipula o pino com saida/entrada
ASM51 descanse em paz!
Avatar do usuário
Red Neck Guy
Dword
 
Mensagens: 1968
Registrado em: 12 Out 2006 22:24

Mensagempor rebelk » 30 Dez 2006 23:20

( Seria algo assim

DATA_PIN_DIR = SAIDA;
//CODIGO QUE MANIPULA O PINO COMO SAÍDA
DATA_PIN_DIR = ENTRADA;
// CÓDIGO QUE MANIPULA O PINO COMO ENTRADA
)

Aquino não entendi esta parte

tu pode me mostrar um exemplo mais claro?
desde já abrigado pela ajuda!!!!!
rebelk
Byte
 
Mensagens: 301
Registrado em: 15 Nov 2006 20:16

Mensagempor __JEREK__ » 30 Dez 2006 23:45

Oi rebelk, acho que os pinos, do pic alguns como os do Port B são todos Entrada/Saída e alguns como o Pino A4 é apenas entrada (dependendo do PIC), no datasheet do 16F628 mostra essa figura. As setas mostram se ele pode ser configurado como estrada/saída (ou seja high/low). Os que só tem seta em uma direção só podem ser configurados como entrada ou nãp podem ser usados.

Imagem


o que vc pode fazer é colocar em estado low ou high pelo comando do CCS. Exemplo:

output_low(pin_B1); // Configura o pino para low

output_high(pin_B2); // configura o pino para high
__JEREK__
Byte
 
Mensagens: 216
Registrado em: 11 Out 2006 17:53
Localização: BA

Mensagempor rebelk » 30 Dez 2006 23:50

jerek , meu filho voce esta ainda ai ?
rebelk
Byte
 
Mensagens: 301
Registrado em: 15 Nov 2006 20:16

Mensagempor __JEREK__ » 31 Dez 2006 00:19

oi, tô aqui!!!
__JEREK__
Byte
 
Mensagens: 216
Registrado em: 11 Out 2006 17:53
Localização: BA

Mensagempor rebelk » 31 Dez 2006 00:39

me manda ai um exemplo que vc ultiliza um pino como entrada e saida,
e me explica como vc faz esta celeção!
rebelk
Byte
 
Mensagens: 301
Registrado em: 15 Nov 2006 20:16

Mensagempor __JEREK__ » 31 Dez 2006 08:23

Pô rebelk, não sei se entendi sua pergunta, vou postar um código aqui e vc me fala se é isso. Se não não for explica mais o que vc quer saber, valeu??


Código: Selecionar todos
#include <16F877.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=5000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)

int x=0;                    // variavel
int y=0;                    // variavel


void main()
{

   set_tris_B(0x03);        // configura a porta B da seguinte forma:
                            // Pino B0 = Entrada
                            // Pino B1 = Entrada
                            // Pino B2 = saida
                            // Pino B3 = saida
                            // Pino B4 = saida
                            // Pino B5 = saida
                            // Pino B6 = saida
                            // Pino B7 = saida

 // Se for usar uma porta individual usar assim:
 //  output_flot(pin_b1);     // configura o pino B1 como entrada
 //  output_flot(pin_b2);     // configura o pino B2 como entrada

      while(1)
      {
         x = input(pin_b0); // lê o estado do pino b0 e salva em x
                            // como 1 ou 0 
         
         y = input(pin_b1); // lê o estado do pino b1 e salva em y
                            // como 1 ou 0
      }
}
__JEREK__
Byte
 
Mensagens: 216
Registrado em: 11 Out 2006 17:53
Localização: BA

Mensagempor rebelk » 31 Dez 2006 10:04

luciano é + ou - isso , minha duvida é se eu fou ultilizar apenas um pino RB0 para entrada e saida de dados como proceder na hora de receber os dados e na hora de enviar , é essa minha duvida.
deu para entender?
rebelk
Byte
 
Mensagens: 301
Registrado em: 15 Nov 2006 20:16

Mensagempor microeletronica » 03 Jan 2007 08:38

Ue, nao esta clara sua duvida.
Como fazer pra porta ser entrada ou saida vc ja sabe...
Agora, o momento em que ela deve ser entrada ou saida, depende do seu design, da sua intencao.

De mais informacoes para que possamos ajuda-lo.
microeletronica
Byte
 
Mensagens: 158
Registrado em: 05 Dez 2006 18:22


Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x