Tenho estudado o microcontrolador 8032
. É mencionado que 8032
não tem ROM interna. Agora existem algumas perguntas que tenho
-
Será que precisamos de uma ROM externa para executar programas necessariamente? Não podemos usar a RAM interna de 256 bytes?
-
Suponha que eu esteja usando o microcontrolador 8032 com uma ROM externa
2732
e também usando uma trava para armazenar o endereço (ordem inferior) da porta P0. (que pode transferir endereço / dados). Agora, depois de ativar o EA e conectar o PSEN como o 8032 executa o programa? O que acontece se eu ligar o sistema? (Como o contador de programa do microcontrolador 8032 executa as intruções? De qual endereço de memória externa o programa deve ser lido?
Eu tenho leia estes manuais- Intel 8032H Keil , Atmel 80C32E .
Resposta
Se você olhar para um circuito 80 (C) 32 típico abaixo (de aqui ):
Você pode ver que o 8032 se comunica com EPROM, RAM e EEPROM externos por meio de um bus – dados de 8 bits e endereço de 16 bits. O último é travado e, portanto, desmultiplexado com o HCT573. Havia alguns chips com a trava embutida projetada para ser usada com o 8031/8032, mas o acima era a configuração mais comum – custam chips de memória padrão. Também existe um pouco de ” cola ” lógica para decodificar os endereços e os gêneros te os sinais apropriados para as memórias (o HCT138 e o quad NAND).
É vital que a lógica de colagem seja projetada de forma que a EPROM resida no endereço 0 porque após um reset, a execução sempre começa pelo 8032 buscando o primeiro byte da instrução desse endereço. Esta é uma função do hardware no 8032 e não pode ser alterada. Normalmente, a instrução é uma instrução LJMP de 3 bytes que vai para o início do programa. Chamamos isso de ” RESET VECTOR “. Outros vetores ocupam os bytes imediatamente acima do vetor de redefinição – para a rotina de serviço de interrupção externa e rotina de serviço de interrupção de temporizador.
Naqueles dias, a EPROM seria programada (escrita) por um programador separado fora do circuito e, em seguida, normalmente conectado a uma tomada. Não havia programação no circuito naquela época. A RAM e a EEPROM poderiam ser gravadas pelo micro, mas o programa teria que ser carregado na EPROM antes que isso fosse possível.
Comentários
Resposta
Não, você não pode usar a RAM interna para armazenar o código. O 8051/8032 usa uma arquitetura Harvard, o que significa que tem uma arquitetura completamente separada espaços de memória para código e dados. As instruções são obtidas no espaço de código, mas a RAM reside no espaço de dados.
Agora, depois de habilitar o EA e conectar o PSEN, como o 8032 executa o programa?
O 8032 busca instruções do espaço do código. Como o EA é declarado, essas buscas (leituras de memória) aparecem no barramento de memória externo , com PSEN
declarado. Quando PSEN
NÃO é declarado em uma operação de leitura de memória externa, é uma leitura de espaço de dados.
O que acontece se eu ligar o sistema?
O 8032 começa a buscar instruções do espaço de código endereço 0.
Como o contador do programa do microcontrolador 8032 executa as intruções?
O O contador do programa é simplesmente responsável por manter o endereço da próxima instrução a ser executada. Outras partes da CPU executam as instruções.
De qual endereço de memória externa o programa deve ser lido?
Endereço 0.
Se você deseja usar interrupções em seu programa, existem outros endereços na memória de baixo espaço de código que são reservados para eles, portanto, o código que você a execução na redefinição terá que “pular” esses endereços reservados.
Comentários
- Esta é a resposta à primeira pergunta. Vou marcar com +1. Você poderia elaborar a segunda parte da pergunta? Essa parte eu não consigo ‘ nenhuma pista.
- Veja a edição acima.
Resposta
O 8032, que é uma variante do 8052, não possui ROM interna para armazenamento de programa. Em vez disso, uma ROM / EPROM / EEPROM externa deve ser usada para manter o programa.
Duas portas são usadas para acessar a memória externa: Porta 0 (linhas P0.0-P0.7) emite o baixo 8 bits de um endereço de 64 K de 16 bits e também servem como barramento de dados de 8 bits de leitura / gravação após o endereço ter sido bloqueado pela memória externa.
P2 (linhas P2.0-P2.7 ) são usados para emitir os 8 bits altos do endereço de 64 K de 16 bits.
Embora o 8032 tenha 256 bytes de RAM interna, isso pode ser estendido adicionando um chip de RAM ao barramento de endereço externo também .
A linha de endereço externo \ $ \ mathsf {\ small \ overline {\ text {EA}}} \ $ é mantida baixa para indicar se um acesso está sendo feito à memória externa do programa, caso contrário, externa RAM é assumida.
Para executar o código fora da memória externa, o endereço do contador do programa é enviado nas linhas de dados da Porta 0 e da Porta 2; então, durante o ciclo de leitura, o (s) byte (s) recuperado (s) da ROM são lidos na Porta 0 e executados pelo processador.
Apenas uma instrução é buscada por vez.
\ $ \ mathsf {\ small \ overline {\ text {PSEN}}} \ $ é um estroboscópio usado durante o acesso à memória externa do programa.
Comentários
- .: Mas como ele executa programas que residem na memória externa? Olha, não estou entendendo como o PC vai se comportar quando o programa está na memória externa. Quero dizer, a cada ciclo de m / c ele busca algum número de bytes. Depois de buscá-lo, o programa é executado imediatamente ou todo o programa é obtido de uma vez > se for esse o caso, onde ele será armazenado?
- .: Portanto, inicialmente
PC=0000h
. Ele começa a buscar bytes a cada ciclo de m / ce, em seguida, executa? Portanto, na ROM, sempre devemos gravar o programa do endereço0000h
, caso contrário, não poderíamos executá-lo corretamente. - @learner. Correto. Normalmente, haverá um salto no endereço para o ” real ” início do código.
- .: I marcará com +1 sua resposta. Mas se o programa for executado instrução por instrução, como a referência de encaminhamento como essa será gerenciada?
L1:JNZ L2 .. L2:....
. - A instrução JNZ (e outras instruções de Jump e Branch) carregam o endereço de destino do Jump no contador do programa, de modo que o processador buscará o próximo instrução desse endereço, em vez da instrução imediatamente após o salto.
glue logic
. Parece queLJMP
irá mover para o início do programa? Mas aqui o programa está na memória externa. Este tipo de instrução é usado aqui? Quer dizer, simples, as instruções são buscadas na memória externa e colocadas noIR
, decodificadas e executadas? Onde está o caso deLJMP
aqui?