Total de visitas: 5105
microcontrolador avr
3. AVR AT-90S1200
3.1 caracteristicas
• I/O and Packages
– 15 Programmable I/O Lines
– 20-pin PDIP, SOIC and SSOP
• Operating Voltages
– 2.7 - 6.0V (AT90S1200-4)
– 4.0 - 6.0V (AT90S1200-12)
• Speed Grades
– 0 - 4 MHz, (AT90S1200-4)
– 0 - 12 MHz, (AT90S1200-12)
• Data and Non-volatile Program Memory
– 1K Byte of In-System Programmable Flash
Endurance: 1,000 Write/Erase Cycles
– 64 Bytes of In-System Programmable EEPROM
Endurance: 100,000 Write/Erase Cycles
– Programming Lock for Flash Program and EEPROM Data Security
3.2-COMANDOS E SIGNIFICADO
;====MAIS INPORTANTES===========================================
IN = (In Port ) JOGA VALOR DE UMA POSICAO DE MEMORIA (PORTA) PARA OUTRA (REGISTRADOR)
OUT 0x18,R16 = (JOGA VALOR DO REGISTRADOR R16 NA PORTA PB )
LDI = JOGA VALORES HEXA NOS REGISTRADORES (IMEDIATO)
INC = SOMA 1
DEC = MENOS 1
CPI = COMPARADOR EM RELACAO A UM VALOR
BRNE PC-0x06 = salto condicional- VOLTA 6 POSIÇÕES DE MEMÓRIA
RJMP -0x0F = SALTO INCONDICIONAL, PULA UM NUMERO FIXO DE LINHAS
;======================================================================================
---OUTROS-------------------------------------------------------------------------------
LD = JOGA VALORES HEXA NOS REGISTRADORES,ENDERECAMENTO INDIRETO
MOV = JOGA VALORES (SO REGISTRADORES)
CALL = CHAMAR ROTINA
RCALL = CHAMAR SUB ROTINA
RET = RETORNAR DE SUB ROTINA
CP = COMPARACAO ENTRE REGISTRADORES
CPSE = COMPARA E ARMAZENA.
CLR = COMANDO DE APAGAR
SER = COMANDO PARA SETAR
--------------------------------------------------
.EQU = DEFINE NOMES PARA ENDERECOS
.DEF = DEFINE NOMES PARA REGISTRADORES
.EXIT
-----------------------------------------------------------------------------------
BREQ SALTA SE IGUAL
;-------------------------------------------------------------
PORTA PB è SAIDA ENDEREÇO 0x18
DDRB è SENTIDO DE DADOS ENDEREÇO 0x17
PORTA PB è COMO ENTRADA 0x16
;---------------------------------------------------------------
PORTA PD è SAIDA ENDEREÇO 0x12
DDRB è SENTIDO DE DADOS ENDEREÇO 0x11
PORTA PD è COMO ENTRADA 0x10
;-------------------------------------------------------------
ACIONAR BITS
POR PORTAS ===============================================================
;--LIGA--------------------------------
LDI R16, 0xFF ;VALOR 0 PARA REGISTRADOR
OUT 0x17,R16 ;DEFINE QUAIS BITS SÃO SAIDA OU ENTRADA DA PB
OUT 0x18, R16 ;VALOR DO REGISTRADOR PARA SAIDA PB
;-------------------------------------------
;--desliga--------------------------------
LDI R16, 0x00 ;VALOR 0 PARA REGISTRADOR
OUT 0x17,R16 ;DEFINE QUAIS BITS SÃO SAIDA OU ENTRADA DA PB
OUT 0x18, R16 ;VALOR DO REGISTRADOR PARA SAIDA PB
;-------------------------------------------
;=========================================================================
POR BIT INDIVIDUAL
;=========================================================================
-----------------------------------------------------------------------------------------------------
CBI PORTB ,0 apaga bit
SBI PORTB ,0 set bit
------------------------------------------------------------------------------------------------------
cbi DDRD, 0 ; PINO 0 DE PD COMO ENTRADA
cbi PORTB, 6 ; APAGA PINO 6 DE PB
sbi DDRB, 7 ; PINO 7 DE PB COMO SAIDA
sbi DDRD, 7 ; PINO 7 DE PD COMO SAIDA
;=========================================================================
LER ENTRADAS
.include "1200def.inc"
;====1 saida e 0 entrada========================================================
ldi R16, 0xF0 ;coloca no registrador R16 quais bits são entradas ou saídas
out DDRB, R16 ;define quais bits são entradas ou saídas conforme r16
;========comando “in” Le a entrada ============================================
in R16, 0X16 ; LE as entradas PORTB e guarda no R16
SWAP R16 ;troca de posição os bites de entrada para a saida
out PORTB, R16 ; escreve o conteudo de R16 em PORTB
RJMP 0XFF ;VOLTA TUDO
;=========================================================
.EXIT
===ROTINAS DE TEMPO====================================
;=tempo============================
LDI R27, 0x00 ;çZERA REGISTRADORES
LDI R28, 0x00
LDI R29, 0x00
LDI R30, 0x00
LDI R31, 0x00
NOP
NOP
INC R31
CPI R31,0XFF ;ç 0XFF è 255 DEC è 0,321ms è1,25ns POR NUMERO
BRNE PC-0x03
INC R30
CPI R30,0xFF ;ç 0XFF è 255 DEC è 82ms è 0,321ms POR NUMERO
BRNE PC-0x08
INC R29
CPI R29,0xFF ;ç 0XFF è 255 DEC è 21 SEGUNDOSè 0,082s POR NUMERO
BRNE PC-0x0C
INC R28
CPI R28,0xFF ;ç 0XFF è 255 DEC è 1H 29m è 0,349m POR NÚMERO
BRNE PC-0x10
INC R27
CPI R27,0x10 ;ç10H = 16DEC =24HORAS è1H 29m POR NUMERO èMAXIMO 15,9 DIAS
BRNE PC-0x14
;==================================================================
;///////////////////////////////////PROGRAMA////////////////////////////////
;PISCA PB
;******LIGA*******
LDI R16, 0xFF
OUT 0x17,R16
OUT 0x18,R16
;*****************
;----ROTINA DE TEMPO1-----
NOP
INC R30
CPI R30,0xFF
BRNE PC-0x04
INC R31
CPI R31,0XFF
BRNE PC-0X07
;------------------------
;*******DESLIGA*********
LDI R16, 0x00
OUT 0x18,R16
;**********************
RJMP -0x18 ;VOLTA PARA O INICIO
;///////////////////////////////////PROGRAMA////////////////////////////////
3.3 ESQUEMA PARA PROGRAMACAO (paralela):
3.4 MODULO MINIMO
3.5-PLACA DE EXEMPLO :