flip flop com 8051

Software e Hardware para linha x51

Moderadores: 51, guest2003, Renie, gpenga

flip flop com 8051

Mensagempor renan-papaco » 17 Ago 2013 23:06

perdoem-me por esta pergunta... mas eu queria saber como fazer para q um programa leia uma entrada no 8051, um pulso alto e ai liga uma saida... um segundo pulso desliga essa saída.
Sabe quem mais programa um 8051 com ROM externa? MINHA MÃE! HOOOOOOOOOOOOOOOOOO
Avatar do usuário
renan-papaco
Byte
 
Mensagens: 292
Registrado em: 17 Jun 2012 15:56

Re: flip flop com 8051

Mensagempor Red Neck Guy » 18 Ago 2013 00:38

Pode, mas há restrições. Tem que levar em conta a frequência do sinal que irá ser o clock do teu "flip-flop", glitches e outras coisas. Mas dá pra fazer. Se for pra varrer o sinal do clock num looping a frequencia do clock tem que ser bem menor do que o teu ciclo desse loop. Agora se estiver amarrado na interrupção externa, aí pode ser mais alto. Não lembro ao certo pois faz tempo que não uso esse cara, mas o sinal de int pode ter 1/12 do clock.
ASM51 descanse em paz!
Avatar do usuário
Red Neck Guy
Dword
 
Mensagens: 1968
Registrado em: 12 Out 2006 22:24

Re: flip flop com 8051

Mensagempor tcpipchip » 18 Ago 2013 09:44

ou 1/4 para os DALLAS
------------------------------------------
http://www.youtube.com/tcpipchip
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

Re: flip flop com 8051

Mensagempor andre_luis » 18 Ago 2013 11:46

Renan,


O que voce deseja implementar é praticamente uma função Toggle de subida de um sinal de entrada.
Isso seria facilitado se voce usasse o recurso de interrupção do microcontrolador, e se fosse por borda.

Tenta a implementação abaixo para ver se funciona ( pode ter erros de sintaxe, pois não compilei para testar ) :

Código: Selecionar todos
if ( ENTRADA == 1 )
   {
   if ( DESCEU == 1 )
      {
      if ( SAIDA == 0 ) {  SAIDA = 1 ;    DESCEU = 0 ; }
      if ( SAIDA == 1 ) {  SAIDA = 0 ;    DESCEU = 0 ; }
      }
   }
   else
   {
   DESCEU = 1 ;
   }



+++
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Re: flip flop com 8051

Mensagempor Red Neck Guy » 18 Ago 2013 15:42

ou assim:

Código: Selecionar todos

void loop_ff(void){
  unsigned char anterior=0xff; 

  for(;;){

     while(!CLK);
     PINO_SAIDA ^= 0x01;
      while(CLK);     
  }
}

ASM51 descanse em paz!
Avatar do usuário
Red Neck Guy
Dword
 
Mensagens: 1968
Registrado em: 12 Out 2006 22:24

Re: flip flop com 8051

Mensagempor ze2 » 19 Ago 2013 10:07

ou assim, com interrupção...

Código: Selecionar todos
#include <absacc.h>    /* Include Macro Definitions */
#include <reg51.h>

#define PINO_SAIDA P00
#pragma AREGS      // for other code it is save to use ARx symbols
static void int0 (void) interrupt 0 using 1  //INT0
{
PINO_SAIDA^=1;
}
//***************************************************************
void main( void )
{
EA=EX0=1;//hab. interrupt ext.
//-----------------eternamente é ter na mente éter na mente----------------------
for(;;)
{
}

}

(keil c)
ze2
Byte
 
Mensagens: 193
Registrado em: 09 Fev 2009 13:37

Re: flip flop com 8051

Mensagempor renan-papaco » 19 Ago 2013 14:42

vlw pessoal... mas a questão é que eu precisava de 8 "flip flops" em 8 entradas. colocando 8 chaves em um port e 8 leds, relés, triacs e etc no port de saída escolhido por mim.



Código: Selecionar todos
#include<at89x51.h>
#include<delay.h>
#include<lcd.h>
void lcdstart(){
     LCD_init();
     LCD_row1();
     LCD_puts("INTERRUPTOR DE 8 ");
     LCD_row2();
     LCD_puts("CANAIS.");
               }





               

   

     
     unsigned char A1=0;

void main(){
   
     lcdstart();
         while(1){
     
           A1 = P1;
       switch(A1){ 
              case 0x01:
             
              P0=1;
              delay_ms(100);
              P0=0;
              LCD_row1();
              LCD_puts("LAMP 01 ON         ");
              LCD_row2();           
              LCD_puts("                   ");
              break;       
              case 0x02:
             
              P0=2;
              delay_ms(100);
              P0=0;
             
              LCD_row1();
              LCD_puts("LAMP 02 ON         ");
              LCD_row2();
              LCD_puts("                   ");
              break;       
              case 0x04:
             
              P0=4;
              delay_ms(100);
              P0=0;
              LCD_row1();
              LCD_puts("LAMP 03 ON         ");
              LCD_row2();
              LCD_puts("                   ");
              break;       
              case 0x08:   
              P0=8;
              delay_ms(100);
              P0=0;
              LCD_row1();
              LCD_puts("LAMP 04 ON         ");                             
              LCD_row2();
              LCD_puts("                   ");
              break;
              defaut:
              P0=0;
                 }
                 }
             }


o programa funciona, e só controla 4 pinos de saída... para controlar os 8 terei que editar e ampliar ele pra isso...atualmente eu apênas mando um pulso pra cada led. eu poderia instalar 4 CI's CD4013 usando 8 flip flops por fora do MCU, podendo controla-los individualmente.
Sabe quem mais programa um 8051 com ROM externa? MINHA MÃE! HOOOOOOOOOOOOOOOOOO
Avatar do usuário
renan-papaco
Byte
 
Mensagens: 292
Registrado em: 17 Jun 2012 15:56

Re: flip flop com 8051

Mensagempor ze2 » 19 Ago 2013 17:23

confusão...já que é assim...
não é flipflop. é tipo um monoestável com 555. supondo que 8 teclas em P1 estejam pro gnd...
Código: Selecionar todos
for(;;)
{
a1=~P1
if (a1)   
   {
   P0^=a1;
   delay(xxx);
   }
}

Mas meio que nada a ver fazer algo prático assim. Foi só pra voce ver uma otimização e [tentar] entender e me explicar... ou não. Te vira pra por a informação no display
ze2
Byte
 
Mensagens: 193
Registrado em: 09 Fev 2009 13:37

Re: flip flop com 8051

Mensagempor renan-papaco » 31 Ago 2013 22:18

ze escreveu:confusão...já que é assim...
não é flipflop. é tipo um monoestável com 555. supondo que 8 teclas em P1 estejam pro gnd...
Código: Selecionar todos
for(;;)
{
a1=~P1
if (a1)   
   {
   P0^=a1;
   delay(xxx);
   }
}

Mas meio que nada a ver fazer algo prático assim. Foi só pra voce ver uma otimização e [tentar] entender e me explicar... ou não. Te vira pra por a informação no display




e mais ou menos isso q quero fazer.... 8 monoestáveis independentes com o 8051, e colocar no display a informação de qual foi o ultimo led acionado
eu declarei no programa 4 variaveis(pra controlar 4 monoestaveis) mas o q acontece? so posso acionar um por vez. eu pensei em colocar uns flip flops no port de saida definido no programa mas acho isso meio gambiarra . quero controlar td so pelo 8051 mesmo.
Sabe quem mais programa um 8051 com ROM externa? MINHA MÃE! HOOOOOOOOOOOOOOOOOO
Avatar do usuário
renan-papaco
Byte
 
Mensagens: 292
Registrado em: 17 Jun 2012 15:56

Re: flip flop com 8051

Mensagempor andre_luis » 01 Set 2013 08:21

A abordagem por Timer fechado não funciona, pois o programa ficaria preso num loop fechado para cada variável.
Tem de implementar o conceito de time-slot que te permite administrar separadamente a temporização de cada saída....dá uma procurada na web.


+++
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Re: flip flop com 8051

Mensagempor renan-papaco » 13 Set 2013 22:21

andre_teprom escreveu:A abordagem por Timer fechado não funciona, pois o programa ficaria preso num loop fechado para cada variável.
Tem de implementar o conceito de time-slot que te permite administrar separadamente a temporização de cada saída....dá uma procurada na web.


+++

e como é q eu faço isso? procurei na net e não achei nada sobre time slot pra 8052
Sabe quem mais programa um 8051 com ROM externa? MINHA MÃE! HOOOOOOOOOOOOOOOOOO
Avatar do usuário
renan-papaco
Byte
 
Mensagens: 292
Registrado em: 17 Jun 2012 15:56

Re: flip flop com 8051

Mensagempor Renie » 14 Set 2013 03:07

Olá Renan,

Eu nunca usei 8051 nem C até hoje mas, se seu problema se restringe só ao que foi exposto,vou tentar ajudar escrevendo em pseudo-código!

Inicialização
:Aqui você configura seu chip!

Corpo principal
:Um loop
Identificar tecla apertada (não esqueça o debounce!)
se tecla 1, rotina togle com parêmetro "1"
se tecla 2, rotina togle com parêmetro "2"
se tecla 3, rotina togle com parêmetro "3"
...
se tecla 2000, rotina togle com parâmetro "2000"
:volta loop


:Rotina Togle
-togle (parâmetro:tipo de variável, depende da quantidade que for utilizar)
Porta -parâmetro- = Porta -parâmetro- XOR $01 ( Exclusive OR)
- fim rotina togle


:
\
Renie
Word
 
Mensagens: 732
Registrado em: 11 Out 2006 22:35
Localização: RJ - Niterói - Brasil

Re: flip flop com 8051

Mensagempor Renie » 14 Set 2013 03:17

Olá Renan,

Limpando o pseudo-código!

Inicialização
:Aqui você configura seu chip!

Corpo principal
:Um loop
Identificar tecla apertada (não esqueça o debounce!)
rotina togle ( nr da tecla apertada )
:volta loop


:Rotina Togle
-togle (parâmetro:tipo de variável, depende da quantidade que for utilizar)
Porta -parâmetro- = Porta -parâmetro- XOR $01 ( Exclusive OR)
- fim rotina togle
Renie
Word
 
Mensagens: 732
Registrado em: 11 Out 2006 22:35
Localização: RJ - Niterói - Brasil

Re: flip flop com 8051

Mensagempor renan-papaco » 16 Set 2013 15:42

eu ainda sou um pouco iniciante em programação de 8051... mas vamos a alguns detalhes:

1- não sei se vc sabe mas não precisa por nenhum código pra inicializar o 8051... ele é inicializado de acordo com a definição vc quer fazer pra ele na hora da programação...bastando usar os SFR's caso vá programa-lo em ASM. em C vc define isso com o uso de headers.

2-tenho o código aqui postado... e consigo comandar cada pino separadamente(e não simultâneamente) e escrever a informação do respectivo pino no LCD... porém cada pino só libera um pulso. oq quero fazer é manter um pino ou mais pinos ligados, como se fosse interruptores e lâmpadas em paralelo.

3-talvez eu possa usar flip-flops nas saídas... mas ficará algo iniciante demais... e não vou aprender a controlar o estado de cada saida só com um chip... por isso só peço q alguem me explique bem o que é time-slot e como implementa-lo aki no meu circuito.
Sabe quem mais programa um 8051 com ROM externa? MINHA MÃE! HOOOOOOOOOOOOOOOOOO
Avatar do usuário
renan-papaco
Byte
 
Mensagens: 292
Registrado em: 17 Jun 2012 15:56

Re: flip flop com 8051

Mensagempor Djalma Toledo Rodrigues » 16 Set 2013 16:49

Você deve Ler a Porta
a Variável em uma posição da Ram endereçável por bit
Modifica os Bits necessários e
Escreve esse Byte ( a Variável) na respectiva Porta

O objetivo ai é criar um espelho da Porta.
Lê / modifica / escreve.

DJ
Avatar do usuário
Djalma Toledo Rodrigues
Dword
 
Mensagens: 2334
Registrado em: 03 Ago 2008 13:22

Próximo

Voltar para 8051

Quem está online

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

x