Conceitos

Nesta página explicitaremos as técnicas e as práticas utilizadas na programação mais profundamente.

;******************************************************************************
;* circuito integrado AT32 *
;* PDIP - 40 *
;******************************************************************************
As configurações dos pinos ficam assim:
;* PB 0  (XCK/T0)  PB0                  PA0 (ADC0)        TRM        *
;* PB 1  (T1)   PB1                           PA1 (ADC1)        LDR        *
;* PB 2  (INT2/AIN0) PB2               PA2 (ADC2)         ELETR       *
;* PB 3  (OC0/AIN1)  PB3               PA3 (ADC3)         PONTA       *
;* PB 4  (SS)   PB4                           PA4 (ADC4)         PA 4       *
;* PB 5  (MOSI)   PB5                      PA5 (ADC5)         LINHA       *
;* PB 6  (MISO)   PB6                      PA6 (ADC6)         LCD_RS       *
;* PB 7  (SCK)   PB7                        PA7 (ADC7)         WP        *
;* #       RESET                                 AREF                    #      *
;* #       VCC                                     GND                     #      *
;* #       GND                                    AVCC                   #      *
;* #      XTAL2                                 PC7 (TOSC2)       X2-B       *
;* #      XTAL1                                 PC6 (TOSC1)       X2-A       *
;* RxD (RXD)   PD0                        PC5 (TDI)            LCD_LUZ       *
;* TxD (TXD)   PD1                         PC4 (TDO)          LCD_EN       *
;* PD 2  (INT0)   PD2                      PC3 (TMS)           74164_dado      *
;* INT_TCL (INT1)   PD3               PC2 (TCK)           74164_clk      *
;* PD 4  (OC1B)   PD4                     PC1 (SDA)          SDA        *
;* PD 5  (OC1A)   PD5                    PC0 (SCL)           SCL        *
;* PD 6  (ICP1)   PD6                      PD7 (OCR2)        BUZZER       *
;*----------------------------------------------------------------------------*
;* No bit de configuração: nível lógico 1 = saída  e  nível lógico 0 = entrada               *
;******************************************************************************
; S = saída
; E = entrada
; R = pull-up
; n = normal          não alterado pelo programa
;******************************************************************************
;
;********************************************************************************
;* RAM                                 *
;* reg  0x00 - 0x1f                *
;* e/s  0x20 - 0x5f                 *
;* sram 0x60 - 0xdf               *
;********************************************************************************
;
;********************************************************************************
; As variáveis são declaradas em blocos de 10 memórias para serem gerados os cadeias de configuração indexada. É inserido nesta tabela um byte para posição de memória.
;
; estrutura das mensagens
; ID, nome + EM, cod + EM, depto + EM, 88:10:12 + EM, 16/05/07 + EM, SOH, EOT
;********************************************************************************
;
tratamento das mensagens
;********************************************************************************
; Definição dos identificadores para as mensagens iniciais, *** complexo agora simples depois ***
.equ MSG_inicio  =       3                               ; tem que ser no mímimo 3
.equ MSG_msgbv  =      MSG_inicio + 0
.equ MSG_facii  =         MSG_inicio + 1
.equ MSG_hwvrs  =      MSG_inicio + 2
.equ MSG_fwvrs  =      MSG_inicio + 3
.equ MSG_prg  =          MSG_inicio + 4
.equ MSG_tan  =          MSG_inicio + 5
.equ MSG_lnh1  =        MSG_inicio + 6
;********************************************************************************
;* Rotinas para o tratamento das mensagens.
;* rot_msgXXX:  ldi r18, MSG_xxx        ; id da mensagem xxx   *
;*                          rcall rot_pre_xxx          ; chama a rotina correspondente  *
;*                          ret
;*
;* rot_pre_xxx:    ldi Zh, high(TAB_xxx)   ; define a tabela xxx   *
;*                          ldi Zl, low(TAB_xxx)                                            *
;*                          rcall mensageiro             ; exibe mensagens
;*                          ret
;********************************************************************************
;* MSG_xxx, fi_L1C1, 16, "texto xxx ", SOH, EOT *
;* 1                 2             3      4                 5         6 *
;*
;* 1 -- identificador
;* 2 -- posição inicial no visor
;* 3 -- tamanho da cadeia, segurança do sistema, será sempre o tamanho máx. de colunas do visor
;* 4 -- cadeia da mensagem
;* 5 -- final de linha
;* 6 -- final da cadeia
;*
;* Total de 20 caracrteres por linha. *
;* OBS.: Em função da engenharia do HW as cadeias devem ser compostas de número par de bytes *
;*
MSG_INI:   .DB MSG_msgbv,  fi_L1C1,16,  "BEM VINDO a IHM ",            fi_SOH
                    .DB MSG_facii,      fi_L2C1,16,  " C.C. DA FAC-II ",                  fi_SOH
                    .DB MSG_hwvrs,   fi_L1C1,16,  "HW versao 1.01  ",                   fi_SOH
                    .DB MSG_fwvrs,    fi_L2C1,16,  "FW versao 1.01  ",                   fi_SOH
                    .DB MSG_prg,        fi_L1C1,16,  "PROJETADO por   ",              fi_SOH
                    .DB MSG_tan,        fi_L2C1,16,  "UBIRATAN UAATSIM",       fi_SOH
                    .DB MSG_lnh1,      fi_L1C1,16,  "PIC-2007 FAC2 CC",              fi_SOH
                    .DB EOT, EOT
;********************************************************************************
;  Particularidades
;
Ao iniciar o desenvolvimento do programa em assembly surge alguns fatores relevantes e de conceito muito específico que pode se tornar confusos. Peculiaridade do assembly pois linguagem de médio e alto nível tem tratamento para tal e se torna muitas vezes imperceptível ao programador ou muitas vezes já tem imlementado a solução ou tem ferramentas próprias.
Este problemas aparecem em: 1- geração de retardo, 2- na exibição de informações e 3- na conversão de dados entre as bases numéricas.
  1. retardo: contém os retardos de tempo por SW.
  2. exibe: contém as rotinas que exibe as informações.
  3. conversao: contém as rotinas que faz a converção entre as bases numéricas.
;
 Há também questões de HW específicas como o agrupamento em pares dos DBs.
.

Nenhum comentário: