Microcontroladores PIC en Linux.
¿Quieres reaccionar a este mensaje? Regístrate en el foro con unos pocos clics o inicia sesión para continuar.

ejemplo AVR con ASM

2 participantes

Ir abajo

ejemplo AVR con ASM Empty ejemplo AVR con ASM

Mensaje por aztk Sáb 7 Abr 2012 - 22:08

Mi primer programa para AVR con ensamblador (antes ya había programado un poco pero no cuenta porque ya no me acordaba :p ). Este programita pueden verlo para iniciar su experiencia con estos uC.

El AVR que utilizo es el ATtiny2313. El fichero tn2313def.inc

Código:

; Author: aztk
; Date: April, 2012
; Name: blink_avr.asm
; uC: ATtiny2313
;
; Prende y apaga un LED con una f de 2Hz

.include "tn2313def.inc"

; LED conectado en PORTB,00
.equ portLED   = PORTB
.equ ddrLED   = DDRB
.equ pinLED   = PORTB0

; Tabla de interrupciones
   rjmp   inicio   ;1  RESET
   reti      ;2  INT0
   reti      ;3  INT1
   reti      ;4  TIMER1 CAPT
   reti      ;5  TIMER1 COMPA
   reti      ;6  TIMER1 OVF
   reti      ;7  TIMER0 OVF
   reti      ;8  USART0, RX
   reti      ;9  USART0, UDRE
   reti      ;10 USART0, TX
   reti      ;11 ANALOG COMP
   reti      ;12 PCINT
   reti      ;13 TIMER1 COMPB
   reti      ;14 TIMER0 COMPA
   reti      ;15 TIMER0 COMPB
   reti      ;16 USI START
   reti      ;17 USI OVERFLOW
   reti      ;18 EE READY
   reti      ;19 WDT OVERFLOW

inicio:

   ; Set up the stack
   ldi   r16, LOW(RAMEND)
   out   SPL, r16
   ;ldi   r16, HIGH(RAMEND)   
   ;out   SPH, r16

   ; Definir I/O
   sbi   ddrLED, pinLED   ; pinLED como salida

; Progrma principal
main:
   sbi   portLED, pinLED
   rcall   Delay_1000ms
   cbi   portLED, pinLED
   rcall   Delay_1000ms
   rjmp   main
; END

; SUBRUTINAS

; Generated by delay loop calculator
; at http://www.bretmulvey.com/avrdelay.html
;
; Delay 8 000 000 cycles
; 1000ms at 8.0 MHz
Delay_1000ms:
    ldi  r18, 41
    ldi  r19, 150
    ldi  r20, 128
L1: dec  r20
    brne L1
    dec  r19
    brne L1
    dec  r18
    brne L1
    ret

Para ensamblar uso avra:

Código:
$ avra blink_avr.asm

Para programar uso avrdude (y pickit2):

Código:
$avrdude -p t2313 -c pickit2 -e -U flash:w:blink_avr.hex

Y dado que utilizo el oscilador interno a 8MHz, configuro el AVR con el siguiente valor de los fuses:

Código:
$ avrdude -p t2313 -c pickit2 -U lfuse:w:0xe4:m

El diagrama de conexiones (muy fácil):

ejemplo AVR con ASM Attiny23130x00

Saludos!

aztk
Participante Activo
Participante Activo

Mensajes : 52
Fecha de inscripción : 08/06/2009
Edad : 35
Localización : Tenochtitlan

Volver arriba Ir abajo

ejemplo AVR con ASM Empty Re: ejemplo AVR con ASM

Mensaje por WaRaW Mar 22 Mayo 2012 - 15:52

Saludos aztk, disculpa la molestia pero estoy haciendome un lio intentando aprender a programar en los micros de atmel, en concreto un at89s52.

tendras algun material donde explique un poco el tema, bancos de memorias (si tiene), cómo leer y escribir en los puertos, usar los timers, configuraciones y demas, como se estructura un programa en ensamblador? cuales son las palabras reservadas, etc, etc, algo introductorio pero explicado. he tomado el datasheet en seco y no me ha quedado claro.

de ante mano gracias por cualquier orientacion que puedan proporcionar. (como ide tengo M-IDE51 para win por el momento, luego veré como hacer todo desde mint)

WaRaW
Participante
Participante

Mensajes : 27
Fecha de inscripción : 18/04/2010

Volver arriba Ir abajo

Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.