Foros de Electrónica

Comunidad de discusión sobre Automatización, Electrónica industrial, Microcontroladores y electrónica digital, Robótica, Domótica, Telemática, Tecnologías móviles, y muchos temas más.




Del PIC al AVR


       



#1  Del PIC al AVR
Meta

Registrado: 20 Ene 2008
Mensajes: 518
Ubicación: 16F84A
citar
Con el PIC 16F84A quiero hacer el mismo programa en ensamblador para el AVR AT90S1200, dice que estos dos microcontroladores serían los más parecidos.

Os dejo un código del 16F84A haber si hay alguien que sepa programarlo en asm para el AT90S1200. (También pueden hacerlo con otro lenguaje, peo preferiría en asm, gracias).

Tengo ganas de aprender los también los AVR, pero hay escasa información sobre ello y en Inglés.

Código: Seleccionar todo
;********************************** Indexado_01.asm *************************************
;
;   ===================================================================
;     Del libro "MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS"
;     E. Palacios, F. Remiro y L. López.      www.pic16f84a.com
;      Editorial Ra-Ma.  www.ra-ma.es
;   ===================================================================
;
; Implementar una tabla de la verdad mediante el manejo de tablas grabadas en ROM.
; Por ejemplo, la tabla será de 3 entradas y 6 salidas tal como la siguiente:
;
;       C  B     A  |   S5   S4   S3   S2   S1   S0
;       -----------|---------------------------
;       0   0   0   |   0    0    1    0    1    0   ; (Configuración 0).
;       0   0   1   |   0    0    1    0    0    1   ; (Configuración 1).
;       0   1   0   |   1    0    0    0    1    1   ; (Configuración 2).
;       0   1   1   |   0    0    1    1    1    1   ; (Configuración 3).
;       1   0   0   |   1    0    0    0    0    0   ; (Configuración 4).
;       1   0   1   |   0    0    0    1    1    1   ; (Configuración 5).
;       1   1   0   |   0    1    0    1    1    1   ; (Configuración 6).
;       1   1   1   |   1    1    1    1    1    1   ; (Configuración 7).
;
; Las entradas C, B, A se conectarán a las líneas del puerto A: RA2 (C), RA1 (B) y RA0 (A).
; Las salidas se obtienen en el puerto B:
; RB5 (S5), RB4 (S4), RB3 (S3), RB2 (S2), RB1 (S1) y RB0 (S0).
;
; ZONA DE DATOS **********************************************************************

   LIST      P=16F84A
   INCLUDE      <P16F84A.INC>
   __CONFIG   _CP_OFF &  _WDT_OFF & _PWRTE_ON & _XT_OSC

; ZONA DE CÓDIGOS ********************************************************************

   ORG    0               ; El programa comienza en la dirección 0.
Inicio
   bsf      STATUS,RP0         ; Acceso al Banco 1.
   clrf   TRISB            ; Las líneas del Puerto B se configuran como salida.
   movlw   b'00011111'         ; Las 5 líneas del Puerto A se configuran como entrada.
   movwf   TRISA
   bcf      STATUS,RP0         ; Acceso al Banco 0.
Principal
   movf   PORTA,W            ; Lee el valor de las variables de entrada.
   andlw   b'00000111'         ; Se queda con los tres bits de entrada.
   addwf   PCL,F            ; Salta a la configuración adecuada.
Tabla
   goto   Configuracion0
   goto   Configuracion1
   goto   Configuracion2
   goto   Configuracion3
   goto   Configuracion4
   goto   Configuracion5
   goto   Configuracion6
   goto   Configuracion7
Configuracion0
   movlw    b'00001010'         ; (Configuración 0).
   goto   ActivaSalida
Configuracion1
   movlw    b'00001001'         ; (Configuración 1).
   goto   ActivaSalida
Configuracion2
   movlw    b'00100011'         ; (Configuración 2).
   goto   ActivaSalida
Configuracion3
   movlw    b'00001111'         ; (Configuración 3).
   goto   ActivaSalida
Configuracion4
   movlw    b'00100000'         ; (Configuración 4).
   goto   ActivaSalida
Configuracion5
   movlw    b'00000111'         ; (Configuración 5).
   goto   ActivaSalida
Configuracion6
   movlw    b'00010111'         ; (Configuración 6).
   goto   ActivaSalida
Configuracion7
   movlw    b'00111111'         ; (Configuración 7).
ActivaSalida
   movwf   PORTB            ; Visualiza por el puerto de salida.
   goto    Principal

   END
   
;   ===================================================================
;     Del libro "MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS"
;     E. Palacios, F. Remiro y L. López.      www.pic16f84a.com
;      Editorial Ra-Ma.  www.ra-ma.es
;   ===================================================================

#2  
Meta

Registrado: 20 Ene 2008
Mensajes: 518
Ubicación: 16F84A
citar
¿Nadie tiene idea del AVR de Atmel en ASM?

Con este tema quería saber si hay gente que sepa defenderse sobre AVR, o al menos esperar que aparezca alguno.

#3  
eidtech

Registrado: 23 Jul 2006
Mensajes: 233
Ubicación: México, DF
citar
http://mx.geocities.com/migsantiagov/avr/index.htm

#4  
Meta

Registrado: 20 Ene 2008
Mensajes: 518
Ubicación: 16F84A
citar
eidtech escribió:
http://mx.geocities.com/migsantiagov/avr/index.htm


Muchas gracias, cuanto más información tengamos, mejor que mejor.

#5  Del PIC al AVR
avr8b

Registrado: 15 Mar 2008
Mensajes: 3
Ubicación: Guadaljara Jalisco
citar
Hola, yo te recomiendo uses el Attiny2313 que es mejor ademas el 1200 ya esta obsoleto, con el 2313 puedes utilizar tablas muy facil con la instruccion LPM, te mando este pequeño programa para ver si te sirve.


.include "tn2313def.inc"

.def temp =r16 ; definicion de registro temporal


start: ldi temp,low(RAMEND)
out SPL,temp ; inicializas el stack pointer


ldi temp,$ff ;carga FF al reg. temp
out PORTB,temp ; todos los pines del PORTB a uno
out DDRB,temp ; sirve para indicar que el port B esta configura como salida


ldi ZH,high(2*tabla) ; se direcciona con el registro Z la tabla
ldi ZL,low(2*tabla) ;

loadbyte:
lpm ; se carga el valor de tabla en r0
tst r0 ; r0=0
breq quit ; si es 0 fin de tabla brinca a quit

out PORTB,r0 ; saca por el PORTB el valor de r0
rcall one_sec_delay ; llamada a un retardo

adiw ZL,1 ; incrementa el apuntador de tabla
rjmp loadbyte


quit: rjmp quit


one_sec_delay:
ldi r20, 20
ldi r21, 255
ldi r22, 255
delay:
dec r22
brne delay
dec r21
brne delay
dec r20
brne delay
ret


tabla:
.db 0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0

#6  
macraig

Registrado: 27 Abr 2007
Mensajes: 141
citar
Programar en asm un avr solo tiene sentido cuando se trata de optimizar secciones de codigo. Un AVR es un micro disenado para trabajar eficientemente con lenguaje C compilado. Te recomiendo que empiezes a usar C con este tipo de micros, la programacion se facilita mucho, y hay muchas librerias de codigo disponibles. Aqui te dejo unos enlaces para empezar...

Compilador en C para AVR
http://winavr.sourceforge.net (funciona con el AVR Studio 4 de atmel)

Guia del principiante
http://www.avrfreaks.net/index.....&id=22
http://www.avrbeginners.net/
http://www.salvitti.it/geo/sequencer/dev_tools/tutorial/GNU_C_Tutorial.html

Foro sobre AVR (lo que necesitas y tambien lo que no necesitas saber ;))
http://www.avrfreaks.net

#7  
avr8b

Registrado: 15 Mar 2008
Mensajes: 3
Ubicación: Guadaljara Jalisco
citar
Hola macraig,

Tu que opinas de lenguaje Basic para el AVR?, por ejemplo he escuchado hablar mucho del Bascom avr.





Saludos...

#8  
macraig

Registrado: 27 Abr 2007
Mensajes: 141
citar
No soy muy fanatico del basic... Sirve para pequenas cosas, algo sucio y rapido. Pero como no es estructurado, dificulta el hacer tareas un poco mas complicadas. Es mi opinion.

C puede parecer dificil, pero en realidad no lo es. Es sencillo y te da todo el control sobre el microcontrolador. Incluso, dentro del programa en C puedes escribir rutinas en assembler en las situaciones en las que necesites optimizar alguna seccion de codigo.

Existen numerosas librerias, que por ejemplo, van desde el manejo de un LCD, hasta la lectura de memorias SD, sistemas operativos en tiempo real, procesamiento de senales, lectura de dispositivos como Discos duros, manejo de archivos en FAT, etc... A tu disposicion si le dedicas algo de tiempo a aprender las sutilezas del lenguaje.

Sin ir mas lejos, uno de los primeros programas en C q hice para un AVR, podia leer un sensor de temperatura con el conversor AD incluido, y mostrar el resultado en un LCD y en un terminal adosado al puerto serie. Procesaba los datos del adc con aritmetica de punto flotante y los mostraba en el terminal.

Y algo muy importante, tanto el compilador como el editor y las librerias los puedes conseguir completamente libres y gratuitos en internet, y con eso puedes hacer lo que enumere arriba y mas... Mientras la version de Bascom sin restricciones sale por algo asi como 79 Euros. Yo prefiero gastar ese dinerito en componentes (ICs, micros, resistencias, etc) ;)

Saludos

#9  
microtronic

Registrado: 25 May 2006
Mensajes: 89
Ubicación: En venezuela
citar
macraig escribió:
No soy muy fanatico del basic... Sirve para pequenas cosas, algo sucio y rapido. Pero como no es estructurado, dificulta el hacer tareas un poco mas complicadas. Es mi opinion.

C puede parecer dificil, pero en realidad no lo es. Es sencillo y te da todo el control sobre el microcontrolador. Incluso, dentro del programa en C puedes escribir rutinas en assembler en las situaciones en las que necesites optimizar alguna seccion de codigo.

Existen numerosas librerias, que por ejemplo, van desde el manejo de un LCD, hasta la lectura de memorias SD, sistemas operativos en tiempo real, procesamiento de senales, lectura de dispositivos como Discos duros, manejo de archivos en FAT, etc... A tu disposicion si le dedicas algo de tiempo a aprender las sutilezas del lenguaje.

Sin ir mas lejos, uno de los primeros programas en C q hice para un AVR, podia leer un sensor de temperatura con el conversor AD incluido, y mostrar el resultado en un LCD y en un terminal adosado al puerto serie. Procesaba los datos del adc con aritmetica de punto flotante y los mostraba en el terminal.

Y algo muy importante, tanto el compilador como el editor y las librerias los puedes conseguir completamente libres y gratuitos en internet, y con eso puedes hacer lo que enumere arriba y mas... Mientras la version de Bascom sin restricciones sale por algo asi como 79 Euros. Yo prefiero gastar ese dinerito en componentes (ICs, micros, resistencias, etc) ;)

Saludos


amigo si me han dicho tambien que estan hecho para trabajar en c....

q opinas del codevision avr?

#10  
macraig

Registrado: 27 Abr 2007
Mensajes: 141
citar
Si puedes pagar los 150 euros por la licencia... Yo prefiero gastar ese dinero en componentes ;).
Ademas, sinceramente no lo he probado. El avrstudio4 + winavr me parece suficiente por el momento. Si tienes ese dinero, tal vez sea mejor invertirlo en un emulador, o un on-chip debugger como el avr-jtagiceII q cuesta como 200 dolares.

Salu2

 Responder



Google
 


 Temas de interés 
No hay mensajes nuevos Entrada/Salida de audio a traves de USB
No hay mensajes nuevos Como separar señales, si son entrada y salida de datos
No hay mensajes nuevos Circuito acondicionador de entrada 4-40mA y salida 0-10 V
No hay mensajes nuevos Conectar salida video de camara a monitor video
No hay mensajes nuevos Circuito con reles para puerto paralelo con salida de 3.3v

Foros de Electronica
|| Cuestiones Elementales de Electrónica || Fuentes de alimentacion || Circuitos de radio || Diseño de circuitos en general ||
|| Sistemas de Audio: Preamplificadores, Ecualizadores || Amplificadores || Reparación || Discusión ||
|| Microcontroladores y sistemas embebidos || Circuitos logicos combinacionales y secuenciales || Interfaces y Programacion || Dudas en general || Sistemas de Video || PC Hardware || Telematica y comunicaciones || Tecnologias moviles || Software Electronico || Robotica, Domotica y Mecatronica || Autotrónica || Automatizacion, Electronica industrial y de Potencia || Documentacion, circuitos y esquemas || Donde Las Ideas Convergen... || Tutoriales y Manuales || Proyectos Prácticos ||