Abaixo está um programa estruturado e comentado em assembly 8085 implementando um contador up BCD (Binary-Coded Decimal) exibido via controlador programável de teclado/display 8279. O código assume o 8279 mapeado para portas I/O 10H–13H (configuração típica).
ORG 1000H ; Endereço inicial do programa ; INICIALIZAÇÃO DO 8279 INIT_8279: MVI A, 00H ; Set modo: apenas display, 8 dígitos, entrada à esquerda OUT 13H ; Porta de controle (13H) MVI A, 80H ; Limpa display, sem matriz sensor OUT 13H MVI A, 27H ; Prescaler clock para scan 100kHz OUT 13H RET ; PROGRAMA PRINCIPAL MAIN: CALL INIT_8279 ; Inicializa 8279 LXI H, 0000H ; HL = contador BCD (L=unidades, H=dezenas) MVI B, 00H ; Contador de delay COUNT_LOOP: CALL DISPLAY_BCD ; Mostra contagem atual CALL DELAY ; Delay visível (~0.5 seg) CALL INCREMENT_BCD ; Incrementa contador BCD JMP COUNT_LOOP ; Repete indefinidamente ; INCREMENTO BCD COM TRATAMENTO DE CARRY INCREMENT_BCD: MOV A, L ; Carrega dígito unidades ADI 01H ; Adiciona 1 DAA ; Decimal Adjust Accumulator (correção BCD) MOV L, A ; Armazena unidades JNC INC_DONE ; Sem carry? Pronto MOV A, H ; Carrega dígito dezenas ADI 01H ; Adiciona carry DAA ; Correção BCD MOV H, A ; Armazena dezenas INC_DONE: RET ; EXIBE VALOR BCD NO 8279 (2 DÍGITOS MAIS À DIREITA) DISPLAY_BCD: MOV A, L ; Dígito unidades ANI 0FH ; Mascara nibble inferior OUT 10H ; Porta dados A (display mais à direita) MOV A, H ; Dígito dezenas ANI 0FH OUT 10H ; Próximo dígito à esquerda RET ; DELAY DE SOFTWARE SIMPLES (~0.5 seg @ 3MHz) DELAY: LXI D, 0FFFFH ; Contagem máxima de delay DLY_LOOP: DCX D ; Decrementa DE MOV A, D ORA E ; Verifica se zero JNZ DLY_LOOP RET END
DAA (Decimal Adjust Accumulator) — Essencial para aritmética BCD. Ajusta resultado ALU para BCD válido após ADD/ADI.OUT 10H — Escreve na RAM do display. 8279 auto-incrementa posição do display conforme configuração de modo.Garanta que RESET do 8279 esteja ligado ao reset do sistema, CLK corresponda à frequência do 8085 (tipicamente 3MHz), e saídas do display (A0–A3, B0–B3) conectem a drivers 7-segmentos com displays common-anode.
DELAY para contagem mais rápida/lentaEste programa demonstra aritmética BCD fundamental, interface com 8279 e atualização de display em tempo real — habilidades centrais para sistemas embarcados baseados em 8085.
Tecnologia Eletrônica © [www.351231.com]