Ir ao conteúdo
  • Cadastre-se
rtampinha

Memoria de Bit do 8051

Recommended Posts

Olá estou utilizando o microcontrolador 8051 para ser mais exato o at89X52, e compilando o código com o keil, estudando uC 8051 observei que o endereço de memoria 20h a 2Fh poder ser endereçados bit a bit de 00h a 1Fh. Então o que estou saber como leio o endereço do bit em C:

Ex: uma Variavel tipo Bit receberer o bit do endereço 15h.

Outra dúvida tem como ler uma faixa de bit continuos mas em bytes difentes?

Depois se é possivel gravar em um byte ou mais bytes dependendo da faixa de bit lida.

EX: tipo copiar os bits de 03h a 0Fh, o que resultara na cópia de 1byte e mais os 4 bits dos menos significativos do próximo byte.

Compartilhar este post


Link para o post
Compartilhar em outros sites
...o endereço de memoria 20h a 2Fh poder ser endereçados bit a bit de 00h a 1Fh. Então o que estou saber como leio o endereço do bit em C...

Correção:

Os endereços são de 00 a 7Fh = 16 bytes de 8 bits.

Em ASM seria fácil, mas em C deixo para os colegas que são feras nesta linguagem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Salve, senhores!

Soschip. Tá na hora de começar com C, hein? eheheheheheh

rtampinha.

Quando você usa linguagem de alto-nível, você não precisa se preocupar aonde é que o compilador vai arrumar espaço pra criar suas variáveis.

Diferente de assembler, onde você precisa especificar os endereços das variáveis, em alto-nível o compilador que se vire, ehehehehehe

Se você precisa de somente uma variável bit, você declara essa variável como BIT:

bit bit1;

Só isso.

E no programa, você determina o valor, simplesmente atribuindo:

bit1 = 1;
bit1 = 0;

Se você precisa de uma variável de 8, 16, ou 32 bits, você declara a variável na área binária do 8051:

// pra 8 bits
unsigned char bdata var1;
// pra 16 bits
unsigned int bdata var2;
// pra 32 bits
unsigned long bdata var3;
// eu declarei como UNSIGNED, mas, tanto faz. Pode ser SIGNED ou UNSIGNED
// depende do modo como você vai armazenar dados nessas variáveis

Se você precisa acessar os bits individuais dessas variáveis, você declara as variáveis bit, com o especificador SBIT:

sbit bit0_var1 = var1 ^ 0;
sbit bit12_var2 = var2 ^ 12;
sbit bit30_var3 = var3 ^ 30;

E então, você pode acessar essas variáveis como inteiros, ou como bits:

var1 = 0x0A;
bit0_var1 = 1;
bit0_var1 = 0;

var2 = 0x0A0A;
bit12_var2 = 1;
bit12_var2 = 0;

É isso aí!

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pois é...

Por enquanto para o 8051 ainda não foi ne-C-ssário. É que todo trabalho que pego sempre é urgente e não dá tempo pra aprender testando.

Mas se for preciso, pego o jeito em pouco tempo... basta começar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então deixe me ver se eu entendi, se estou fazendo um programa que vai ler qualquer faixa de bit, e retornar ao usuário os valores dos bits dessa faixa, então deverei ter toda a memora de bit declara em variaveis para ler??

por ex: Usuario solicita ler 10 bits a partir do endereço 2Eh(endereço do bit). então vou ter que possuir essas 10 posições de bit declaradas em variavel?.

Ta mas desculpe minha ignorância mas não teria como Criar um vetor membit[0x7F], pois quando o usuário me solicitasse o endereço 2Eh(bit_solicitado) pudesse fazer algo tipo Var_byte = membit[bit_solicitado+8]???

Compartilhar este post


Link para o post
Compartilhar em outros sites

O Keil não permite array de bits.

Pra 10 bits, ou você declara um por um, ou então pode usar uma variável INT, de 16 bits.

No Keil você tb pode usar campos de bits, em uma estrutura.

Não conheço outros métodos.

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Maurício... é nestas horas que adoro ASM...heheh (Manipulação de bits).

Não preciso declarar nada. Basta ter um bloquinho pra ir anotando que byte ou que bit é o quê!

Editado por soschip

Compartilhar este post


Link para o post
Compartilhar em outros sites

kkkkkkkkkkkkkkkkkkkkk

Cara! Nada se compara a não ter que ter, absolutamente, nenhuma preocupação em saber como é que a mágica funciona, isso é, desde que ela funcione, é lógico!

Quando você começar a programar em C (eu recomendo), ou outra linguagem qualquer de alto-nível, você nunca mais vai querer saber de assembler, ehehehehehehe

Como diz meu mestre, Jean Fernandes, paraíbano cabra bão, C só não resolve uma vez por ano, mas... Isso acontece a cada 10 anos! kkkkkkkkkkkkkkkkkkkkkk

Eu não uso bloquinhos, ehehehehehehe

[]'s

Editado por Maurício2006

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

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





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

×