Adaptador ACIA: Comunicação Assíncrona
Adaptador ACIA: Comunicação Assíncrona
Discentes:
● Douglas Nhampule;
● Milton Cuambe
● Neyla Mussá
● Palmira Chavana
● Toní Manjate;
Aplicações de Microprocessadores I
Tema:
Adaptador de Ligação para Comunicação Assíncrona (ACIA)
ÍNDICE
1. Introdução ................................................................................................................. 5
2. Objectivos ................................................................................................................. 6
2.1. Geral: ................................................................................................................ 6
2.2. Específicos ........................................................................................................ 6
3. Contextualização ...................................................................................................... 7
4.1. Estrutura interna do ACIA................................................................................ 8
4.1.1. Blocos Funcionais Principais ....................................................................... 8
4.2. Interface com o Microprocessador ................................................................... 9
4.3. Linhas de Comunicação Serial ......................................................................... 9
4.4. Principais Características ................................................................................ 10
4.5. Funcionamento Básico ................................................................................... 11
5. Inicialização do ACIA ............................................................................................ 11
5.1. Procedimento de Inicialização ........................................................................ 11
5.2. Palavra de Controle do MC6850 .................................................................... 12
6. Diagrama de bloco do Adaptador de interface para Comunicação Assíncrona
MC6850 .......................................................................................................................... 12
7. Funcionamento/Operação do Dispositivo .............................................................. 13
7.1. Reinicialização Mestre ................................................................................... 13
7.2. Transmissão de Dados .................................................................................... 13
7.3. Recepção de dados.......................................................................................... 14
7.4. Controle de Erros ............................................................................................ 15
7.5. Uso de Interrupções ........................................................................................ 15
8. Funções de entrada/saída e sinais de interface do ACIA para MPU ...................... 16
8.1. Dados Bidirecionais do ACIA (D0–D7) ........................................................ 16
8.2. Sinal de Ativação do ACIA (E) ...................................................................... 16
8.3. Leitura/Escrita (R/W) ..................................................................................... 16
8.4. Selecção de Chip (CS0, CS1, CS2) ................................................................ 16
8.5. Selecção de Registo (RS) ............................................................................... 17
8.6. Pedido de Interrupção (IRQ) .......................................................................... 17
8.7. Entrada do Relógio ......................................................................................... 17
8.8. Linhas de Entrada/Saída Serial ....................................................................... 18
8.8.1. Recepção de Dados (Rx Data) ................................................................ 18
8.8.2. Transmissão de Dados (Tx Data) ........................................................... 18
8.9. Controlo de Periféricos ................................................................................... 18
3
8.9.1. Clear to Send (CTS) ............................................................................... 18
8.9.2. Request to Send (RTS) ........................................................................... 19
8.10. Data Carrier Detect (DCD) ......................................................................... 19
8.11. Registos Internos do MC6850 ACIA ......................................................... 19
8.12. Registo de Dados de Transmissão (TDR) .................................................. 19
8.13. Registo de Dados de Recepção (RDR) ....................................................... 20
8.14. Registo de Controlo .................................................................................... 20
Bits de Selecção da Divisão do Contador (CR0 e CR1)......................................... 21
Exemplo de Uso em Código (Assembly 6800): ..................................................... 21
Bits de Seleção de Palavra (CR2, CR3, CR4) ........................................................ 21
Bits de Controlo do Transmissor (CR5 e CR6) ...................................................... 22
Bit de Controlo CR7 – Habilitação de Interrupção de Recepção ........................... 23
8.15. Registo de Estado (Status Register) ........................................................... 23
Bit 0 – Registo de Dados de Receção Cheio (RDRF) ............................................ 24
Bit 1 – Registo de Dados de Transmissão Vazio (TDRE) ..................................... 24
Bit 2 – Deteção de Portadora de Dados (DCD) ...................................................... 24
Bit 3 – Pronto para Enviar (CTS) ........................................................................... 24
Bit 4 – Erro de Enquadramento (Framing Error) ................................................... 24
Bit 5 – Erro de Overrun .......................................................................................... 24
Bit 6 – Erro de Paridade ......................................................................................... 24
Bit 7 – Pedido de Interrupção (IRQ) ...................................................................... 24
Exemplo Completo de Programa com ACIA (Assembly para M6800) ......................... 25
Exemplo 2 de Código com o ACIA MC6850 (Assembly 6800) .................................... 25
Exemplo 3 – Ecoar caractere recebido (Loop de recepção e envio) .............................. 27
9. Conclusão ............................................................................................................... 28
10. Referências Bibliográficas .................................................................................. 29
4
ÍNDICE DE FIGURAS
Figura 1. CI MC6850 ACIA ............................................................................................ 9
Figura 2. Diagrama de pinagem do ACIA ...................................................................... 10
Figura 3. Diagrama de blocos do ACIA ......................................................................... 12
Figura 4. Fluxograma do processo de transmissão ......................................................... 14
Figura 5. Fluxograma do processo de recepção ............................................................. 15
Figura 6. Tabela de Definição do Conteúdo do Registo ACIA ...................................... 20
Figura 7. Registo de controlo ......................................................................................... 20
Figura 8. Registo de estado ............................................................................................ 25
5
Adaptador de Ligação para Comunicação Assíncrona (ACIA)
1. Introdução
A comunicação de dados entre dispositivos digitais constitui um dos pilares fundamentais
no desenvolvimento de sistemas microprocessados. Entre os diversos métodos de
transmissão disponíveis, a comunicação serial assíncrona apresenta-se como uma solução
eficiente e amplamente utilizada, sobretudo em contextos onde a simplicidade da ligação
e a redução do número de fios são factores determinantes.
Neste contexto, surge o Adaptador de Ligação para Comunicação Assíncrona, conhecido
pela sigla ACIA (Asynchronous Communications Interface Adapter), que permite ao
microprocessador comunicar com dispositivos periféricos através de uma interface serial.
O ACIA realiza a conversão entre os dados paralelos provenientes do microprocessador
e o formato serial exigido pelas linhas de transmissão, e vice-versa. Segundo Leventhal
(1978), o ACIA possibilita ao microprocessador comunicar com terminais assíncronos e
outros dispositivos através de uma interface serial, controlando automaticamente
parâmetros como a velocidade de transmissão, a verificação de paridade e a gestão de
erros.
O presente trabalho tem como objectivo apresentar o funcionamento do ACIA no
contexto da arquitectura do microprocessador Motorola 6800, nomeadamente a sua
estrutura interna, o processo de inicialização e os princípios básicos da sua operação. A
análise fundamenta-se no manual técnico "Basic Microprocessors and the 6800", que
serve de base bibliográfica para a compreensão detalhada deste componente.
5
2. Objectivos
2.1. Geral:
• Compreender o funcionamento do ACIA e a sua integração com o
microprocessador 6800, analisando a sua estrutura, inicialização e operação na
comunicação serial assíncrona.
2.2. Específicos
• Analisar a estrutura interna do ACIA, incluindo seus registros (Controle, Status,
Dados de Transmissão e Recepção), circuitos de temporização e interface com o
barramento do sistema.
• Explicar o processo de inicialização e configuração do ACIA.
• Descrever o funcionamento operacional do ACIA.
• Fornecer exemplos práticos de programação em Assembly (6800).
6
3. Contextualização
O avanço acelerado da microelectrónica e a crescente complexidade dos sistemas digitais
criaram uma demanda crítica por mecanismos de comunicação eficientes entre
dispositivos. À medida que os microprocessadores assumiam funções cada vez mais
centrais em arquiteturas computacionais, tornou-se imperativo desenvolver interfaces
robustas capazes de garantir trocas de dados confiáveis e de alto desempenho com
periféricos externos. Neste contexto, a comunicação serial assíncrona emergiu como uma
solução particularmente vantajosa, destacando-se pela sua simplicidade de
implementação (requerendo apenas duas linhas básicas - transmissão e recepção) e pela
dispensa de um sinal de clock compartilhado entre os dispositivos comunicantes.
O ACIA (Adaptador de Ligação para Comunicação Assíncrona) consolida-se como um
componente fundamental nesta arquitetura, atuando como ponte inteligente entre o
barramento paralelo do microprocessador e os dispositivos seriais externos. Sua
arquitetura especializada permite não apenas a conversão bidirecional entre formatos
paralelos e seriais, mas também incorpora mecanismos sofisticados para garantir a
integridade da comunicação. Esta capacidade torna-o particularmente valioso na
interação com terminais, modems e outros sistemas de comunicação, onde a
compatibilidade entre diferentes padrões de transmissão é essencial.
No ecossistema do microprocessador Motorola 6800 - amplamente documentado na obra
seminal "Basic Microprocessors and the 6800" (Leventhal, 1978) - o ACIA assume um
papel de destaque na expansão das capacidades de comunicação do sistema. Sua
implementação vai além da simples conversão de dados, incorporando funcionalidades
avançadas como:
• Configuração programável do formato de transmissão (número de bits por
carácter)
• Mecanismos automáticos de verificação de paridade
• Gestão inteligente de interrupções
• Deteção e sinalização de erros de transmissão
• Controle de fluxo de dados
Estas características transformam o ACIA num elemento crucial para sistemas que
exigem comunicações seriais robustas e eficientes, demonstrando a evolução das técnicas
de interfaceamento em arquiteturas microprocessadas. Sua arquitetura serve ainda como
base conceitual para muitas das interfaces seriais modernas, evidenciando a relevância
duradoura deste componente no desenvolvimento de sistemas digitais.
7
4. Adaptador de Ligação para Comunicação Assíncrona (ACIA)
4.1. Estrutura interna do ACIA
O ACIA, tal como o MC6850, é um circuito integrado especializado com funcionalidades
bem definidas para comunicação assíncrona. Sua estrutura interna é composta por
diversos blocos que trabalham conjuntamente para garantir a recepção e transmissão
correta de dados entre o microprocessador e o dispositivo periférico.
4.1.1. Blocos Funcionais Principais
O ACIA é composto por:
a) Registradores Internos
• Registrador de Controle (Control Register): Utilizado para configurar
parâmetros de comunicação como número de bits de dados, bits de parada,
verificação de paridade, e taxa de transmissão.
• Registrador de Status (Status Register): Fornece informações sobre o estado
atual da interface, como buffer cheio, erros de paridade ou overrun, e prontidão
para transmissão ou recepção.
• Registrador de Dados de Transmissão (Transmit Data Register): Armazena
os dados a serem enviados para a linha serial.
• Registrador de Dados de Recepção (Receive Data Register): Armazena os
dados recebidos da linha serial, prontos para serem lidos pelo processador.
b) Conversores Paralelo-Serial / Serial-Paralelo
• Esses circuitos fazem a conversão de dados de 8 bits paralelos (internos ao
processador) para uma sequência de bits seriais (transmitidos pela linha de
comunicação) e vice-versa.
c) Gerador de Clock
• Controla a temporização da transmissão e recepção dos dados, podendo utilizar
clocks internos ou sinais externos, conforme a configuração do registrador de
controle.
• Gerador de Baud Rate: permite configurar a velocidade de comunicação (bits
por segundo). Pode ser interno ou controlado externamente através de um
relógio de referência.
d) Gerador de Paridade
• Permite a verificação e geração automática do bit de paridade, oferecendo maior
confiabilidade à comunicação.
e) Lógica de Controle
• Responsável por coordenar as operações internas do ACIA com base nos
comandos do processador e no status dos buffers.
8
4.2. Interface com o Microprocessador
O ACIA é conectado ao microprocessador através de:
• Barramento de Dados (8 bits): Para troca de informações.
• Barramento de Endereço: Para seleção do registrador a ser acessado (dados,
controle, status).
• Linhas de Controle: Incluindo RW (leitura/escrita), RS (seleção de registrador)
e CS (seleção do chip).
9
Figura 2. Diagrama de pinagem do ACIA
5. Inicialização do ACIA
Antes de iniciar qualquer transmissão ou recepção de dados, o ACIA deve ser
corretamente configurado pelo programa do microprocessador. Essa configuração é feita
por meio da escrita de valores apropriados no Registrador de Controle.
11
▪ Número de bits de parada (1, 1½, ou 2).
▪ Tipo de paridade (ímpar, par, ou sem paridade).
▪ Clock de transmissão (divisores do clock principal).
▪ Habilitação de interrupções.
ii. Configuração do Baud Rate (velocidade de transmissão):
• Pode ser configurado internamente ou por meio de um clock externo. O
ACIA permite múltiplas taxas através de divisores configuráveis.
iii. Verificação do Status:
• Após a configuração inicial, o processador pode ler o Registrador de Status
para confirmar que o ACIA está pronto para iniciar a operação.
5.2. Palavra de Controle do MC6850
A palavra de controle é composta por 8 bits, divididos em campos como:
• Bits 0-1: Clock divisor (bauds)
• Bits 2-4: Formato do caractere
• Bit 5: Habilitação de interrupção de recepção
• Bits 6-7: Comando de controle (reset, RTS, etc.)
12
7. Funcionamento/Operação do Dispositivo
Na interface do barramento, o ACIA aparece como dois locais de memória endereçáveis.
Tipicamente, quando o dispositivo é lido, dois dados distintos são fornecidos consoante
o registo selecionado. Os registos de leitura são o Registo de Estado e o Registo de Dados
Recebidos. Os registos de escrita são o Registo de Controlo e o Registo de Dados a
Transmitir. O registo selecionado depende do endereço de barramento fornecido. Os
sinais adicionais de entrada e saída são utilizados para fornecer pulsos de relógio,
interrupções e controlo direto de moderna.
7.1. Reinicialização Mestre
A primeira vez que o ACIA é ligado (ou seja, quando o sistema é energizado pela primeira
vez), ele deve ser corretamente inicializado para assegurar um funcionamento apropriado.
Isto é feito escrevendo no Registo de Controlo o byte de configuração necessário. O ACIA
é funcional após a sua energização, mas os conteúdos dos seus registos internos são
indefinidos. O bit RTS é automaticamente colocado em 1, e o bit de interrupção de
receção é desativado após o arranque. O dispositivo pode ser reinicializado ao nível do
software através do Registo de Controlo. O tempo de estabilização do circuito depende
da fonte de alimentação após a energização do sistema.
13
Figura 4. Fluxograma do processo de transmissão
14
Figura 5. Fluxograma do processo de recepção
15
8. Funções de entrada/saída e sinais de interface do ACIA para MPU
As linhas de dados bidirecionais (D0 a D7) são responsáveis pela transferência de dados
entre o ACIA e a MPU. Os circuitos de saída do barramento de dados são do tipo "três
estados" (three-state), o que significa que permanecem em alta impedância (estado
desligado), ou seja, desligados logicamente do barramento exceto durante operações de
leitura por parte da MPU. Este comportamento evita conflitos no barramento de dados
quando múltiplos dispositivos estão conectados.
O sinal de ativação, designado por E, é uma entrada compatível com lógica TTL de alta
impedância. Este sinal ativa os buffers de entrada/saída de dados do barramento e
sincroniza a entrada e saída de dados no ACIA. Em funcionamento típico, o sinal E é
derivado do relógio φ2 do MC6800 ou do relógio E do MC6809, servindo para temporizar
as operações de leitura e escrita de forma precisa.
A linha de Leitura/Escrita é uma entrada de alta impedância compatível com lógica TTL,
utilizada para controlar a direcção do fluxo de dados através da interface de barramento
de dados de entrada/saída do ACIA. Quando esta linha se encontra em nível lógico alto
(indicando um ciclo de leitura do microprocessador), os drivers de saída do ACIA são
activados e é lido o registo previamente seleccionado. Quando em nível lógico baixo, os
drivers de saída são desactivados e o microprocessador procede à escrita de dados no
registo seleccionado. Assim, o sinal R/W permite seleccionar entre registos de leitura e
registos de escrita dentro do ACIA.
Estas três linhas de entrada, também compatíveis com TTL e de alta impedância, são
responsáveis pela activação do ACIA no barramento. O adaptador é seleccionado quando
CS0 e CS1 estão em nível alto e CS2 em nível baixo. A comunicação de dados entre o
microprocessador e o ACIA é então efectuada sob controlo dos sinais de activação
(Enable), leitura/escrita (R/W) e selecção de registo (RS).
16
8.5. Selecção de Registo (RS)
A linha RS (Register Select) é uma entrada de alta impedância compatível com TTL. Um
nível lógico alto nesta linha selecciona os registos de dados de transmissão/recepção,
enquanto um nível lógico baixo selecciona os registos de controlo/estado. A linha R/W
actua em conjunto com a linha RS para aceder correctamente aos registos de leitura ou
escrita associados a cada funcionalidade.
A linha IRQ é uma saída activa em nível baixo, de colector aberto (sem resistência de
pull-up interna), compatível com TTL, e é utilizada para gerar interrupções no
microprocessador. A saída mantém-se em estado activo enquanto persistir a condição que
originou a interrupção, desde que a correspondente habilitação interna esteja activa. O bit
de estado IRQ, quando em nível alto, indica que a linha de interrupção se encontra activa.
Do lado receptor, a interrupção ocorre quando a opção Receiver Interrupt Enable está
activa e um dos seguintes eventos é detectado: o bit Receive Data Register Full (RDRF)
está alto, ocorre uma condição de Overrun, ou o sinal Data Carrier Detect (DCD) está em
nível alto.
Interrupções causadas por RDRF podem ser eliminadas através da leitura dos dados
recebidos ou da reinicialização do ACIA. Já interrupções originadas por Overrun ou perda
de DCD são limpas após a leitura do registo de estado e posterior leitura do registo de
dados de recepção ou reinicialização do ACIA. A interrupção do receptor pode também
ser desactivada desabilitando a opção Receiver Interrupt Enable.
17
Relógio de Recepção (Rx CLK) :A entrada Rx CLK é utilizada para sincronizar a
recepção dos dados. Quando operando no modo de divisão por 1 (÷1), é essencial que o
sinal de relógio e os dados estejam sincronizados externamente. A aquisição dos bits de
dados é efectuada na transição ascendente (positiva) do sinal de relógio, assegurando uma
recepção fiável e coerente com o protocolo de comunicação.
O ACIA possui duas linhas para transferência de dados. A linha Transmit Data (TX
DATA) é usada para enviar dados, e a linha Receive Data (RX DATA) é usada para
receber dados de um periférico. Antes de transferir os dados, o ACIA adiciona
automaticamente o bit de start. O número de bits de stop e a paridade (par ou ímpar)
também são especificados na palavra de dados por meio dos bits 2, 3 e 4 do registro de
controle. Conforme os dados são recebidos pela linha RX DATA, o ACIA usa o bit de
paridade para verificar a precisão do número de "1"s recebidos e remove os bits de start,
stop e paridade da palavra de dados antes de converter os bits de dados para um formato
paralelo para transferência para a MPU pelo barramento de dados.
A linha de recepção de dados é uma entrada de alta impedância compatível com níveis
TTL, utilizada para a recepção de informação em formato serial. Quando o ACIA opera
com frequências de relógio de 16 ou 64 vezes a taxa de bits, a sincronização dos dados
recebidos com o sinal de relógio é efectuada internamente. Este mecanismo assegura a
correcta amostragem dos bits de dados, mesmo em ambientes com ligeira instabilidade
no sinal de entrada.
A linha de transmissão de dados constitui uma saída serial através da qual os dados são
enviados para um modem ou qualquer outro dispositivo periférico de comunicação. Os
dados são emitidos bit a bit, precedidos por um bit de início e seguidos por bits de
paragem, segundo o protocolo configurado no registo de controlo.
A entrada CTS é uma linha de alta impedância compatível com níveis TTL, utilizada para
controlo automático da transmissão. Quando o sinal CTS está no nível lógico baixo
(ativo), indica que o modem está pronto para receber dados. Se o sinal estiver no nível
alto (inativo), a transmissão é inibida, impedindo que o ACIA envie dados e que o bit de
estado "Transmit Data Register Empty" (TDRE) seja ativado.
18
8.9.2. Request to Send (RTS)
A entrada DCD é uma linha de alta impedância compatível com níveis TTL, que fornece
controlo automático na receção de dados. Quando o sinal DCD está no nível lógico alto
(inativo), indica que a portadora de dados foi perdida, inibindo e reinicializando a secção
recetora do ACIA. Uma transição de nível baixo para alto nesta linha pode gerar uma
interrupção na MPU, desde que o bit de "Receive Interrupt Enable" esteja ativado. Para o
funcionamento correto desta funcionalidade, o sinal de relógio de receção (Rx CLK) deve
estar ativo.
Ao escrever dados no TDR, o bit de estado "Transmit Data Register Empty" (TDRE) no
registo de estado é colocado em nível lógico baixo, indicando que o registo está ocupado.
Se o transmissor estiver ocioso, a transferência dos dados para o registo de deslocamento
ocorre dentro de um período de tempo equivalente a um bit após a borda de descida do
comando de escrita. Caso contrário, a transferência ocorre imediatamente após a
conclusão da transmissão do caractere anterior.
Após a transferência dos dados, o bit TDRE é novamente colocado em nível lógico alto,
sinalizando que o TDR está vazio e pronto para receber novos dados.
19
8.13. Registo de Dados de Recepção (RDR)
A leitura dos dados ocorre ao endereçar o ACIA com RS e R/W em nível lógico alto,
quando o ACIA está habilitado. Este ciclo de leitura não destrutivo limpa o bit RDRF,
embora os dados permaneçam no RDR até serem sobrescritos por novos dados recebidos.
20
Bits de Selecção da Divisão do Contador (CR0 e CR1)
Os bits CR0 e CR1 são responsáveis pela definição da taxa de divisão do sinal de clock
aplicado às secções transmissora e receptora do ACIA. Para além disso, estes bits
desempenham um papel fundamental na reinicialização geral do dispositivo (master
reset), procedimento que limpa o Registo de Estado (com excepção dos bits associados
aos sinais externos CTS e DCD) e reinicializa internamente os blocos de transmissão e
recepção. Esta reinicialização não altera os restantes bits do Registo de Controlo.
É importante notar que, após o arranque inicial do sistema ou na ocorrência de uma falha
de alimentação, os bits CR0 e CR1 devem ser programados em nível lógico alto, de forma
a assegurar a correcta reinicialização do ACIA. Após esse processo, a taxa de divisão do
sinal de relógio pode ser configurada de acordo com os requisitos do sistema. Estes dois
bits permitem seleccionar diferentes factores de divisão do clock, afectando directamente
a taxa de transmissão de dados.
Os bits CR2, CR3 e CR4 do registo de controlo do MC6850 ACIA determinam o formato
dos dados transmitidos e recebidos, incluindo o comprimento da palavra, a paridade e o
número de bits de paragem. A configuração destes bits permite adaptar a comunicação
serial a diversos protocolos e requisitos de dispositivos periféricos.
Formato de Codificação
21
CR4 CR3 CR2 Função
0 0 0 7 bits de dados,
paridade par, 2 bits
de paragem
0 0 1 7 bits de dados,
paridade par, 2 bit de
paragem
0 1 0 7 bits de dados,
paridade ímpar, 1 bit
de paragem
0 1 1 7 bits de dados,
paridade ímpar, 1 bit
de paragem
1 0 0 8 bits de dados, sem
paridade par, 2 bits
de paragem
1 0 1 8 bits de dados, sem
paridade par, 1 bits
de paragem
1 1 1 8 bits de dados,
paridade par, 1 bits
de paragem
1 1 1 8 bits de dados,
paridade ímpar, 1
bits de paragem
Notas:
Os bits CR5 e CR6 do registo de controlo da ACIA são responsáveis por configurar o
comportamento do transmissor no que diz respeito à geração de interrupções, ao controlo
do sinal RTS (Request to Send) e à transmissão forçada de um nível de interrupção
(espaço lógico) através da linha de dados seriais.
22
interrupção por registo de
dados de transmissão vazio
(TDRE) está desactivada.
0 1 A saída RTS permanece em
nível baixo; a interrupção de
transmissão é activada
quando o registo de dados de
transmissão está vazio.
O bit CR7do Registo de Controlo (Control Register) da ACIA MC6850 é responsável por
ativar as interrupções relacionadas com a receção de dados. Quando este bit é definido
para 1, as seguintes condições podem gerar uma interrupção:
O Registo de Estado é um registo de leitura que fornece informações sobre o estado atual
da ACIA. Cada bit deste registo indica uma condição específica:
23
Bit 0 – Registo de Dados de Receção Cheio (RDRF)
Este bit é definido para 1quando um caractere completo foi recebido e transferido para o
Registo de Dados de Receção. É redefinido para 0 após a leitura do registo pela CPU ou
por uma reinicialização mestre.
Este bit é definido para 1 quando o Registo de Dados de Transmissão está pronto para
aceitar novos dados. É redefinido para 0 após a escrita de dados no registo.
Este bit é definido para 1 quando a entrada DCD está em nível alto, indicando a ausência
de portadora. Uma transição de nível baixo para alto nesta entrada gera uma interrupção
se o bit CR7 estiver ativado. O bit permanece em 1 até que o Registo de Estado e o Registo
de Dados de Receção sejam lidos ou até que ocorra uma reinicialização mestre.
Este bit reflete o estado da entrada CTS. Um nível baixo indica que o dispositivo
periférico está pronto para receber dados. Um nível alto inibe a definição do bit TDRE,
impedindo a transmissão de novos dados.
ste bit é definido para 1 quando o caractere recebido não está corretamente enquadrado
por bits de início e de paragem, indicando um erro de sincronização.
Este bit é definido para 1 quando novos dados são recebidos antes que os dados anteriores
tenham sido lidos, resultando na perda de dados. É redefinido após a leitura do Registo
de Dados de Receção ou por uma reinicialização mestre.
Este bit é definido para 1 quando o número de bits de valor lógico alto no caractere
recebido não corresponde à paridade configurada (par ou ímpar).
Este bit é definido para 1 quando ocorre uma condição de interrupção, como as
mencionadas anteriormente, e o respetivo bit de habilitação de interrupção está ativado.
24
Figura 8. Registo de estado
Objetivo: Enviar uma mensagem de texto ("HELLO") por uma linha serial
utilizando o ACIA.
ORG $8000
INIT:
LDAA #$15 ; Configuração do ACIA
STAA $8001
LDX #MSG ; Aponta para a mensagem
SEND_LOOP:
LDAA ,X ; Lê o próximo caractere
BEQ DONE ; Se for zero, fim da string
WAIT_TX:
LDAA $8001 ; Verifica se buffer de transmissão está livre
BITA #$02
BEQ WAIT_TX
25
; Inicialização do ACIA
; Inicializa o ACIA com:
; - 8 bits de dados
; - 1 bit de stop
; - Sem paridade
; - Clock ÷16
; - Interrupção de recepção habilitada
TRANSMIT_CHAR:
LDAA #$41 ; ASCII de 'A'
WAIT_TX_READY:
LDAA $8001 ; Lê registrador de status
BITA #$02 ; Verifica se bit TDRE (bit 1) está em 1
BEQ WAIT_TX_READY ; Espera até o buffer de transmissão estar vazio
STAA $8000 ; Envia o caractere ao registrador de dados
RTS ; Fim da sub-rotina
; Recepção de um caractere
RECEIVE:
WAIT_RX_READY:
LDAA $8001 ; Lê status
BITA #$01 ; Verifica se RDRF (bit 0) está setado
BEQ WAIT_RX_READY
LDAA $8000 ; Lê o dado recebido
26
RTS
ECHO_LOOP:
WAIT_RECEIVE:
LDAA $8001
BITA #$01 ; Verifica se chegou dado
BEQ WAIT_RECEIVE
LDAA $8000 ; Lê o caractere
WAIT_TRANSMIT:
LDAA $8001
BITA #$02 ; Verifica se pode transmitir
BEQ WAIT_TRANSMIT
STAA $8000 ; Envia o mesmo caractere
BRA ECHO_LOOP ; Repete para o próximo
27
9. Conclusão
O ACIA, representado pelo modelo MC6850, é uma solução eficiente e confiável para
comunicação serial assíncrona em sistemas baseados no microprocessador M6800. Sua
arquitetura modular, composta por registradores de controle, buffers de dados,
conversores serial-paralelo e lógica de interrupções, permite ao processador comunicar-
se com periféricos seriais sem sobrecarga significativa.
Com suporte a paridade configurável, bits de parada, controle de fluxo via RTS/CTS
e interrupções automáticas, o ACIA se adapta a diferentes exigências de comunicação,
tornando-se adequado para aplicações como automação industrial, redes de sensores,
modems e terminais seriais. A presença de buffers internos garante operações full-duplex,
minimizando o risco de perda de dados.
Além de sua relevância prática, o ACIA é uma ferramenta pedagógica valiosa. Seu estudo
oferece uma introdução direta à programação de periféricos, ao uso de registradores
mapeados em memória e ao tratamento de erros e interrupções, elementos centrais no
desenvolvimento de sistemas embarcados e interfaces seriais modernas.
Em resumo, o MC6850 continua sendo uma referência sólida no ensino e prática da
comunicação digital, unindo simplicidade de uso com flexibilidade funcional,
características que consolidaram seu uso em diversas gerações de projetos embarcados e
educacionais.
28
10. Referências Bibliográficas
• Bishop, R. (1979). Basic microprocessors and the 6800. Hayden Book Company.
ISBN 0-8104-0758-2.
• Leventhal, L. A. Basic Microprocessors and the 6800. 2.ª ed. Englewood
Cliffs, N.J.: Prentice-Hall, 1986.
• MC6850 ACIA – Beyond Brown] Acesado em:
([Link]
• [A Retro Motorola MC6850 ACIA Baud Rate Generator – Digicool Things].
Acessado em :([Link]
rate-generator/)
29