microcontrolador avr

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

 

 

 pin

 

 

 

 

 

 

 

 

 

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):

 

 pa

 

 

 

 

 

 

 

 

3.4 MODULO MINIMO

 g

 

 

3.5-PLACA DE EXEMPLO :