Controla um Comboio. Este módulo tem 4 interfaces:
Este módulo tem uma tabela de endereços, os quais definem qual a operação a ser realizada sobre o mesmo.
Porto |
Tipo |
Byte lido/escrito |
Endereço |
Descrição |
00H |
Linha Superior do LCD |
W |
Caracter em ASCII. Escritas sucessivas vão deslocando os caracteres para a esquerda (capacidade = 40 caracteres). O byte 00H limpa o LCD. |
01H |
Linha Inferior do LCD |
W |
Caracter em ASCII. Escritas sucessivas vão deslocando os caracteres para a esquerda (capacidade = 40 caracteres). O byte 00H limpa o LCD. |
02H |
Barras de Velocidade |
R |
Os 4 bits de maior peso representam a barra de cima. Os 4 bits de menor peso representam a barra de baixo.
Em cada conjunto de 4 bits, o bit de maior peso indica o sentido (0 para frente, 1 para trás) e os restantes 3 bits indicam o valor absoluto da velocidade (0 parado, até 3, velocidade máxima). |
03H |
Teclado |
R |
Botões do Teclado 0 a 7. |
04H |
Teclado |
R |
Botões do Teclado 8 a F. |
05H |
Teclas de Menu |
R |
Os bits 0 a 4 correspondem às teclas Up, Down, Left, Right e Ok, respectivamente. |
06H |
Botões de Pressão (Push Buttons) |
R |
Estado dos botões de pressão (1 = premido, 0 = repouso). |
07H |
Interruptores (Toggle Buttons) |
R |
Estado dos Interruptores (1 = premido, 0 = repouso). |
08H |
LEDs |
W |
Leds do Painel (1 = vermelho, 0 = cinzento). |
09H |
Semáforos (Bi-Colores) |
W |
Os bits 7 a 2 indicam o número do semáforo. Os bits 1 e 0 indicam a cor (00 = cinzento, 01 = vermelho, 10 = verde, 11 = amarelo). |
0AH |
Sinais de Passagem de Nível (Mono-Colores) |
W |
Os bits 7 a 1 indicam o número do Sinal. O bit 0 indica o estado (1 = vermelho, 0 = cinzento). |
0BH |
Agulhas |
W |
Os bits 7 a 2 indicam o número da Agulha. Os bits 1 e 0 indicam o novo estado da Agulha (01 = liga para a esquerda, 10 = liga para a direita, 00 e 11 são indefinidos). O sentido da ligação da Agulha é visto de quem entra pelo ponto comum (i.e. assumindo que a agulha é um Y, entrando por baixo). |
0CH |
Selecção do Comboio e Comando |
W |
Os bits 7 a 4 indicam o número do Comboio. Os bits 3 a 0 indicam o comando (cujo argumento deve ser escrito a seguir no porto 0DH). Os comandos podem ser:
- 0H - Muda Velocidade (incluindo sentido);
- 1H - Muda Luzes;
- 2H até FH - Indefinido.
|
0DH |
Operação sobre Comboio |
W |
O signigicado depende do último comando dado no porto 0CH:
- 0H - O bit 7 é o sentido (0 = para a frente, 1 = para trás) e os bits 6 a 0 são o valor absoluto da velocidade (0 = parado, 3 = velocidade máxima);
- 1H - Apenas interessa o bit de menor peso (0 = apaga a luz, 1 = acende a luz);
- 2H até FH - Indefinido.
Nota: Podem ser dadas várias operações sem mudar o valor no porto 0CH. |
0EH |
Número de Eventos dos Sensores |
R |
O valor lido indica o número de eventos (para ser lidos) na fila de eventos de passagem por sensores. Cada evento corresponde a dois valores no porto 0FH. Duas leituras no porto 0FH consomem um evento (i.e. o porto 0EH passa a ter menos uma unidade).
Uma leitura do porto 0EH não altera o estado da fila destes eventos.
O valor máximo lido neste porto (i.e. tamanho da fila) é estabelecido no ficheiro que define a pista. |
0FH |
Informação do Evento dos Sensores |
R |
A leitura de valores neste porto só é válida se houver eventos para ler. Deve-se verificar o valor indicado pelo porto 0EH antes de ler do porto 0FH. Há uma fila de eventos que permite memorizá-los caso não sejam lidos de imediato.
Uma passagem completa de uma locomotiva por um sensor gera dois eventos, um por cada topo da locomotiva.
Cada passagem por um dos topos da locomotiva gera 2 valores (i.e. bytes) neste porto.
- 1º Byte - Os bits 7 a 5 são 0. Os bits 4 a 1 indicam o número do Comboio. O bit 0 indica qual dos topos passou pelo sensor (0 = frente, 1 = trás);
- 2º Byte - Indica o número do sensor pelo qual o Comboio passou.
|