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

USART (AVR - PC) ATtiny2313 en ASM

Ir abajo

USART (AVR - PC) ATtiny2313 en ASM Empty USART (AVR - PC) ATtiny2313 en ASM

Mensaje por aztk Dom 8 Abr 2012 - 22:40

Una de las primeras cosas que se aprende con un uC o lenguaje de programación es la comunicación serie. Y aquí un pequeño programa que hice, éste actúa como un eco, lo que recibe lo vuelve a transmitir.

Esta interesante el uso de AVR, cada vez me laten más Very Happy

Código:

; Author: aztk
; Date: April, 2012
; Name: serial_echo.asm
; uC: ATtiny2313
;
; Ejemplo de USART, configurado como eco
;    Baud rate: 9600
;    Data bits: 8
;    Stop bits: 1
;
; fosc = 8MHz (oscilador interno)
; lfuse = 0xe4

.include "tn2313def.inc"

; 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
   rjmp   int_RX   ;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
   

   ; USART setup
   ; Set baud rate (9600 bauds, fosc = 8MHz, U2X = 1)
   ldi   r16, 0
   out   UBRRH, r16
   ldi   r16, 103
   out   UBRRL, r16
   ; U2X = 1
   ldi   r16, (1 << U2X)
   out   UCSRA, r16
   ; Enable receiver and transmitter
   ; Enable RX complete interrupt
   ldi   r16, (1 << RXCIE) | (1 << RXEN) | (1 << TXEN)
   out   UCSRB, r16
   ; Set frame format: 8data, 1stop bit
   ldi   r16, (3 << UCSZ0)
   out   UCSRC, r16

   ; Global interrupt enable
   sei

; Progrma principal
main:
   nop
   rjmp   main
; END

; ISR

int_RX: ; Lee el dato recibido por USART
   in   r17, UDR
   rcall   TX_data
   reti

; SUBRUTINAS

TX_data: ; Transmite un dato por USART
   sbis   UCSRA, UDRE
   rjmp   TX_data
   out   UDR, r17
   ret

Para ensamblar y programar en el uC:

Código:

$ avra serial_echo.asm
$ avrdude -p t2313 -c pickit2 -e -U flash:w:serial_echo.hex -U lfuse:w:0xe4:m

El diagrama de conexiones:

USART (AVR - PC) ATtiny2313 en ASM Serialecho

Saludos!

aztk
Participante Activo
Participante Activo

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

Volver arriba Ir abajo

Volver arriba

- Temas similares

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