Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
bene_tec

BASCOM 8051 - alguém tem apostila.

Recommended Posts

Olá, pessoal !

Bom, eu já estou acostumado com a programação assembler do 8051 num programa IDE da acebus ( http://www.acebus.com ).

Acontece que a vesão demo só aceita 14KB no editor assembler, o que não dá para fazer nem o programa completo pra um AT89C2051 de 2KB. Não dá porque gosto de editar colocando muitos comentários em cada rotina.

Então baixei este BASCOM 8051 mas não o conheço bem e não tem um arquivo Help tão detalhado como ao programa que citei anteriormente.

Se alguém tiver alguma apostila, e se puder, por favor passe para mim.

Aguadeço desde já...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola !!! Bene_tec , o BASCOM-8051 tem uma versão demo de 4K , ou seja ,

você pode escrever programas para micros com até 4K de RAM ou o AT89C4051 . Mas tem uma coisa a respeito ,você tem que escrever o programa em Qbasic.

Se você já está familiarizado com o asm do 8051 e não tem tempo para aprender uma nova forma de programar , pode usar um compilador para o

8051 que aceita asm ou c sem o limite de 4K o ( Reads51 ).

Aqui ( http://www.rigelcorp.com/8051soft.htm ).

Esquema do programador HMP ( http://at89c2051-4051.blogspot.com/ ).

Abaixo um link, com alguns exemplos que escrevi em Qbasic para o BASCOM-8051.

http://www.4shared.com/file/79579157/b393c747/Bascom_exemplos.html

Forte abraço de Angelo Cialla Filho ... ( py1acb )

Editado por py1acb

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  • py1acb, obrigado pela dica. Baixei o programa e agora vou ver o que posso fazer com ele. Preciso criar pequenas rotinas somente para testar antes de migrar definitivamente.

    você não acredita o que estou tendo que fazer para meus programas caberem no editor que estou usando. Aquele do primeiro post.

    Estou pegando as rotinas maiores já testadas e colocando no editor em códigos hexadecimais tipo assim:

    org xxxh

    rotina: ;rotina exemplo a ser chamada por: lcall rotina

    db xxh,yyh,............zzh,22h ; 22h é código para RET.

    é mole?

    OBS: não estou conseguindo acessar http://py1acb.hpg.com.br/at89c2051.html

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    bene_tec! Experimenta esse daqui:

    http://www.pjrc.com/tech/8051/

    É o AS31. Não sei te dizer se ele é bom porque faz muito tempo que eu não programo em ASM. Mas, é aberto e free.

    Dá uma olhada nisto daqui tb:

    http://www.google.com.br/search?hl=pt-BR&q=8051+assembler+program+download&btnG=Pesquisa+Google&meta=

    []'s

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • beleza, Maurício.

    Então, o que uso é este:

    http://www.acebus.com/win8051.htm

    Com ele, entro com as linhas em assembler sem nenhuma "frescura".

    Se tiver erros, na hora de montar, ele informa a linha e o erro.

    O problema com os demais é que não consigo copiar o que já editei neste programa e colar no outro e assim 'assemblar' (criar códigos e HEXadecimal para programação).

    Acho que falta alguma coisa antes, como uma declaração que o programa é assembly 51 e não C ou BASIC.

    Como eu disse antes, meu forte é o assembler 'puro', e até já tenho decorado todas as instruções do 8051 e até mesmo todos os registros e seu endereços.

    Pra que aprender uma linguagem de alto nível quando posso manipular diretamente o microcontrolador da forma como eu quero?

    Antigamente, antes das famosas IDEs, eu criava os programas em HEXADECIMAL e dava certo...

    Uma vez até fiz o programa inteiro em binário, pois não tinha um programador e então programei através de chaves byte a byte, daí minha facilidade com os códigos.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Baixe daqui o BASCOM-8051 Manual

    http://www.mcselec.com/index.php?option=com_docman&task=doc_download&gid=164&Itemid=54

    Nota:

    No bascom para "inserir" assembler ten de usar as directivas:

    $ASM

    .

    .

    .

    .

    $END ASM

    ---------------------------------

    EX

    $ASM

    Ldi R27 , $00 'Load R27 with MSB of address

    Ldi R26 , $60 'Load R26 with LSB of address

    Ld R1, X 'load memory location $60 into R1

    SWAP R1 'swap nibbles

    $END ASM

    -------------------------------------

    Outra possibilidade será usar um assembler sem essas limitaç~es que disse de tamanhos.

    Experimente este.

    http://www.atmel.com/dyn/resources/prod_documents/ASMB51.EXE

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • Valeu, zurca...

    mas será que eu poderia editar o programa inteiro em assembler entre essas duas diretivas ?

    Exemplo:

    $ASM

    org 0

    mov a, #0ffh ; esta é a sintaxe do 8051-IDE da acebus

    loop: mov p1,a

    lcall delay

    cpl a

    sjmp loop

    $END ASM

    Qual seria a forma correta de editar esta simples rotina no bascom8051 e como criar o arquivo HEX ?

    Obrigado!

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Nunca me tinha lembrado disso de incluir TODO o programa.

    Mas com o bascom_avr (Costumo trabalhar mais com AVRs)que uso permite com pequenas alterações.

    por esemplo tem de remover a definição micro do seu programa

    A definição tem de ser feita com

    $regfile = "8051.dat" antes de $ASM

    Outra coisa que tem de retirar do seu programa serão as definições do Registos isto se tiver no seu programa.

    Mas experimente que vai ver não é difícil pois o software dá a indicação do erro e da respectiva linha.

    Quanto a editar o seu programa pode fazer com qualquer editor e renomear de

    xxxx.asm para xxxx.bas.

    Depois no bascom basta abrir o p ficheiro xxxx.bas e compilar .Se tiver erros vai indicar a linha e o erro.

    Acredite que não é difícil , claro que tem de saber um pouco de programação em basic e tipo de estruturas.

    O resto é sintaxe mas como indica os erros é fácil .

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • Não sei se o problema é comigo, mas não consigo fazer downloads do rapidshare.

    Alguém pode tentar e me informar se consegue baixar, e se conseguir, daria pra colocar no http://www.4shared.com Valeu pessoal!

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Está a funcionar pois verifiquei todos os que coloquei aqui.

    Note que não pode usar software auxiliar de download pois o rapidshare impede isso.

    Se esta a usar qualquer software auziliar desactive temporariamente e faça apenas artravés do IE ou Firefox.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Pra que aprender uma linguagem de alto nível quando posso manipular diretamente o microcontrolador da forma como eu quero?

    Como eu digo no meu livro (de C), é muito mais simples procurar bugs em algumas linhas de código de alto nível do que milhares de linhas de assembly, mas.... :D

    Quando você precisar trabalhar com cálculos em números maiores do que 8 bits, e números com ponto flutuante, aí você vai ver pra que que serve uma linguagem de alto nível, ehehehehehe

    []'s

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • De forma alguma quis dizer que o C ou o BASIC não são necessários, mas todas as liguagens de alto nível foram criadas em assembly. Então fica a pergunta:

    Qual é a mais importante de se conhecer bem?

    No meu caso, para cálculos (muito raros) uso alguns algorítimos que aprendi desde a época em que se usava o co-processador matemático 8087 dos antigos XTs.

    O que não quero é me acostumar com um compilador C ou Basic. E o dia em que eu precisar do assenbly puro?

    É como só fazer contas com calculadora e no dia que faltar, não saberá nem fazer uma simples soma no lápis...hehehe. Não leve a mal, é só a minha opinião.

    É mais ou menos assim que penso: Aprenda todos os idiomas que quiser, mas primeiro aprenda bem o Português... não concorda?

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Não!! ehehehehehe

    Pra você ver.... Escreví um livro de C pro 8051 e hoje programo pro AVR.

    Não sei uma instrução em ASM pro AVR!!! :lol: (mentira, vai! Sei duas: clear interrupts e enable interrupts!!!! :D) Só!! Mais nada! :D:rolleyes:

    Nunca mais usei ASM! Não precisa, ehehehehehehe

    Não adianta! Eu não vou tentar te convencer, mas, não tem papo: linguagem de alto nível é outra história. Além da portabilidade ser muito, mas muito maior do que em ASM!

    Se você programa em ASM pro 51, você só vai portar esse programa pra um outro 51! Migrar seu código ASM prum outro MCU?? Vixe!!! Possível, é! Mas, dá um trabáio!!! :lol:

    Migrei todas as minhas rotinas C do 8051 pro AVR. Tudo funcionou quase de cara! Agora, se eu tivesse escrito em ASM de 8051.... :lol:

    Depois que você cria suas bibliotecas, você escreve APLICAÇÕES quase que imediatamente!!!

    Tenho que reconhecer que realmente C só não resolve UMA VEZ POR ANO!!! ...só que é a cada 10 anos!!! :lol:

    Abraços bene_tec, e boas programações. É isso que importa.:-BEER

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • Não!! ehehehehehe

    Se você programa em ASM pro 51, você só vai portar esse programa pra um outro 51! Migrar seu código ASM prum outro MCU?? Vixe!!! Possível, é! Mas, dá um trabáio!!! :lol:

    Migrei todas as minhas rotinas C do 8051 pro AVR. Tudo funcionou quase de cara! Agora, se eu tivesse escrito em ASM de 8051.... :lol:

    Agora você me tentou a aprender! hehehe

    É que faz um tempão que estou querendo usar AVR, mais precisamente o ATTiny11, 13 ou 15 por causa do número reduzido de pinos. Cheguei a comprar PICs (12F629 e 12F675) para decodificar HT6P20 pra CR de 4 canais mas não nenho a mínima vontade de usar PIC e acabei usando mesmo o bom e velho AT89C2051. funciona muito bem, mas sobram 8 pinos e falta espaço.

    realmente olhando o mapa de registros destes pequenos mas poderosos uCons, é complicado trabalhar em assembly.

    Você mencionou um livro num post anterior... Acha que é possível aprender C somente com livros e apostilas. É que já estou com 42 e não tenho mais tempo de ir em escolas. Queria frisar que aprendi 8051 somente com databook da INTEL e portanto me acho apto a encarar esta 'missão'.

    Me indique um bom livro de C para AVR. Valeu!

    Pra terminar este post, um pequeno desafio (sei que pra você o pro zurca deve ser moleza)

    Como ficaria uma rotina de um oscilador de 1Hz no AVR e no PIC12F629 ( 500mS on / 500mS off) com saída em qualquer um dos pinos e se possível fazer a mesma rotina em C ou BASIC e em assembly pra gente comparar?

    Os osciladores internos destes uC são precisos ?

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Aqui tem como é simples no bascom (com atmega8)

    ' Exemplo simples pisca led porda D pino 4 com 500 mS

    '

    '

    $regfile = "m8def.dat"

    $swstack = 32

    '$source = On

    $crystal = 12000000

    Declare Sub Initports()

    ' Start pgm ---------------------------------------------------

    Call Initports()

    ' Main loop ---------------------------------------------------

    Do

    Set Portd.4

    Waitms 500

    Reset Portd.4

    Waitms 500

    Loop

    '----------------------Subs --------------------------

    Sub Initports()

    Ddrd = &B11110000

    End Sub

    -------------------------------------

    :1000000012C0189518951895189518951895189563

    :100010001895189518951895189518951895189578

    :100020001895189518958FE58DBFC0E4E0E24E2E27

    :1000300084E08EBFD4E0F4E05F2EEEEFF3E0A0E6C4

    :10004000B0E088278D933197E9F7662409D0949A18

    :1000500084EF91E011D0949884EF91E00DD0F7CF28

    :1000600080EF81BB08953197F1F70895689462F8A5

    :100070000895E89462F80895EF93FF93EE27E82B34

    :10008000E92B31F0E8EBFBE03197F1F70197D1F77D

    :06009000FF91EF910895BD

    :00000001FF

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Se usar o Fastavr seria assim (com atmega8)

    $Device= m8

    $Stack = 32

    $Clock = 12

    Declare Sub Initports()

    ' Start pgm ---------------------------------------------------

    Initports()

    ' Main loop ---------------------------------------------------

    Do

    Set PORTD.4

    WaitMs 500

    Reset PORTD.4

    WaitMs 500

    Loop

    '----------------------Subs --------------------------

    Sub Initports()

    DDRD = &B11110000

    End Sub

    --------------------------

    Este tem a vantagem de gerar tambem o asm alem do hex.

    ;FastAVR Basic Compiler, ver.4.3.0, by MicroDesign

    ;Created 20:35:35, 05-12-2007

    ;

    .include "E:\FastAVR430\inc\m8def.inc"

    ;

    .DSEG

    .CSEG

    .ORG 0x0000

    _Reset:

    ldi yl,byte1(RAMEND)

    out SPL,yl

    ldi yh,byte2(RAMEND)

    out SPL+1,yh

    sbiw yl,32

    ;****** USERS BASIC CODE **********************

    ;-Line--0013----Initports()--

    call initports

    ;-Line--0018----Do--

    L0000:

    ;-Line--0020----Set PORTD.4--

    sbi PORTD,4

    ;-Line--0021----WaitMs 500--

    ldi zl,byte1(500)

    ldi zh,byte2(500)

    call _Wms

    ;-Line--0022----Reset PORTD.4--

    cbi PORTD,4

    ;-Line--0023----WaitMs 500--

    ldi zl,byte1(500)

    ldi zh,byte2(500)

    call _Wms

    ;-Line--0025----Loop--

    rjmp L0000

    L0001:

    ;-Line--0029----Sub Initports()--

    initports:

    ;-Line--0031----DDRD = &B11110000--

    ldi zl,byte1(240)

    out DDRD,zl

    ;-Line--0033----End Sub--

    L0002:

    ret

    ;****** END OF USER BASIC CODE ****************

    ;////// _Waitms ///////////////////////////

    _Wms: ldi r20,0x14

    _Wms1: ldi r21,0xC7

    _Wms2: dec r21

    brne _Wms2

    dec r20

    brne _Wms1

    dec zl

    brne _Wms

    ret

    ;System Global Variables: 0 bytes

    ;User Global Variables: 0 bytes

    -----------------------------

    :020000020000FC

    :10000000CFE5CDBFD4E0DEBFA0970E941200949A46

    :10001000E4EFF1E00E9415009498E4EFF1E00E9413

    :100020001500F5CFE0EFE1BB089544E157EC5A9598

    :0C003000F1F74A95D9F7EA95C1F7089559

    :00000001FF

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • Muito bom, zurca!

    Estou vendo que no Fast AVR o número de bytes usados ficou menor que no BASCOM.

    E já tenho o FastAVR.

    E é justamente com isso que as vezes me preocupo, pois o attiny13, por exemplo, tem apenas 1KByte de flash. Então, se tenho que criar várias tabelas ou vários modelos de telas para LCDs seriais gráficos, tenho que economizar ao máximo a memória de programa.

    consegui abrir os E-Books da forma como me indicou, desabilitando o DAP.

    Agora vou estudar um pouco e futuramente posto o resultado do que aprendi.

    Mais uma dúvida: posso usar qualquer posição livre da RAM para contagem assim como no 8051 ?

    Ex: djnz 10h ; Decrement and Jump if Not Zero ( 10h pode ser de 00 a 7Fh)

    ou inc 10h ; (10h) = (10h)+1 - incrementa conteúdo desse endereço da RAM

    Por enquanto, muito obrigado!

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Ainda bem que conseguiu.

    Eu sei que sim mas o facto é que alguns programas deste tipo podem ser otimizados.

    Note que nos exemplos acima "atirei" com as instruções . Não fiz qualquer setup do compilador. Isto leva a que um possa incfluir codigo desnecessário.

    Mas tudo isso se pode evitar com esses software, basta excluir o desnecessário , utilizar as opções de otimização etc etc.

    Mas isto como bem sabe só vai conseguir aprendendo e testando .

    Note que tambem uso assembler mas apenas no caso de tempos serem mesmo muito criticos .

    Se desejar usar C tente o WinAvr.

    Se desejar pascal tem por exemplo o Avrpascal da E-LAB.

    Se desejar pode mesmo nem aprender nada , use o Algorithm Builder

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
    Agora você me tentou a aprender! hehehe

    É que faz um tempão que estou querendo usar AVR, mais precisamente o ATTiny11, 13 ou 15 por causa do número reduzido de pinos. Cheguei a comprar PICs (12F629 e 12F675) para decodificar HT6P20 pra CR de 4 canais mas não nenho a mínima vontade de usar PIC e acabei usando mesmo o bom e velho AT89C2051. funciona muito bem, mas sobram 8 pinos e falta espaço.

    realmente olhando o mapa de registros destes pequenos mas poderosos uCons, é complicado trabalhar em assembly.

    Você mencionou um livro num post anterior... Acha que é possível aprender C somente com livros e apostilas. É que já estou com 42 e não tenho mais tempo de ir em escolas. Queria frisar que aprendi 8051 somente com databook da INTEL e portanto me acho apto a encarar esta 'missão'.

    Me indique um bom livro de C para AVR. Valeu!

    Pra terminar este post, um pequeno desafio (sei que pra você o pro zurca deve ser moleza)

    Como ficaria uma rotina de um oscilador de 1Hz no AVR e no PIC12F629 ( 500mS on / 500mS off) com saída em qualquer um dos pinos e se possível fazer a mesma rotina em C ou BASIC e em assembly pra gente comparar?

    Os osciladores internos destes uC são precisos ?

    Boa safra essa nossa, ehehehehehehe :D

    Claro que dá pra aprender por conta própria!! Basta que o autor tenha didática e o aluno tenha boa-vontade, e faça os exemplos, né?

    Eu tb aprendí C através de livros e apostilas, e depois, pra programar pro 51 tive muita ajuda de quem não ganhava nada pra ajudar!

    Nesse fórum, que eu frequento tb, é só de eletrônica e MCUs. Dá uma passada lá pra conhecer:

    http://www.asm51.eng.br/phpbb/index.php

    O Fábio Pereira, um dos mais conhecidos autores sobre MCUs, tb está lá, além de outros autores, tb.

    Em português, não conheço nenhum livro de C pra AVR.

    Sem querer puxar, mas já puxando, leia o meu livro pro 8051 e depois a gente dá as dicas pro AVR. C é C!!! Só muda a máquina!! :cool:

    http://www.editoraerica.com.br/buscafinal.asp?cod=0778

    Se for comprar, não compra lá não! Procura na net que você acha bem mais barato!

    /******************************

    AVR ATTINY2313

    TIMER1 - 16 BITS

    OSCILADOR INTERNO - 1MHz

    CICLO DE MÁQUINA - 1uS

    CONTA 1000 CONTAGENS

    ******************************/

    #define PINO_SAIDA PORTB.0

    int conta_tempo = 0;

    interrupt [TIM1_OVF] void timer1_ovf_isr(void)

    {

    // INTERRUPÇÃO A CADA 1mS

    // RECARGA DOS VALORES DO TIMER

    TCNT1H=0xFC;

    TCNT1L=0x18;

    if (++conta_tempo == 500 ) //quando atingir 500 (500ms) executa

    {

    PINO_SAIDA = ~PINO_SAIDA; // inverte o estado do pino

    conta_tempo = 0; // zera a variável pra começar a contar novamente

    }

    }

    void main ( void )

    {

    while (1); //aguarda eternamente pelas interrupções

    }

    Nesse programa, tb não estão incluídas as etapas de inicialização da máquina.

    O CodeVision configura a máquina inteira pra você!

    afff!! estou ficando mal acostumado!! :lol:

    Com relação à precisão dos osciladores internos, eu não sei dizer, porque não tenho instrumentos para medir, mas, como as minhas aplicações são todas de baixa velocidade e até agora eu não precisei de precisão absoluta, eles funcionam perfeitamente.

    Os AVRs tb funcionam com osciladores externos.

    Grande máquina!! Excelente!!

    []'s

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    ahhh! O programa anterior foi feito através de interrupção.

    O CodeVision dispõe tb da função: delay_ms().

    Nesse caso, o programa ficaria dessa forma, sem interrupção e sem inicialização:

    #include <tiny2313.h> // esquecí disso no programa anterior

    #include <delay.h>

    #define PINO_SAIDA PORTB.0

    void main ( void )

    {

    while ( 1 )

    {

    delay_ms ( 500 );

    PINO_SAIDA = ~PINO_SAIDA;

    }

    }

    []'s

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • Depois dessas explicações e exemplos tanto do Maurício quanto do Zurca, só me resta parar de 'encher o saco' (mas só por enquanto, hehehe) e testar na prática.

    Valeu mesmo pelas dicas.

    E, maurício, me passe por MP o título do seu livro, pois já percebi que não quer fazer desse forum um canal de propaganda. É isso aí... Abraço!

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    É... Uma pergunta várias respostas, parece religião vários caminhos para se chegar ao céu HiHi .

    Desculpe mas vou incistir no Reads51 pois para quem gosta de asm , sua sintaxe é muito

    parecida com outros compiladores e não tem limite no tamanho do código .

    Eu uso somente ele para o AT89C2051 que é seu alvo no momento .

    Espero encontrar alguns códigos feito por você aqui no clubedohardware , claro livres para uso e abuso .Todos podemos aprender coisas novas com um simples código feito de uma forma que nunca imaginamos.

    ( http://py1acb.blogspot.com/ )

    Py1acb ... Angelo

    Editado por py1acb

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • Ô, amigo py1acb.

    Esqueci de te agradecer também. Obrigado!

    O programa já está instalado e logo vou testar também. É claro que não vou deixar de usar asm pois é a única linguagem que sei no momento e ... o trabalho não pode parar.

    Só um comentário... Já perceberam como a gente sempre defende aquilo que mais sabe?

    Quem sabe AVR, defende AVR

    Quem sabe 8051, ...

    Quem sabe PIC, ...

    Quem usa ASM, ...

    Quem usa C, ...

    Quem usa BASIC, ...

    Mas sempre temos que deixar a mente aberta para aprender coisas novas.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Crie uma conta ou entre para comentar

    Você precisar ser um membro para fazer um comentário






    Sobre o Clube do Hardware

    No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

    Direitos autorais

    Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

    ×