Microcomputador Z80 by Arne
Nesse artigo eu quero mostrar meu último projeto de final de semana (Setembro/2021) Nossa... lembrei daquela música dos Titãs que diz "A melhor banda de todos os tempos da última semana...". Bom, seja como for trata-se de um microcomputador Z80, similar aos que existiram durante a década de 1980 e 1990 como:
Estes pequenos microcomputadores também foram utilizados, na época, em muitos cursos como Técnico em Eletrônica, Processamento de Dados, Engenharia Eletrônica/Computação e outros como base no treinamento com a CPU Z80. O "núcleo" do meu pequeno microcomputador Z80 é uma placa que eu montei no
início da década de 1990 e usei para consolidar o
meu
aprendizado a respeito do microprocessador Z80. Eu posso inclusive afirmar que essa placa foi minha porta de entrada para o mundo dos microprocessadores e também microcontroladores. Em breve pretendo mostrar uma outra placa, montada também no início da década de 1990 com o microcontrolador 8031, mas isso é uma outra história. Eu vou detalhar agora os itens presentes no meu pequeno microcomputador:
Como funciona Internamente na ROM existe um programa monitor que eu desenvolvi utilizando Linguagem Assembly Z80. O objetivo desse pequeno programa é permitir a inserção de um outro programa (que eu chamo programa do usuário) na RAM, para que este possa ser posteriormente executado pela CPU Z80. Temos
na placa um display dividido
em duas partes: uma para endereços com
4 displays de 7 segmentos e outra para dados com 2 displays também de 7
segmentos. Iniciamos o processo
de inserção apontando para o endereço desejado que necessariamente
deve ser 8000H (esse é o endereço inicial da RAM no meu projeto). Claro
que é possível utilizar outro qualquer a partir de 8000H, mas é
preciso colocar em 8000H um comando “jump” para o novo endereço inicial
escolhido. Em seguida, coloca-se o “dado” que nada mais é que o
código objeto de um mnemônico ou um dado a ser tratado pela CPU. Obs.: Não é necessário realizar uma compilação para se obter o código objeto do programa, já que muitos manuais do microprocessador Z80 trazem uma listagem com cada um dos mnemônicos com seus respectivos códigos objeto. Era assim que fazíamos antigamente (mas eu sinceramente não recomendo mais esse tipo de uso, a não ser que você queira tentar criar um programa como fazíamos naquela época - bem raiz mesmo!) Por exemplo: Digamos que você
queira entrar com: LD A,00H ;carrega A com zero! Mnemônico → LD A,00H → carregue A com 00H Código objeto de LD A,nn → 3E (presente nos manuais,livros, etc) 00H será o dado. Então em 8000H teremos 3EH e em 8001H teremos 00H e assim sucessivamente.
Chamadas permitidas no programa monitor Para facilitar o uso desse pequeno microcomputador eu deixei algumas subrotinas prontas no programa monitor e que permitem o uso dos periféricos conectados a CPU como:
Isso facilita muito, já que o programa do usuário não precisa configurar novamente todos os periféricos para uso e/ou ter funções para temporizações. Como
exemplo de operação, vamos
simular a entrada de um programa que permita contar de 0 a 255 (00H a
FFH) e
apresente o resultado do contador no display e também nos LEDs
conectados ao PORTB do 8255. Para que a visualização fique confortável,
vamos atrasar cada nova apresentação do contador em 500ms.
Com
o programa na memória, basta executar o mesmo (tecla "GO" no canto superior esquerdo). E isso pode
ser visto no vídeo que preparei e inseri no Youtube. Veja abaixo!
Em breve pretendo trazer mais informações a respeito desse projeto.
|
Copyright deste conteúdo reservado para Márcio José Soares e protegido pela Lei de Direitos Autorais LEI N° 9.610, de 19 de Fevereiro de 1998. É estritamente proibida a reprodução total ou parcial do conteúdo desta página em outros pontos da internet, livros ou outros tipos de publicações comerciais ou não, sem a prévia autorização por escrito do autor. |