Departament de Microelectrònica i Sistemes Electrònics

AVR i FONAMENTS DE COMPUTADORS
Enginyeria en Informàtica (ETSE)

exemple d'ús de taules amb la SRAM

El programa llegeix un conjunt de dades d'una taula emmagatzemada en la SRAM i les volca pel pord de sortida PORTD

Funcionalment, i connectant un conjunt de leds al port, es mostra una seqüència d'encesa/apagada dels leds.









.INCLUDE "m128def.inc"
.DEF srri = R10 ; registre temporal
.DEF temp = R16 ; registre temporal

.ORG 0x0
     rjmp inici
.ORG 0x18
     rjmp int_cmp1A

inici:
     ldi YH, HIGH(RAMEND)
     ldi YL, LOW(RAMEND)
     out SPH, YH
     out SPL, YL
     ser temp
     out DDRD, temp


     ldi temp, (1<<WGM12)|(1<<CS12)
     out TCCR1B, temp
     ldi temp, high(6250)
     out OCR1AH, temp
     ldi temp, low(6250)
     out OCR1AL, temp
     ldi temp, (1<<OCIE1A)
     out TIMSK, temp
     sei

main:
     ldi zh, high(2*taula)
     ldi zl, low(2*taula)
     ldi temp, 0
loop:cpi temp, 30
     brne loop
rjmp main

int_cmp1A:
     in srri, SREG
     lpm R0, Z+
     out PORTD, R0
     inc temp
     out SREG, srri
     reti

taula:
     .DB 0xFF, 0x7F, 0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x01
     .DB 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F, 0xFF, 0xFE
     .DB 0xFC, 0xF8, 0xF0, 0xE0, 0xC0, 0x80, 0xC0, 0xE0
     .DB 0xF0, 0xF8, 0xFC, 0xFE

; GENERACIÓ DE LLUMETS EN LEDS
; Joan Oliver
; Universitat Autònoma de Barcelona
;
; Retard d'1Hz.
; Treballant amb Timer1, mode CTC
; Sortida per OC1A (PORTB.5)






rutina d'inici del programa

; rutina int'timer1_compA

;-------INICI--------------------------------------------------------

; inicialització stack



; PORTD com a sortida

;-------SETUP TIMER1-------------------------------------------------
; mode CTC i prescaler=256 => 10Hz (ck0=16MHz)
; comparació a 12500



; activació interrupció per comparació en registre A




;-------PROGRAMA PRINCIPAL--------------------------------------------
; inicialització apuntador Z






;-------INT'TIMER1_CMP_A----------------------------------------------

; càrrega a R0 del valor de la taula apuntat per Z i increment de Z
; mostrar valor R= en sortida




;-------TAULA---------------------------------------------------------


WcN - AVR i Fonaments de computadors -> Taules en SRAM