;******************************************************************************
;* 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.
- retardo: contém os retardos de tempo por SW.
- exibe: contém as rotinas que exibe as informações.
- 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:
Postar um comentário