Implementação do Protocolo 8283 em Telas DWIN como Mestre Utilizando Assembly OS

Para habilitar a verificação de integridade CRC no projeto Assemb, abra o arquivo .asm através do software OS Builder. Remova o caractere de comentário ; das linhas correspondentes à validação. Esta configuração padrão aplica a checksum apenas aos comandos da porta serial 4. Caso a comunicação da porta serial 2 também exija validação, será necessário realizar ajustes adicionais no arquivo de configuração .cfg.

O fluxo de implementação da checksum envolve as seguintes etapas lógicas:

  1. Definição do passo de execução do programa (Step 4).
  2. Leitura do bloco de dados para o rgeistrador alvo (com comprimento definido em R5).
  3. Processamento e validação dos comandos de escrita (0x82).
  4. Processamento e validação dos comandos de leitura (0x83).

Rotinas Utilitárias em Assembly

1. Navegação de Página via Botão

A rotina abaixo verifica o acionamento de um controle de botão na interface DGUS e executa a transição para uma nova página.

;******************************************************************************
; Função: Verifica o acionamento do botão e altera a página ativa.
; Comando de mudança: 5A A5 07 82 0084 5A01 0001 (Muda para página 0x01)
;******************************************************************************
VerificarBotaoPagina:
    LDWR R0, 1004H      ; Endereço do controle de retorno do botão na interface DGUS
    MOVXR R20, 1, 1     ; Lê o valor do botão
    IJNE R20, 0, SairVerificacao
    IJNE R21, 1, SairVerificacao
    
    LDWR R20, 5A01H     ; Cabeçalho do comando de mudança de página
    LDWR R22, 0001H     ; ID da página de destino (Página 1)
    LDWR R0, 0084H      ; Endereço do registrador de controle de página
    MOVXR R20, 0, 2     ; Envia o comando para a tela
    
    ; Limpa o buffer do botão para evitar acionamentos repetidos
    LDWR R0, 1004H
    LDWR R20, 0000H
    MOVXR R20, 0, 1

SairVerificacao:
    RET

2. Rotina de Atraso Curto

Implementação de um ciclo de espera baseado em decremento de registradores para operações que exigem temporização rápida.

;******************************************             
;          Rotina de Atraso Curto
;********************************************  
AtrasoCurto:
    LDWR R60, 80          ; Contador externo do loop de atraso
LoopAtraso:    
    DEC  R61, 0, 1        ; Decrementa contador interno
    IJNE R61, 0, LoopAtraso
    DEC  R60, 0, 1        ; Decrementa contador externo
    IJNE R60, 0, LoopAtraso
    RET

3. Sincronização com Inicialização do Escravo

Garante que o dispositivo periférico (escravo) tenha concluído seu ciclo de inicialização antes de enviar comandos críticos.

;******************************************             
;          Aguardar Inicialização do Dispositivo Escravo
;********************************************  
AguardarEscravo:
    ; Lógica de espera para garantir que o nó escravo esteja pronto
    LDWR R60, 2000        ; Tempo de espera estendido
LoopEspera:    
    DEC  R61, 0, 1
    IJNE R61, 0, LoopEspera
    DEC  R60, 0, 1
    IJNE R60, 0, LoopEspera
    RET

4. Envio de Protocolo Customizado via Botão

Transmite uma sequência de bytes personalizada pela porta serial quando um botão específico é pressionado na interface HMI.

;******************************************             
;          Envio de Protocolo Customizado via Botão
;********************************************  
EnviarProtocoloCustom:
    LDWR R0, 1600H        ; Endereço do controle de botão na DGUS (Valor esperado: 0x005A)
    MOVXR R30, 1, 1       ; Leitura do estado do botão
    IJNE R30, 00H, FimEnvio
    IJNE R31, 5AH, FimEnvio
    
    LDWR R32, CCDDH       ; Dados do protocolo customizado a serem transmitidos
    COMTXI 0, R32, 2      ; Transmite 2 bytes pela porta serial 0
    
    ; Zera o registrador do botão após o envio
    LDWR R0, 1600H
    LDWR R30, 0000H
    MOVXR R30, 0, 1

FimEnvio:
    NOP
    RET

Ao utilizar controles de toque para despachar instruções 0x82 ou 0x83, é obrigatório invocar as rotinas personalizadas (utilizando CALL seguido do nome da função) tanto nos manipuladores dedicados ("Processar instrução 82" / "Processar instrução 83") quanto no loop principal (MAIN). Adicionalmente, se a validação CRC estiver ativa, as novas rotinas de leitura implementadas devem incluir a lógica de verificação de integridade correspondente.

Tags: DWIN DGUS assembly Protocolo 8283 Sistemas Embarcados

Publicado em 10-21 21:34