Autor Tema: Pasar de assembler a hexal  (Leído 14369 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado michy

  • PIC10
  • *
  • Mensajes: 18
Pasar de assembler a hexal
« en: 20 de Enero de 2012, 02:24:02 »
hola chicos necesito ayudar para pasar de assembler a hexal este programa...osea la compilacion me lo toma y todo lo demas, lo que me falta que me genere el archivo hexal y no lo puedo generar en studio avr 5 me dice que le falta el main me e vuelto loco buscando sin ningun resultado.ustdes serian tan amables de pasarmelo a hexal o decirme que parametro tengo que cambiar para poder generar el hexal.los archivos que me generan es makefile y makedep.mk ntre otros.

desde ya gracias

Código: [Seleccionar]
/*
 * AVRAssembler2.asm
 *
 *  Created: 03/01/2012 3:27:39
 *   Author: karlos
 */


;/* reassembly of "traba.hex.txt"
; created by ReAVR 2.4
; at 2012/01/03 - 03:19:25
; for Atmel AVR assembler
---------------------------------------
.cseg
.org 0x0000
;---------------------------------------
; byte constants:

.equ k00 = 0x00 ;
.equ k01 = 0x01 ;
.equ k02 = 0x02 ;
.equ k04 = 0x04 ;
.equ k08 = 0x08 ;
.equ k0C = 0x0C ;
.equ k0E = 0x0E ;
.equ k0F = 0x0F ;
.equ k11 = 0x11 ;
.equ k14 = 0x14 ;
.equ k18 = 0x18 ;
.equ k1B = 0x1B ;
.equ k1E = 0x1E ;
.equ k1F = 0x1F ;
.equ k20 = 0x20 ; ' '
.equ k25 = 0x25 ; '%'
.equ k26 = 0x26 ; '&'
.equ k2E = 0x2E ; '.'
.equ k31 = 0x31 ; '1'
.equ k32 = 0x32 ; '2'
.equ k3E = 0x3E ; '>'
.equ k3F = 0x3F ; '?'
.equ k42 = 0x42 ; 'B'
.equ k46 = 0x46 ; 'F'
.equ k48 = 0x48 ; 'H'
.equ k4D = 0x4D ; 'M'
.equ k52 = 0x52 ; 'R'
.equ k58 = 0x58 ; 'X'
.equ k5B = 0x5B ; '['
.equ k5C = 0x5C ; '\'
.equ k5E = 0x5E ; '^'
.equ k60 = 0x60 ; '`'
.equ k61 = 0x61 ; 'a'
.equ k64 = 0x64 ; 'd'
.equ k65 = 0x65 ; 'e'
.equ k66 = 0x66 ; 'f'
.equ k77 = 0x77 ; 'w'
.equ k7F = 0x7F ; ''
.equ k80 = 0x80 ;
.equ k82 = 0x82 ;
.equ k87 = 0x87 ;
.equ k90 = 0x90 ;
.equ k98 = 0x98 ;
.equ kA0 = 0xA0 ; ' '
.equ kC2 = 0xC2 ; 'Â'
.equ kDF = 0xDF ; 'ß'
.equ kE0 = 0xE0 ; 'à'
.equ kFF = 0xFF ; 'ÿ'
;
; io register addresses:
;
.equ p10 = 0x10
.equ p11 = 0x11
.equ p12 = 0x12
.equ p3D = 0x3D
;
; pointer offsets:
;
;
; bit numbers
;
.equ b0 = 0x00
.equ b1 = 0x01
.equ b2 = 0x02
.equ b3 = 0x03
.equ b4 = 0x04
.equ b5 = 0x05
.equ b6 = 0x06
.equ b7 = 0x07
;---------------------------------------
;
L0000:
rjmp _reset ; L0016
subi r20,k87
cpi r19,k82
sbci r18,k7F
cpi r21,k48
and r3,r6
ori r20,kC2
ori r22,k3F
ori r22,k5B
and r7,r2
andi r23,k77
mov r7,r23
andi r22,k46
ori r22,k31
ori r22,k98
ori r22,k5C
ori r18,k3E
ori r22,kDF
or r2,r0
cpi r21,k26
cpi r18,k0E
or r19,r0
;
_reset:
; L0016:
cli
ldi r17,kDF
out p3D,r17
cbi p11,b0
cbi p11,b2
cbi p11,b4
sbi p11,b5
sbi p12,b5
ldi r17,k00
ldi r29,k00
ldi r28,k60
L0021:
st Y+,r17
cpi r28,kE0
brcs L0021
cpi r29,k00
brcs L0021
L0026:
ldi r26,k60
ldi r18,k04
L0028:
rcall L00C2
cpi r16,k48
brne L0028
st X+,r16
L002C:
rcall L014D
rcall L00C2
st X+,r16
dec r18
brne L002C
ldi r26,k61
ld r17,X+
rcall L00C2
cp r17,r16
brne L0026
ldi r26,k65
st X+,r16
L0038:
sbis p10,b0
rjmp L0038
ldi r26,k61
ld r17,X+
cpi r17,k42
breq L004D
cpi r17,k5E
breq L004F
cpi r17,k58
breq L004E
ldi r26,k64
ld r17,X+
L0044:
cpi r17,k00
breq L0026
L0046:
rcall L00C2
rcall L0151
cli
cli
dec r17
brne L0046
rjmp L0026
L004D:
rjmp L0075
L004E:
rjmp L0050
L004F:
rjmp L0062
L0050:
ldi r17,k0C
L0051:
rcall L00C2
rcall L014D
dec r17
brne L0051
L0055:
sbis p10,b0
rjmp L0055
L0057:
sbic p10,b0
rjmp L0057
sbi p11,b5
cbi p12,b5
ldi r16,k01
rcall L00F2
ldi r17,k1B
rcall L014E
sbi p11,b5
sbi p12,b5
rjmp L0026
L0062:
ldi r26,k64
ld r17,X+
cpi r17,k11
breq L0067
rjmp L0044
L0067:
ldi r17,k11
L0068:
sbis p10,b0
rjmp L0068
L006A:
sbic p10,b0
rjmp L006A
sbi p11,b5
cbi p12,b5
ldi r16,k00
rcall L00F2
sbi p11,b5
sbi p12,b5
dec r17
brne L0068
rjmp L0026
L0075:
ldi r26,k64
ld r17,X+
cpi r17,k66
brne L007A
rjmp L0026
L007A:
sbi p11,b5
sbi p12,b5
rcall L014D
rcall L00C2
dec r17
cpi r16,k90
breq L0082
rjmp L0026
L0082:
rcall L014D
rcall L00C2
dec r17
rcall L014D
rcall L00C2
dec r17
cpi r16,k42
breq L008D
cpi r16,k52
breq L008D
rjmp L0026
L008D:
rcall L014D
rcall L00C2
dec r17
cpi r17,k02
brne L008D
rcall L014D
L0093:
sbis p10,b0
rjmp L0093
L0095:
sbic p10,b0
rjmp L0095
ldi r25,k1E
rcall L014E
sbi p11,b5
cbi p12,b5
sbi p11,b4
sbi p12,b4
ldi r25,k82
rcall L014E
ldi r25,k82
rcall L014E
sbi p12,b4
cbi p11,b4
sbi p11,b5
sbi p12,b5
ldi r25,k0E
rcall L014E
L00A7:
sbis p10,b0
rjmp L00A7
rcall L014D
dec r17
brne L0093
L00AC:
sbis p10,b0
rjmp L00AC
L00AE:
sbic p10,b0
rjmp L00AE
sbi p11,b5
cbi p12,b5
ldi r16,k90
rcall L00F2
sbi p11,b5
sbi p12,b5
L00B6:
sbis p10,b0
rjmp L00B6
L00B8:
sbic p10,b0
rjmp L00B8
sbi p11,b5
cbi p12,b5
ldi r16,kA0
rcall L00F2
sbi p11,b5
sbi p12,b5
cli
rjmp L0026
L00C2:
sbis p10,b0
rjmp L00C2
L00C4:
sbic p10,b0
rjmp L00C4
ldi r25,k0F
L00C7:
dec r25
brne L00C7
nop
ldi r16,k01
ldi r25,k1F
L00CC:
dec r25
brne L00CC
in r24,p10
lsr r24
rol r16
ldi r25,k1E
brcc L00CC
com r16
nop
ldi r25,k2E
L00D6:
dec r25
brne L00D6
L00D8:
sbis p10,b0
rjmp L00D8
ret
; pc=0xDB(0x1B6)
;
L00DB:
sbis p10,b4
rjmp L00DB
L00DD:
sbic p10,b4
rjmp L00DD
ldi r25,k02
L00E0:
dec r25
brne L00E0
ldi r16,k01
L00E3:
ldi r25,k20
L00E4:
dec r25
brne L00E4
clc
sbis p10,b4
sec
rol r16
brcc L00E3
nop
ldi r25,k80
L00ED:
dec r25
brne L00ED
L00EF:
sbis p10,b4
rjmp L00EF
ret
; pc=0xF2(0x1E4)
;
L00F2:
sbis p10,b0
rjmp L00F2
sbi p11,b0
cbi p12,b0
ldi r18,k08
clr r24
ldi r25,k14
L00F9:
rcall L014E
nop
rol r16
brcs L0120
nop
sbi p12,b0
rjmp L0100
L0100:
adc r24,r25
andi r24,k01
dec r18
ldi r25,k18
nop
brne L00F9
rcall L014E
rjmp L0108
L0108:
ror r24
brcs L011E
nop
sbi p12,b0
rjmp L010D
L010D:
ldi r25,k1B
rcall L014E
nop
sbi p12,b0
ldi r25,k25
rcall L014E
nop
L0114:
sbis p10,b4
rjmp L0114
L0116:
sbic p10,b4
rjmp L0116
sbi p11,b5
sbi p12,b5
rjmp L011B
L011B:
cbi p11,b0
cbi p12,b0
ret
; pc=0x11E(0x23C)
;
L011E:
cbi p12,b0
rjmp L010D
L0120:
cbi p12,b0
rjmp L0100
L0122:
sbis p10,b4
rjmp L0122
sbi p11,b4
ldi r25,k04
rcall L014E
rjmp L0128
L0128:
cbi p12,b4
rjmp L012A
L012A:
rjmp L012B
L012B:
nop
ldi r18,k08
clr r24
L012E:
ldi r25,k18
rcall L014E
nop
rol r16
brcs L014B
nop
sbi p12,b4
rjmp L0136
L0136:
adc r24,r25
andi r24,k01
dec r18
brne L012E
ldi r25,k18
rcall L014E
rjmp L013D
L013D:
ror r24
brcs L0149
nop
sbi p12,b4
rjmp L0142
L0142:
ldi r25,k32
rcall L014E
nop
rjmp L0146
L0146:
sbi p12,b4
cbi p11,b4
ret
; pc=0x149(0x292)
;
L0149:
cbi p12,b4
rjmp L0142
L014B:
cbi p12,b4
rjmp L0136
L014D:
ldi r25,k4D
L014E:
dec r25
brne L014E
ret
; pc=0x151(0x2A2)
;
L0151:
ldi r25,k80
rjmp L014E
ldi r22,kFF
ldi r24,k00
lsr r22
brcs L0157
L0157:
lsr r22
brcc L015B
nop
rjmp L015B
L015B:
inc r22
inc r24
L015D:
nop
dec r22
brne L015D
nop
ldi r22,k3F
dec r24
brne L015D
ret
; pc=0x165(0x2CA)
;
; last flash byte address = 0x02C9
; last flash word address = 0x0164
;---------------------------------------
;---------------------------------------
#'*/
 
« Última modificación: 25 de Enero de 2012, 13:18:25 por stk500 »

Desconectado stk500

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4923
Re: Pasar de assembler a hexal
« Respuesta #1 en: 20 de Enero de 2012, 02:34:50 »
Hola michy y bienvenido a nuestros Foro todopic, tal como plantea tu mensaje me demuestra que eres un novato y solo te recomendaria que leas son los mensaje de nuestros Subforo ahi encontrara muchas informacion de lo que busca, si tiene algunas dudas entonce escribe un nuevo mensaje sobre tus dudas.
un gran saludos

Desconectado Belgitaes

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 215
Re: Pasar de assembler a hexal
« Respuesta #2 en: 20 de Enero de 2012, 19:25:42 »
Haber
Se Supone Que Lo Que Has Hecho Es Utilizar El Programa ReAVR 2.4
Ese Programa Es Un Desemsamblador De Archivos .Hex

Asi Que Para Que Te Salga Este Codigo Expuesto Lo Habras
Tenido Que Hacer A Traves El Codigo .Hex
Lo Que No Entiendo Entonce Porque Quieres Compilarlo Otra Vez
O Es Un Desemblado Y Lo Quieres Convertir A Archivo .Hex ?

Primero De Que Micro Se Trata ??
Vale Es Un Avr Pero Cual Es ?
Segundo Para Poder Compilar Con AvrStudio
Tienes Que Poner El Micro Que Utiliza
Es Decir El Main
Que Es El Punto De Partida De Cualquier Programa

Esto Seria Un Ejemplo Para Un Mega8

; Declaraciones estandar para este micro Atmega8:
   .include "m8def.inc"

Desconectado michy

  • PIC10
  • *
  • Mensajes: 18
Re: Pasar de assembler a hexal
« Respuesta #3 en: 20 de Enero de 2012, 21:17:54 »
claro belgitaes, lo desamble. osea en palabras utilizo el attiny 2313 osea que este pregrama va correr con ese micro al compilarlo no me larga ningun otro herror que solamente el main y que se encuentra en la linea 52, segun el studio 5, lo que quiero es pasar el assembler de este programa al hexal. por que solo tengo el assembler y no tengo el hexal.lo que me sale arriba que utilize un dessamblador es un agregado.
x las dudas si faltava algo o x si funcionava.
ustedes no serian tan amable de pasarme el assembler de ese programa a hexal.
 y mi otra duda es que cuando compilo me sale en la carpeta default: makefile, makedep.mk, avrgc.o
avrc.map, avrgc.d
me tira eso cuando hago la compilacion o build pero no me sale el hexal para poder meterlo al micro.

desde ya gracias a todos por su respuestas.

Desconectado stk500

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4923
Re: Pasar de assembler a hexal
« Respuesta #4 en: 21 de Enero de 2012, 02:09:11 »
Hola Michy, por lo que nos demuestra no eres capaz de leer, nuestros amigo Belgitaes te lo esta explicando, y todos estos no es solo de pasar el assembler al Hex, eso se llama compilar, por eso te aconsejo que lea, joder esta dificil leer!!! perdona mi expresion, pero es que tu novatada lo que busca es que te resuelvan el programa sin tu comprender nada. si pusiera detalle del programa, todos sus archivos asi se podria explicarte porque te da error, como tu explicacion de los archivos que te genera, si usa el Studio4 claro que deberia tambien instalar el AVRGCC y seguir los paso de crear un proyectos. y por favor cuando suba o ponga un archivo dale al simbolo de arriba que pone insertar codigo (code)--- (code)          asi se leeria mejor el codigo , ok

Saludos

Desconectado michy

  • PIC10
  • *
  • Mensajes: 18
Re: Pasar de assembler a hexal
« Respuesta #5 en: 21 de Enero de 2012, 09:56:59 »
hola stk 500

tengo cargado el avrgcc en ambos estudios 4 y 5, e leido y seguido los pasos, tambien puse el main al comienzo del programa pero me tira ese error. dessamble un programa que estava en hexal para comprar y lo mismo me tira ese herror.
seguire intentando para ver cual sera el error por el cual cuando compilo y no me tira el hexal.
introdusi el main con el micro que voy a utilizar de esta forma .include "attiny2313def.inc"

Desconectado stk500

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4923
Re: Pasar de assembler a hexal
« Respuesta #6 en: 21 de Enero de 2012, 10:21:19 »
Hola Michy, pues me imagino que son vario archivos, porque no pone todos el codigo completo y te lo miro?
algo esta haciendo tu mal, si te compila bien el Hex debe estar en la carpeta donde elegiste del programa que compilaste, o con el AVRstudio solo o el AVRGCC, normalmente para usar Assembler no necesita el AVRGCC, eso lo hace solo el AVRtudio4, asi que si iniciaste tu proyecto diciendole al AVRstudio que lo haga con AVRGCC claro que te va a tirar error, cuando inicia un proyecto con el AVRstudio lo primero que te pregunta con que compilador y te debe salir los dos
AVRGCC o solo Atmel AVR Asembler.
te explico, si ya lo ha hecho abre el AVRstudio de nuevo, dale un Clip a New proyecto aqui te sale las dos opciones que te comento, luego le da a Atmel AVR Assemnbler y donde pone Project name  logico el nombre del archivo ,donde pone initial file le pone el nombre de codigo del assembler donde te sale LOCATION(Localizacion)  es  ruta del archivo donde tiene el codigo en Assembler lo busca y le da a NEXT te sale otra ventana para elegir el procesor que va a usar y le la a finish, una vez esto te sale el editor, arriba le la a compilar , si te lia es mejor, dime donde te lia.
Saludos

Desconectado Belgitaes

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 215
Re: Pasar de assembler a hexal
« Respuesta #7 en: 21 de Enero de 2012, 10:30:40 »
A Ver Porque No Lo Haces Manualmente En Assembler
Con El AvrStudio Ya Que Lo Estas Utilizando
Y Ademas Tienes El Desemblado
Mira Es Facil
Abres El AvrStudio Y Tica En New Project
Tica En Atmel AVR Assembler Y En Project name: Escribes Trabajo
Nada Mas Luego Le Das A Next
Por Defecto Estara Señalado AVR Simulator
Por La Derecha Busca En Device: ATiny2313 Y Lo Ticas
Ahora Tica En Finish
Veras Como Se Te Abrira Un Menu Nuevo Pues
Pegale Lo Que Te Pongo Mas Abajo
Y Le Das A Compilar
Este Te Compilara El Archivo .Hex
Luego Tendras Que Buscar La Carpeta Trabajo En Tu PC
Y Dentro De Esta Carpeta Veras El Archivo .Hex
Yo Te E Hecho Un Pedacito De Codigo Para Que Veas Como Lo Tienes Que Hacer
Segun Tu Desemblado Creo Que Te Lo E Puesto Facil
Pero El Trabajo Lo Tendras Que Hacer Tu
Sino Te Sale Dilo

Aqui Lo Que Tienes Que Pegar En El Menu
Código: [Seleccionar]
;................................................................
; Declaraciones Estandar Para Este Micro ATtiny2313:
.include "tn2313def.inc"  
...........................................................................
; Pila
  .equ          PILA                   =0x0FF
;...............................................................................
;            Vectores De Interrupcion
;...............................................................................        
.CSEG        
   .ORG     0x0000        
rjmp        RESET ; RESET
;................................................................................



RESET: Cli

 
 Ldi    r17, 0xDF    ;Pone El Valor En La Pila
 Out    SPL, r17     ;Apunta A 0xDF      

 Cbi 0x11,0x00 ;Pone El Bit 0 De DDRD En Estado Logico 0 (-0V)
 Cbi 0x11,0x02 ;Pone El Bit 2 De DDRD En Estado Logico 0 (-0V)DDRD
 Cbi 0x11,0x04 ;Pone El Bit 4 De DDRD En Estado Logico 0 (-0V)DDRD
 Sbi 0x11,0x05 ;Pone El Bit 5 Del PORTD En Estado Logico 1 (+5V)

 Ldi R17,0x00
 Ldi R29,0x00
 Ldi R28,0x60   ;Apunta En La Direcion $60 De La Ram
 
L0021:

 St   Y+,R17    ;Grava En Ram Direcion $60 Lo Que Hay En R17 Es Decir 00
 Cpi  R28,0xE0  ;Compara Con E0
 Brcs   L0021   ;Salta a L0021 si C=1 Como No Hay Carry Sigue Gravando 00 Hasta  
 Cpi  R29,0x00  ;Comparar Con 00
 Brcs   L0021   ;Salta a L0021 si C=1 Como No Hay Carry Sigue El Code En L0026:

L0026:

 Ldi R26,0x60   ;Apunta En La Direcion $60 De La Ram
 Ldi R18,0x04   ;Esto Parece Ser Bytes Que Vamos A Grabar o Leer

L0028:
; Aqui Saltara A Rcall L00C2 Donde Parece Esperar El Estado De Un Pin


Veras Esto En Tu Archivo .Hex Que Es Lo Gravado Hasta Aqui

Código: [Seleccionar]
:020000020000FC
:1000000000C0F8941FED1DBF88988A988C988D9A2F
:1000100010E0D0E0C0E61993C03EE8F3D030D8F34A
:04002000A0E624E052
:00000001FF

ATtiny2313 memory use summary [bytes]:
Segment   Begin    End      Code   Data   Used    Size   Use%
---------------------------------------------------------------
[.cseg] 0x000000 0x000024     36      0     36    2048   1.8%
[.dseg] 0x000060 0x000060      0      0      0     128   0.0%
[.eseg] 0x000000 0x000000      0      0      0     128   0.0%

Assembly complete, 0 errors. 0 warnings

JaJa Stk500 Hemos Posteado Lo Mismo Al Mismo Tiempo

« Última modificación: 21 de Enero de 2012, 10:39:47 por Belgitaes »

Desconectado stk500

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4923
Re: Pasar de assembler a hexal
« Respuesta #8 en: 21 de Enero de 2012, 10:55:21 »
 :D :D eso leo    :D :D

Desconectado michy

  • PIC10
  • *
  • Mensajes: 18
Re: Pasar de assembler a hexal
« Respuesta #9 en: 21 de Enero de 2012, 14:36:57 »
 :(
 llevo casi toda la mañana y sin poder hacer esto x dios...esto es lo que me sale en el programa cuando compilo.

Código: [Seleccionar]
Build started 21.1.2012 at 14:33:03
avr-gcc -mmcu=attiny2313  trabajo2.o    -o trabajo2.elf
c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/avr25/crttn2313.o:(.init9+0x0): undefined reference to `main'
make: *** [trabajo2.elf] Error 1
Build failed with 1 errors and 0 warnings...


y este es el programa asi me quedo como me explicaron ustedes desde ya gracias a todos. donde estara el error
;/****** THIS IS A MACHINE GENERATED FILE - DO NOT EDIT ********************
;***** Created: 2011-02-09 12:04 ******* Source: ATtiny2313.xml **********
;*************************************************************************
;/** A P P L I C A T I O N   N O T E   F O R   T H E   A V R   F A M I L Y
;*
;* Number            : AVR000
;* File Name         : "tn2313def.inc"
;* Title             : Register/Bit Definitions for the ATtiny2313
;* Date              : 2011-02-09
;* Version           : 2.35
;* Support E-mail    : avr@atmel.com
;* Target MCU        : ATtiny2313
;*
;* DESCRIPTION
;* When including this file in the assembly program file, all I/O register
;* names and I/O register bit names appearing in the data book can be used.
;* In addition, the six registers forming the three data pointers X, Y and
;* Z have been assigned names XL - ZH. Highest RAM address for Internal
;* SRAM is also defined
;*
;* The Register names are represented by their hexadecimal address.
;*
;* The Register Bit names are represented by their bit number (0-7).
;*
;* Please observe the difference in using the bit names with instructions
;* such as "sbr"/"cbr" (set/clear bit in register) and "sbrs"/"sbrc"
;* (skip if bit in register set/cleared). The following example illustrates
;* this:
;*
;* in    r16,PORTB             ;read PORTB latch
;* sbr   r16,(1<<PB6)+(1<<PB5) ;set PB6 and PB5 (use masks, not bit#)
;* out   PORTB,r16             ;output to PORTB
;*
;* in    r16,TIFR              ;read the Timer Interrupt Flag Register
;* sbrc  r16,TOV0              ;test the overflow flag (use bit#)
;* rjmp  TOV0_is_set           ;jump if set
;* ...                         ;otherwise do something else
;*************************************************************************
/*
#ifndef _TN2313DEF_INC_
#define _TN2313DEF_INC_
;................................................................
; Declaraciones Estandar Para Este Micro ATtiny2313:
.include "tn2313def.inc" 
...........................................................................
; Pila
  .equ          PILA                   =0x0FF
;...............................................................................
;            Vectores De Interrupcion
;...............................................................................         
.CSEG       
    .ORG     0x0000         
rjmp        RESET ; RESET
;................................................................................



RESET: Cli

 
 Ldi    r17, 0xDF    ;Pone El Valor En La Pila
 Out    SPL, r17     ;Apunta A 0xDF       

 Cbi 0x11,0x00 ;Pone El Bit 0 De DDRD En Estado Logico 0 (-0V)
 Cbi 0x11,0x02 ;Pone El Bit 2 De DDRD En Estado Logico 0 (-0V)DDRD
 Cbi 0x11,0x04 ;Pone El Bit 4 De DDRD En Estado Logico 0 (-0V)DDRD
 Sbi 0x11,0x05 ;Pone El Bit 5 Del PORTD En Estado Logico 1 (+5V)

 Ldi R17,0x00
 Ldi R29,0x00
 Ldi R28,0x60   ;Apunta En La Direcion $60 De La Ram
 
L0021:

 St   Y+,R17    ;Grava En Ram Direcion $60 Lo Que Hay En R17 Es Decir 00
 Cpi  R28,0xE0  ;Compara Con E0
 Brcs   L0021   ;Salta a L0021 si C=1 Como No Hay Carry Sigue Gravando 00 Hasta 
 Cpi  R29,0x00  ;Comparar Con 00
 Brcs   L0021   ;Salta a L0021 si C=1 Como No Hay Carry Sigue El Code En L0026:

L0026:

 Ldi R26,0x60   ;Apunta En La Direcion $60 De La Ram
 Ldi R18,0x04   ;Esto Parece Ser Bytes Que Vamos A Grabar o Leer

L0028:
; Aqui Saltara A Rcall L0









#pragma partinc 0

; ***** SPECIFY DEVICE ***************************************************
.device ATtiny2313
#pragma AVRPART ADMIN PART_NAME ATtiny2313
.equ SIGNATURE_000 = 0x1e
.equ SIGNATURE_001 = 0x91
.equ SIGNATURE_002 = 0x0a

#pragma AVRPART CORE CORE_VERSION V2
#pragma AVRPART CORE NEW_INSTRUCTIONS lpm rd,z+


; ***** I/O REGISTER DEFINITIONS *****************************************
; NOTE:
; Definitions marked "MEMORY MAPPED"are extended I/O ports
; and cannot be used with IN/OUT instructions
.equ SREG = 0x3f
.equ SPL = 0x3d
.equ OCR0B = 0x3c
.equ GIMSK = 0x3b
.equ EIFR = 0x3a
.equ TIMSK = 0x39
.equ TIFR = 0x38
.equ SPMCSR = 0x37
.equ OCR0A = 0x36
.equ MCUCR = 0x35
.equ MCUSR = 0x34
.equ TCCR0B = 0x33
.equ TCNT0 = 0x32
.equ OSCCAL = 0x31
.equ TCCR0A = 0x30
.equ TCCR1A = 0x2f
.equ TCCR1B = 0x2e
.equ TCNT1L = 0x2c
.equ TCNT1H = 0x2d
.equ OCR1AL = 0x2a
.equ OCR1AH = 0x2b
.equ OCR1BL = 0x28
.equ OCR1BH = 0x29
.equ CLKPR = 0x26
.equ ICR1L = 0x24
.equ ICR1H = 0x25
.equ GTCCR = 0x23
.equ TCCR1C = 0x22
.equ WDTCR = 0x21
.equ PCMSK = 0x20
.equ EEAR = 0x1e
.equ EEDR = 0x1d
.equ EECR = 0x1c
.equ PORTA = 0x1b
.equ DDRA = 0x1a
.equ PINA = 0x19
.equ PORTB = 0x18
.equ DDRB = 0x17
.equ PINB = 0x16
.equ GPIOR2 = 0x15
.equ GPIOR1 = 0x14
.equ GPIOR0 = 0x13
.equ PORTD = 0x12
.equ DDRD = 0x11
.equ PIND = 0x10
.equ USIDR = 0x0f
.equ USISR = 0x0e
.equ USICR = 0x0d
.equ UDR = 0x0c
.equ UCSRA = 0x0b
.equ UCSRB = 0x0a
.equ UBRRL = 0x09
.equ ACSR = 0x08
.equ UCSRC = 0x03
.equ UBRRH = 0x02
.equ DIDR = 0x01


; ***** BIT DEFINITIONS **************************************************

; ***** PORTB ************************
; PORTB - Port B Data Register
.equ PORTB0 = 0 ; Port B Data Register bit 0
.equ PB0 = 0 ; For compatibility
.equ PORTB1 = 1 ; Port B Data Register bit 1
.equ PB1 = 1 ; For compatibility
.equ PORTB2 = 2 ; Port B Data Register bit 2
.equ PB2 = 2 ; For compatibility
.equ PORTB3 = 3 ; Port B Data Register bit 3
.equ PB3 = 3 ; For compatibility
.equ PORTB4 = 4 ; Port B Data Register bit 4
.equ PB4 = 4 ; For compatibility
.equ PORTB5 = 5 ; Port B Data Register bit 5
.equ PB5 = 5 ; For compatibility
.equ PORTB6 = 6 ; Port B Data Register bit 6
.equ PB6 = 6 ; For compatibility
.equ PORTB7 = 7 ; Port B Data Register bit 7
.equ PB7 = 7 ; For compatibility

; DDRB - Port B Data Direction Register
.equ DDB0 = 0 ; Port B Data Direction Register bit 0
.equ DDB1 = 1 ; Port B Data Direction Register bit 1
.equ DDB2 = 2 ; Port B Data Direction Register bit 2
.equ DDB3 = 3 ; Port B Data Direction Register bit 3
.equ DDB4 = 4 ; Port B Data Direction Register bit 4
.equ DDB5 = 5 ; Port B Data Direction Register bit 5
.equ DDB6 = 6 ; Port B Data Direction Register bit 6
.equ DDB7 = 7 ; Port B Data Direction Register bit 7

; PINB - Port B Input Pins
.equ PINB0 = 0 ; Port B Input Pins bit 0
.equ PINB1 = 1 ; Port B Input Pins bit 1
.equ PINB2 = 2 ; Port B Input Pins bit 2
.equ PINB3 = 3 ; Port B Input Pins bit 3
.equ PINB4 = 4 ; Port B Input Pins bit 4
.equ PINB5 = 5 ; Port B Input Pins bit 5
.equ PINB6 = 6 ; Port B Input Pins bit 6
.equ PINB7 = 7 ; Port B Input Pins bit 7


; ***** TIMER_COUNTER_0 **************
; TIMSK - Timer/Counter Interrupt Mask Register
.equ OCIE0A = 0 ; Timer/Counter0 Output Compare Match A Interrupt Enable
.equ TOIE0 = 1 ; Timer/Counter0 Overflow Interrupt Enable
.equ OCIE0B = 2 ; Timer/Counter0 Output Compare Match B Interrupt Enable

; TIFR - Timer/Counter Interrupt Flag register
.equ OCF0A = 0 ; Timer/Counter0 Output Compare Flag 0A
.equ TOV0 = 1 ; Timer/Counter0 Overflow Flag
.equ OCF0B = 2 ; Timer/Counter0 Output Compare Flag 0B

; OCR0B - Timer/Counter0 Output Compare Register
.equ OCR0_0 = 0 ;
.equ OCR0_1 = 1 ;
.equ OCR0_2 = 2 ;
.equ OCR0_3 = 3 ;
.equ OCR0_4 = 4 ;
.equ OCR0_5 = 5 ;
.equ OCR0_6 = 6 ;
.equ OCR0_7 = 7 ;

; OCR0A - Timer/Counter0 Output Compare Register
.equ OCR0A_0 = 0 ;
.equ OCR0A_1 = 1 ;
.equ OCR0A_2 = 2 ;
.equ OCR0A_3 = 3 ;
.equ OCR0A_4 = 4 ;
.equ OCR0A_5 = 5 ;
.equ OCR0A_6 = 6 ;
.equ OCR0A_7 = 7 ;

; TCCR0A - Timer/Counter  Control Register A
.equ WGM00 = 0 ; Waveform Generation Mode
.equ WGM01 = 1 ; Waveform Generation Mode
.equ COM0B0 = 4 ; Compare Match Output B Mode
.equ COM0B1 = 5 ; Compare Match Output B Mode
.equ COM0A0 = 6 ; Compare Match Output A Mode
.equ COM0A1 = 7 ; Compare Match Output A Mode

; TCNT0 - Timer/Counter0
.equ TCNT0_0 = 0 ;
.equ TCNT0_1 = 1 ;
.equ TCNT0_2 = 2 ;
.equ TCNT0_3 = 3 ;
.equ TCNT0_4 = 4 ;
.equ TCNT0_5 = 5 ;
.equ TCNT0_6 = 6 ;
.equ TCNT0_7 = 7 ;

; TCCR0B - Timer/Counter Control Register B
.equ TCCR0 = TCCR0B ; For compatibility
.equ CS00 = 0 ; Clock Select
.equ CS01 = 1 ; Clock Select
.equ CS02 = 2 ; Clock Select
.equ WGM02 = 3 ;
.equ FOC0B = 6 ; Force Output Compare B
.equ FOC0A = 7 ; Force Output Compare B


; ***** TIMER_COUNTER_1 **************
; TIMSK - Timer/Counter Interrupt Mask Register
.equ ICIE1 = 3 ; Timer/Counter1 Input Capture Interrupt Enable
.equ TICIE = ICIE1 ; For compatibility
.equ OCIE1B = 5 ; Timer/Counter1 Output CompareB Match Interrupt Enable
.equ OCIE1A = 6 ; Timer/Counter1 Output CompareA Match Interrupt Enable
.equ TOIE1 = 7 ; Timer/Counter1 Overflow Interrupt Enable

; TIFR - Timer/Counter Interrupt Flag register
.equ ICF1 = 3 ; Input Capture Flag 1
.equ OCF1B = 5 ; Output Compare Flag 1B
.equ OCF1A = 6 ; Output Compare Flag 1A
.equ TOV1 = 7 ; Timer/Counter1 Overflow Flag

; TCCR1A - Timer/Counter1 Control Register A
.equ WGM10 = 0 ; Pulse Width Modulator Select Bit 0
.equ PWM10 = WGM10 ; For compatibility
.equ WGM11 = 1 ; Pulse Width Modulator Select Bit 1
.equ PWM11 = WGM11 ; For compatibility
.equ COM1B0 = 4 ; Comparet Ouput Mode 1B, bit 0
.equ COM1B1 = 5 ; Compare Output Mode 1B, bit 1
.equ COM1A0 = 6 ; Comparet Ouput Mode 1A, bit 0
.equ COM1A1 = 7 ; Compare Output Mode 1A, bit 1

; TCCR1B - Timer/Counter1 Control Register B
.equ CS10 = 0 ; Clock Select bit 0
.equ CS11 = 1 ; Clock Select 1 bit 1
.equ CS12 = 2 ; Clock Select1 bit 2
.equ WGM12 = 3 ; Waveform Generation Mode Bit 2
.equ CTC1 = WGM12 ; For compatibility
.equ WGM13 = 4 ; Waveform Generation Mode Bit 3
.equ ICES1 = 6 ; Input Capture 1 Edge Select
.equ ICNC1 = 7 ; Input Capture 1 Noise Canceler

; TCCR1C - Timer/Counter1 Control Register C
.equ FOC1B = 6 ; Force Output Compare for Channel B
.equ FOC1A = 7 ; Force Output Compare for Channel A


; ***** WATCHDOG *********************
; WDTCR - Watchdog Timer Control Register
.equ WDTCSR = WDTCR ; For compatibility
.equ WDP0 = 0 ; Watch Dog Timer Prescaler bit 0
.equ WDP1 = 1 ; Watch Dog Timer Prescaler bit 1
.equ WDP2 = 2 ; Watch Dog Timer Prescaler bit 2
.equ WDE = 3 ; Watch Dog Enable
.equ WDCE = 4 ; Watchdog Change Enable
.equ WDTOE = WDCE ; For compatibility
.equ WDP3 = 5 ; Watchdog Timer Prescaler Bit 3
.equ WDIE = 6 ; Watchdog Timeout Interrupt Enable
.equ WDIF = 7 ; Watchdog Timeout Interrupt Flag


; ***** EXTERNAL_INTERRUPT ***********
; GIMSK - General Interrupt Mask Register
.equ PCIE = 5 ;
.equ INT0 = 6 ; External Interrupt Request 0 Enable
.equ INT1 = 7 ; External Interrupt Request 1 Enable

; EIFR - Extended Interrupt Flag Register
.equ GIFR = EIFR ; For compatibility
.equ PCIF = 5 ;
.equ INTF0 = 6 ; External Interrupt Flag 0
.equ INTF1 = 7 ; External Interrupt Flag 1


; ***** USART ************************
; UDR - USART I/O Data Register
.equ UDR0 = 0 ; USART I/O Data Register bit 0
.equ UDR1 = 1 ; USART I/O Data Register bit 1
.equ UDR2 = 2 ; USART I/O Data Register bit 2
.equ UDR3 = 3 ; USART I/O Data Register bit 3
.equ UDR4 = 4 ; USART I/O Data Register bit 4
.equ UDR5 = 5 ; USART I/O Data Register bit 5
.equ UDR6 = 6 ; USART I/O Data Register bit 6
.equ UDR7 = 7 ; USART I/O Data Register bit 7

; UCSRA - USART Control and Status Register A
.equ USR = UCSRA ; For compatibility
.equ MPCM = 0 ; Multi-processor Communication Mode
.equ U2X = 1 ; Double the USART Transmission Speed
.equ UPE = 2 ; USART Parity Error
.equ PE = UPE ; For compatibility
.equ DOR = 3 ; Data overRun
.equ FE = 4 ; Framing Error
.equ UDRE = 5 ; USART Data Register Empty
.equ TXC = 6 ; USART Transmitt Complete
.equ RXC = 7 ; USART Receive Complete

; UCSRB - USART Control and Status Register B
.equ UCR = UCSRB ; For compatibility
.equ TXB8 = 0 ; Transmit Data Bit 8
.equ RXB8 = 1 ; Receive Data Bit 8
.equ UCSZ2 = 2 ; Character Size
.equ CHR9 = UCSZ2 ; For compatibility
.equ TXEN = 3 ; Transmitter Enable
.equ RXEN = 4 ; Receiver Enable
.equ UDRIE = 5 ; USART Data register Empty Interrupt Enable
.equ TXCIE = 6 ; TX Complete Interrupt Enable
.equ RXCIE = 7 ; RX Complete Interrupt Enable

; UCSRC - USART Control and Status Register C
.equ UCPOL = 0 ; Clock Polarity
.equ UCSZ0 = 1 ; Character Size Bit 0
.equ UCSZ1 = 2 ; Character Size Bit 1
.equ USBS = 3 ; Stop Bit Select
.equ UPM0 = 4 ; Parity Mode Bit 0
.equ UPM1 = 5 ; Parity Mode Bit 1
.equ UMSEL = 6 ; USART Mode Select

.equ UBRR = UBRRL ; For compatibility

; ***** ANALOG_COMPARATOR ************
; ACSR - Analog Comparator Control And Status Register
.equ ACIS0 = 0 ; Analog Comparator Interrupt Mode Select bit 0
.equ ACIS1 = 1 ; Analog Comparator Interrupt Mode Select bit 1
.equ ACIC = 2 ;
.equ ACIE = 3 ; Analog Comparator Interrupt Enable
.equ ACI = 4 ; Analog Comparator Interrupt Flag
.equ ACO = 5 ; Analog Compare Output
.equ ACBG = 6 ; Analog Comparator Bandgap Select
.equ ACD = 7 ; Analog Comparator Disable

; DIDR - Digital Input Disable Register 1
.equ AIN0D = 0 ; AIN0 Digital Input Disable
.equ AIN1D = 1 ; AIN1 Digital Input Disable


; ***** PORTD ************************
; PORTD - Data Register, Port D
.equ PORTD0 = 0 ;
.equ PD0 = 0 ; For compatibility
.equ PORTD1 = 1 ;
.equ PD1 = 1 ; For compatibility
.equ PORTD2 = 2 ;
.equ PD2 = 2 ; For compatibility
.equ PORTD3 = 3 ;
.equ PD3 = 3 ; For compatibility
.equ PORTD4 = 4 ;
.equ PD4 = 4 ; For compatibility
.equ PORTD5 = 5 ;
.equ PD5 = 5 ; For compatibility
.equ PORTD6 = 6 ;
.equ PD6 = 6 ; For compatibility

; DDRD - Data Direction Register, Port D
.equ DDD0 = 0 ;
.equ DDD1 = 1 ;
.equ DDD2 = 2 ;
.equ DDD3 = 3 ;
.equ DDD4 = 4 ;
.equ DDD5 = 5 ;
.equ DDD6 = 6 ;

; PIND - Input Pins, Port D
.equ PIND0 = 0 ;
.equ PIND1 = 1 ;
.equ PIND2 = 2 ;
.equ PIND3 = 3 ;
.equ PIND4 = 4 ;
.equ PIND5 = 5 ;
.equ PIND6 = 6 ;


; ***** EEPROM ***********************
; EEAR - EEPROM Read/Write Access
.equ EEARL = EEAR ; For compatibility
.equ EEAR0 = 0 ; EEPROM Read/Write Access bit 0
.equ EEAR1 = 1 ; EEPROM Read/Write Access bit 1
.equ EEAR2 = 2 ; EEPROM Read/Write Access bit 2
.equ EEAR3 = 3 ; EEPROM Read/Write Access bit 3
.equ EEAR4 = 4 ; EEPROM Read/Write Access bit 4
.equ EEAR5 = 5 ; EEPROM Read/Write Access bit 5
.equ EEAR6 = 6 ; EEPROM Read/Write Access bit 6

; EEDR - EEPROM Data Register
.equ EEDR0 = 0 ; EEPROM Data Register bit 0
.equ EEDR1 = 1 ; EEPROM Data Register bit 1
.equ EEDR2 = 2 ; EEPROM Data Register bit 2
.equ EEDR3 = 3 ; EEPROM Data Register bit 3
.equ EEDR4 = 4 ; EEPROM Data Register bit 4
.equ EEDR5 = 5 ; EEPROM Data Register bit 5
.equ EEDR6 = 6 ; EEPROM Data Register bit 6
.equ EEDR7 = 7 ; EEPROM Data Register bit 7

; EECR - EEPROM Control Register
.equ EERE = 0 ; EEPROM Read Enable
.equ EEPE = 1 ; EEPROM Write Enable
.equ EEWE = EEPE ; For compatibility
.equ EEMPE = 2 ; EEPROM Master Write Enable
.equ EEMWE = EEMPE ; For compatibility
.equ EERIE = 3 ; EEProm Ready Interrupt Enable
.equ EEPM0 = 4 ;
.equ EEPM1 = 5 ;


; ***** PORTA ************************
; PORTA - Port A Data Register
.equ PORTA0 = 0 ; Port A Data Register bit 0
.equ PA0 = 0 ; For compatibility
.equ PORTA1 = 1 ; Port A Data Register bit 1
.equ PA1 = 1 ; For compatibility
.equ PORTA2 = 2 ; Port A Data Register bit 2
.equ PA2 = 2 ; For compatibility

; DDRA - Port A Data Direction Register
.equ DDA0 = 0 ; Data Direction Register, Port A, bit 0
.equ DDA1 = 1 ; Data Direction Register, Port A, bit 1
.equ DDA2 = 2 ; Data Direction Register, Port A, bit 2

; PINA - Port A Input Pins
.equ PINA0 = 0 ; Input Pins, Port A bit 0
.equ PINA1 = 1 ; Input Pins, Port A bit 1
.equ PINA2 = 2 ; Input Pins, Port A bit 2


; ***** CPU **************************
; SREG - Status Register
.equ SREG_C = 0 ; Carry Flag
.equ SREG_Z = 1 ; Zero Flag
.equ SREG_N = 2 ; Negative Flag
.equ SREG_V = 3 ; Two's Complement Overflow Flag
.equ SREG_S = 4 ; Sign Bit
.equ SREG_H = 5 ; Half Carry Flag
.equ SREG_T = 6 ; Bit Copy Storage
.equ SREG_I = 7 ; Global Interrupt Enable

; SPMCSR - Store Program Memory Control and Status register
.equ SPMEN = 0 ; Store Program Memory Enable
.equ PGERS = 1 ; Page Erase
.equ PGWRT = 2 ; Page Write
.equ RFLB = 3 ; Read Fuse and Lock Bits
.equ CTPB = 4 ; Clear Temporary Page Buffer

; MCUCR - MCU Control Register
.equ ISC00 = 0 ; Interrupt Sense Control 0 bit 0
.equ ISC01 = 1 ; Interrupt Sense Control 0 bit 1
.equ ISC10 = 2 ; Interrupt Sense Control 1 bit 0
.equ ISC11 = 3 ; Interrupt Sense Control 1 bit 1
.equ SM0 = 4 ; Sleep Mode Select Bit 0
.equ SM = SM0 ; For compatibility
.equ SE = 5 ; Sleep Enable
.equ SM1 = 6 ; Sleep Mode Select Bit 1
.equ PUD = 7 ; Pull-up Disable

; CLKPR - Clock Prescale Register
.equ CLKPS0 = 0 ; Clock Prescaler Select Bit 0
.equ CLKPS1 = 1 ; Clock Prescaler Select Bit 1
.equ CLKPS2 = 2 ; Clock Prescaler Select Bit 2
.equ CLKPS3 = 3 ; Clock Prescaler Select Bit 3
.equ CLKPCE = 7 ; Clock Prescaler Change Enable

; MCUSR - MCU Status register
.equ PORF = 0 ; Power-On Reset Flag
.equ EXTRF = 1 ; External Reset Flag
.equ BORF = 2 ; Brown-out Reset Flag
.equ WDRF = 3 ; Watchdog Reset Flag

; OSCCAL - Oscillator Calibration Register
.equ CAL0 = 0 ; Oscillatro Calibration Value Bit 0
.equ CAL1 = 1 ; Oscillatro Calibration Value Bit 1
.equ CAL2 = 2 ; Oscillatro Calibration Value Bit 2
.equ CAL3 = 3 ; Oscillatro Calibration Value Bit 3
.equ CAL4 = 4 ; Oscillatro Calibration Value Bit 4
.equ CAL5 = 5 ; Oscillatro Calibration Value Bit 5
.equ CAL6 = 6 ; Oscillatro Calibration Value Bit 6

; GTCCR - General Timer Counter Control Register
.equ SFIOR = GTCCR ; For compatibility
.equ PSR10 = 0 ;

; PCMSK - Pin-Change Mask register
.equ PCINT0 = 0 ; Pin-Change Interrupt 0
.equ PCINT1 = 1 ; Pin-Change Interrupt 1
.equ PCINT2 = 2 ; Pin-Change Interrupt 2
.equ PCINT3 = 3 ; Pin-Change Interrupt 3
.equ PCINT4 = 4 ; Pin-Change Interrupt 4
.equ PCINT5 = 5 ; Pin-Change Interrupt 5
.equ PCINT6 = 6 ; Pin-Change Interrupt 6
.equ PCINT7 = 7 ; Pin-Change Interrupt 7

; GPIOR2 - General Purpose I/O Register 2
.equ GPIOR20 = 0 ; General Purpose I/O Register 2 bit 0
.equ GPIOR21 = 1 ; General Purpose I/O Register 2 bit 1
.equ GPIOR22 = 2 ; General Purpose I/O Register 2 bit 2
.equ GPIOR23 = 3 ; General Purpose I/O Register 2 bit 3
.equ GPIOR24 = 4 ; General Purpose I/O Register 2 bit 4
.equ GPIOR25 = 5 ; General Purpose I/O Register 2 bit 5
.equ GPIOR26 = 6 ; General Purpose I/O Register 2 bit 6
.equ GPIOR27 = 7 ; General Purpose I/O Register 2 bit 7

; GPIOR1 - General Purpose I/O Register 1
.equ GPIOR10 = 0 ; General Purpose I/O Register 1 bit 0
.equ GPIOR11 = 1 ; General Purpose I/O Register 1 bit 1
.equ GPIOR12 = 2 ; General Purpose I/O Register 1 bit 2
.equ GPIOR13 = 3 ; General Purpose I/O Register 1 bit 3
.equ GPIOR14 = 4 ; General Purpose I/O Register 1 bit 4
.equ GPIOR15 = 5 ; General Purpose I/O Register 1 bit 5
.equ GPIOR16 = 6 ; General Purpose I/O Register 1 bit 6
.equ GPIOR17 = 7 ; General Purpose I/O Register 1 bit 7

; GPIOR0 - General Purpose I/O Register 0
.equ GPIOR00 = 0 ; General Purpose I/O Register 0 bit 0
.equ GPIOR01 = 1 ; General Purpose I/O Register 0 bit 1
.equ GPIOR02 = 2 ; General Purpose I/O Register 0 bit 2
.equ GPIOR03 = 3 ; General Purpose I/O Register 0 bit 3
.equ GPIOR04 = 4 ; General Purpose I/O Register 0 bit 4
.equ GPIOR05 = 5 ; General Purpose I/O Register 0 bit 5
.equ GPIOR06 = 6 ; General Purpose I/O Register 0 bit 6
.equ GPIOR07 = 7 ; General Purpose I/O Register 0 bit 7


; ***** USI **************************
; USIDR - USI Data Register
.equ USIDR0 = 0 ; USI Data Register bit 0
.equ USIDR1 = 1 ; USI Data Register bit 1
.equ USIDR2 = 2 ; USI Data Register bit 2
.equ USIDR3 = 3 ; USI Data Register bit 3
.equ USIDR4 = 4 ; USI Data Register bit 4
.equ USIDR5 = 5 ; USI Data Register bit 5
.equ USIDR6 = 6 ; USI Data Register bit 6
.equ USIDR7 = 7 ; USI Data Register bit 7

; USISR - USI Status Register
.equ USICNT0 = 0 ; USI Counter Value Bit 0
.equ USICNT1 = 1 ; USI Counter Value Bit 1
.equ USICNT2 = 2 ; USI Counter Value Bit 2
.equ USICNT3 = 3 ; USI Counter Value Bit 3
.equ USIDC = 4 ; Data Output Collision
.equ USIPF = 5 ; Stop Condition Flag
.equ USIOIF = 6 ; Counter Overflow Interrupt Flag
.equ USISIF = 7 ; Start Condition Interrupt Flag

; USICR - USI Control Register
.equ USITC = 0 ; Toggle Clock Port Pin
.equ USICLK = 1 ; Clock Strobe
.equ USICS0 = 2 ; USI Clock Source Select Bit 0
.equ USICS1 = 3 ; USI Clock Source Select Bit 1
.equ USIWM0 = 4 ; USI Wire Mode Bit 0
.equ USIWM1 = 5 ; USI Wire Mode Bit 1
.equ USIOIE = 6 ; Counter Overflow Interrupt Enable
.equ USISIE = 7 ; Start Condition Interrupt Enable



; ***** LOCKSBITS ********************************************************
.equ LB1 = 0 ; Lockbit
.equ LB2 = 1 ; Lockbit


; ***** FUSES ************************************************************
; LOW fuse bits
.equ CKSEL0 = 0 ; Select Clock Source
.equ CKSEL1 = 1 ; Select Clock Source
.equ CKSEL2 = 2 ; Select Clock Source
.equ CKSEL3 = 3 ; Select Clock Source
.equ SUT0 = 4 ; Select start-up time
.equ SUT1 = 5 ; Select start-up time
.equ CKOUT = 6 ; Clock output
.equ CKDIV8 = 7 ; Divide clock by 8

; HIGH fuse bits
.equ BODLEVEL0 = 0 ; Brown-out Detector trigger level
.equ BODLEVEL1 = 1 ; Brown-out Detector trigger level
.equ BODLEVEL2 = 2 ; Brown-out Detector trigger level
.equ EESAVE = 3 ; EEPROM memory is preserved through chip erase
.equ WDTON = 4 ; Watchdog Timer Always On
.equ SPIEN = 5 ; Enable Serial programming and Data Downloading
.equ DWEN = 6 ; debugWIRE Enable
.equ RSTDISBL = 7 ; External reset disable

; EXTENDED fuse bits
.equ SELFPRGEN = 0 ; Self Programming Enable



; ***** CPU REGISTER DEFINITIONS *****************************************
.def XH = r27
.def XL = r26
.def YH = r29
.def YL = r28
.def ZH = r31
.def ZL = r30



; ***** DATA MEMORY DECLARATIONS *****************************************
.equ FLASHEND = 0x03ff ; Note: Word address
.equ IOEND = 0x003f
.equ SRAM_START = 0x0060
.equ SRAM_SIZE = 128
.equ RAMEND = 0x00df
.equ XRAMEND = 0x0000
.equ E2END = 0x007f
.equ EEPROMEND = 0x007f
.equ EEADRBITS = 7
#pragma AVRPART MEMORY PROG_FLASH 2048
#pragma AVRPART MEMORY EEPROM 128
#pragma AVRPART MEMORY INT_SRAM SIZE 128
#pragma AVRPART MEMORY INT_SRAM START_ADDR 0x60



; ***** BOOTLOADER DECLARATIONS ******************************************
.equ NRWW_START_ADDR = 0x0
.equ NRWW_STOP_ADDR = 0x3ff
.equ RWW_START_ADDR = 0x0
.equ RWW_STOP_ADDR = 0x0
.equ PAGESIZE = 16



; ***** INTERRUPT VECTORS ************************************************
.equ INT0addr = 0x0001 ; External Interrupt Request 0
.equ INT1addr = 0x0002 ; External Interrupt Request 1
.equ ICP1addr = 0x0003 ; Timer/Counter1 Capture Event
.equ OC1Aaddr = 0x0004 ; Timer/Counter1 Compare Match A
.equ OC1addr = 0x0004 ; For compatibility
.equ OVF1addr = 0x0005 ; Timer/Counter1 Overflow
.equ OVF0addr = 0x0006 ; Timer/Counter0 Overflow
.equ URXCaddr = 0x0007 ; USART, Rx Complete
.equ URXC0addr = 0x0007 ; For compatibility
.equ UDREaddr = 0x0008 ; USART Data Register Empty
.equ UDRE0addr = 0x0008 ; For compatibility
.equ UTXCaddr = 0x0009 ; USART, Tx Complete
.equ UTXC0addr = 0x0009 ; For compatibility
.equ ACIaddr = 0x000a ; Analog Comparator
.equ PCIaddr = 0x000b ;
.equ OC1Baddr = 0x000c ;
.equ OC0Aaddr = 0x000d ;
.equ OC0Baddr = 0x000e ;
.equ USI_STARTaddr = 0x000f ; USI Start Condition
.equ USI_OVFaddr = 0x0010 ; USI Overflow
.equ ERDYaddr = 0x0011 ;
.equ WDTaddr = 0x0012 ; Watchdog Timer Overflow

.equ INT_VECTORS_SIZE = 19 ; size in words

#endif  /* _TN2313DEF_INC_ */

;/****** END OF FILE ******************************************************

/*---------------------------------------

L0000:
rjmp _reset ; L0001
;
_reset:
; L0001:
cli
ldi r17,kDF
out p3D,r17
cbi p11,b0
cbi p11,b2
cbi p11,b4
sbi p11,b3
sbi p12,b3
sbi p11,b5
sbi p12,b5
ldi r17,k00
ldi r29,k00
ldi r28,k60
L000E:
st Y+,r17
cpi r28,kE0
brcs L000E
cpi r29,k00
brcs L000E
L0013:
ldi r26,k60
ldi r18,k04
L0015:
rcall L0136
cpi r16,k48
brne L0015
st X+,r16
L0019:
rcall L01BB
rcall L0136
st X+,r16
dec r18
brne L0019
ldi r26,k61
ld r17,X+
rcall L0136
cp r17,r16
brne L0013
ldi r26,k65
st X+,r16
L0025:
sbis p10,b0
rjmp L0025
ldi r26,k61
ld r17,X+
cpi r17,k58
breq L0031
cpi r17,k42
breq L002E
rjmp L0013
L002E:
sbi p11,b5
cbi p12,b5
rjmp L0059
L0031:
rjmp L0034
rjmp L007E
rjmp L00D0
L0034:
sbis p10,b0
rjmp L0034
L0036:
sbic p10,b0
rjmp L0036
sbi p11,b5
cbi p12,b5
ldi r16,k20
rcall L0166
sbi p11,b5
sbi p12,b5
ldi r17,k09
L003F:
rcall L0136
rcall L01BB
dec r17
brne L003F
L0043:
sbis p10,b0
rjmp L0043
L0045:
sbic p10,b0
rjmp L0045
sbi p11,b5
cbi p12,b5
ldi r16,k52
rcall L0166
sbi p11,b5
sbi p12,b5
rcall L0136
L004E:
sbis p10,b0
rjmp L004E
L0050:
sbic p10,b0
rjmp L0050
sbi p11,b5
cbi p12,b5
ldi r16,k01
rcall L0166
sbi p11,b5
sbi p12,b5
rjmp L0013
L0059:
ldi r26,k64
ld r17,X+
rjmp L005F
sbi p11,b5
sbi p12,b5
rjmp L0013
L005F:
sbi p11,b3
cbi p12,b3
ldi r26,k65
L0062:
rcall L0136
rcall L01BB
st X+,r16
dec r17
brne L0062
ldi r26,k64
ld r17,X+
subi r17,k08
ldi r18,k65
add r18,r17
mov r26,r18
ldi r17,k00
ldi r18,k08
L006F:
st X+,r17
dec r18
brne L006F
rjmp L0073
L0073:
ldi r26,k64
ld r17,X+
ldi r26,k65
L0076:
ld r16,X+
rcall L0190
rcall L01BB
dec r17
brne L0076
sbi p11,b5
sbi p12,b5
rjmp L0013
L007E:
ldi r26,k64
ld r17,X+
ldi r26,kD0
L0081:
rcall L0136
rcall L01BB
st X+,r16
dec r17
brne L0081
sbi p11,b5
cbi p12,b5
rcall L014F
rcall L01BB
rcall L014F
rcall L01BB
ldi r16,k48
rcall L0190
rcall L01BF
ldi r16,k2A
rcall L0190
rcall L01BF
ldi r16,k01
rcall L0190
rcall L01BF
ldi r16,k00
rcall L0190
rcall L01BF
ldi r16,k50
rcall L0190
rcall L01BF
rcall L014F
ldi r17,k50
ldi r26,k65
L009E:
rcall L014F
rcall L01BB
st X+,r16
dec r17
brne L009E
rcall L014F
rcall L01BB
rcall L014F
ldi r26,k92
ldi r28,kCC
ldi r18,k04
L00A9:
ld r17,X+
st Y+,r17
dec r18
brne L00A9
rcall L01BB
ldi r16,k48
rcall L0190
rcall L01BF
ldi r16,k4C
rcall L0190
rcall L01BF
ldi r16,k00
rcall L0190
rcall L01BF
ldi r16,k00
rcall L0190
rcall L01BF
ldi r16,k09
rcall L0190
rcall L01BF
rcall L014F
rcall L01BB
ldi r17,k04
ldi r26,kCC
L00C1:
ld r16,X+
rcall L0190
rcall L01BF
dec r17
brne L00C1
ldi r17,k05
ldi r26,kD4
L00C8:
ld r16,X+
rcall L0190
rcall L01BF
dec r17
brne L00C8
sbi p11,b5
sbi p12,b5
rjmp L0013
L00D0:
ldi r26,k64
ld r17,X+
ldi r26,k65
L00D3:
rcall L0136
rcall L01BB
st X+,r16
dec r17
brne L00D3
rcall L0136
rcall L0136
sbi p11,b5
cbi p12,b5
rcall L01BF
ldi r16,k48
rcall L0190
rcall L01BF
ldi r16,k4C
rcall L0190
rcall L01BF
ldi r16,k00
rcall L0190
rcall L01BF
ldi r16,k00
rcall L0190
rcall L01BF
ldi r16,k09
rcall L0190
rcall L01BF
rcall L014F
ldi r17,k09
ldi r26,kD0
L00EF:
ld r16,X+
rcall L0190
rcall L01BF
dec r17
brne L00EF
rcall L014F
rcall L014F
rcall L01BF
ldi r16,k48
rcall L0190
rcall L01BF
ldi r16,k54
rcall L0190
rcall L01BF
ldi r16,k00
rcall L0190
rcall L01BF
ldi r16,k00
rcall L0190
rcall L01BF
ldi r16,k0D
rcall L0190
rcall L01BF
sbi p11,b5
sbi p12,b5
rcall L0136
ldi r17,k0D
ldi r26,k65
L010B:
rcall L0136
rcall L01BB
st X+,r16
dec r17
brne L010B
sbi p11,b5
cbi p12,b5
rcall L014F
rcall L014F
rcall L01BF
ldi r16,k48
rcall L0190
rcall L01BF
ldi r16,k4C
rcall L0190
rcall L01BF
ldi r16,k00
rcall L0190
rcall L01BF
ldi r16,k00
rcall L0190
rcall L01BF
ldi r16,k09
rcall L0190
rcall L01BF
rcall L014F
ldi r17,k04
ldi r26,kCC
L0127:
ld r16,X+
rcall L0190
rcall L01BF
dec r17
brne L0127
ldi r17,k05
ldi r26,kD4
L012E:
ld r16,X+
rcall L0190
rcall L01BF
dec r17
brne L012E
sbi p11,b5
sbi p12,b5
rjmp L0013
L0136:
sbis p10,b0
rjmp L0136
L0138:
sbic p10,b0
rjmp L0138
ldi r25,k0F
L013B:
dec r25
brne L013B
nop
ldi r16,k01
ldi r25,k1F
L0140:
dec r25
brne L0140
in r24,p10
lsr r24
rol r16
ldi r25,k1E
brcc L0140
com r16
nop
ldi r25,k2E
L014A:
dec r25
brne L014A
L014C:
sbis p10,b0
rjmp L014C
ret
; pc=0x14F(0x29E)
;
L014F:
sbis p10,b4
rjmp L014F
L0151:
sbic p10,b4
rjmp L0151
ldi r25,k02
L0154:
dec r25
brne L0154
ldi r16,k01
L0157:
ldi r25,k20
L0158:
dec r25
brne L0158
clc
sbis p10,b4
sec
rol r16
brcc L0157
nop
ldi r25,k80
L0161:
dec r25
brne L0161
L0163:
sbis p10,b4
rjmp L0163
ret
; pc=0x166(0x2CC)
;
L0166:
sbis p10,b0
rjmp L0166
sbi p11,b0
cbi p12,b0
ldi r18,k08
clr r24
ldi r25,k14
L016D:
rcall L01BC
nop
rol r16
brcs L018E
nop
sbi p12,b0
rjmp L0174
L0174:
adc r24,r25
andi r24,k01
dec r18
ldi r25,k18
nop
brne L016D
rcall L01BC
rjmp L017C
L017C:
ror r24
brcs L018C
nop
sbi p12,b0
rjmp L0181
L0181:
ldi r25,k1B
rcall L01BC
nop
sbi p12,b0
ldi r25,k25
rcall L01BC
nop
rjmp L0189
L0189:
cbi p11,b0
cbi p12,b0
ret
; pc=0x18C(0x318)
;
L018C:
cbi p12,b0
rjmp L0181
L018E:
cbi p12,b0
rjmp L0174
L0190:
sbis p10,b4
rjmp L0190
sbi p11,b4
ldi r25,k02
rcall L01BC
rjmp L0196
L0196:
cbi p12,b4
rjmp L0198
L0198:
rjmp L0199
L0199:
nop
ldi r18,k08
clr r24
L019C:
ldi r25,k18
rcall L01BC
nop
rol r16
brcs L01B9
nop
sbi p12,b4
rjmp L01A4
L01A4:
adc r24,r25
andi r24,k01
dec r18
brne L019C
ldi r25,k18
rcall L01BC
rjmp L01AB
L01AB:
ror r24
brcs L01B7
nop
sbi p12,b4
rjmp L01B0
L01B0:
ldi r25,k32
rcall L01BC
nop
rjmp L01B4
L01B4:
sbi p12,b4
cbi p11,b4
ret
; pc=0x1B7(0x36E)
;
L01B7:
cbi p12,b4
rjmp L01B0
L01B9:
cbi p12,b4
rjmp L01A4
L01BB:
ldi r25,k3B
L01BC:
dec r25
brne L01BC
ret
; pc=0x1BF(0x37E)
;
L01BF:
ldi r22,kFF
ldi r24,k00
lsr r22
brcs L01C3
L01C3:
lsr r22
brcc L01C7
nop
rjmp L01C7
L01C7:
inc r22
inc r24
L01C9:
nop
dec r22
brne L01C9
nop
ldi r22,k3F
dec r24
brne L01C9
ret
; pc=0x1D1(0x3A2)
;
L01D1:
rjmp L01D1
; pc=0x1D2(0x3A4)
; pc=0x165(0x2CA)
;
; last flash byte address = 0x02C9
; last flash word address = 0x0164
;---------------------------------------
; Code seems not to use any RAM,
; guess it's for an AVR tiny.
;---------------------------------------
;#'*/






 
« Última modificación: 25 de Enero de 2012, 13:19:51 por stk500 »

Desconectado Belgitaes

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 215
Re: Pasar de assembler a hexal
« Respuesta #10 en: 21 de Enero de 2012, 16:22:17 »
Código: [Seleccionar]
llevo casi toda la mañana y sin poder hacer esto x dios...
esto es lo que me sale en el programa cuando compilo.

No
Mira Lee De Nuevo Lo Que Te Puse Y Empieza Desde Zero
Es Muy Importante Que Empieze Desde Zero

Mira Aqui Esta El Error
avr-gcc -mmcu=attiny2313  trabajo2.
Lo Estas Haciendo Mal Estas Ticando En AVR GCC
No Lo Estas Haciendo Como Te Dije
Lo Estas Haciendo Con AVR GCC
Tienes que Hacerlo Con Atmel AVR Assembler
Te Pongo 2 Fotos Para Que Lo Entiendas Mejor
 
Una Vez Terminado Lo Que Pone En La 2º Foto
Es Decir Una Vez Que Le Hayas Dado a Finish
Se Te Abrira Un Menu Nuevo
Pues Ahi En Este Menu TAN SOLO DEBES DE PEGAR ESTO NADA MAS

Código: [Seleccionar]
;................................................................
; Declaraciones Estandar Para Este Micro ATtiny2313:
.include "tn2313def.inc"  
...........................................................................
; Pila
  .equ          PILA                   =0x0FF
;...............................................................................
;            Vectores De Interrupcion
;...............................................................................        
.CSEG        
   .ORG     0x0000        
rjmp        RESET ; RESET
;................................................................................



RESET: Cli

 
 Ldi    r17, 0xDF    ;Pone El Valor En La Pila
 Out    SPL, r17     ;Apunta A 0xDF      

 Cbi 0x11,0x00 ;Pone El Bit 0 De DDRD En Estado Logico 0 (-0V)
 Cbi 0x11,0x02 ;Pone El Bit 2 De DDRD En Estado Logico 0 (-0V)DDRD
 Cbi 0x11,0x04 ;Pone El Bit 4 De DDRD En Estado Logico 0 (-0V)DDRD
 Sbi 0x11,0x05 ;Pone El Bit 5 Del PORTD En Estado Logico 1 (+5V)

 Ldi R17,0x00
 Ldi R29,0x00
 Ldi R28,0x60   ;Apunta En La Direcion $60 De La Ram
 
L0021:

 St   Y+,R17    ;Grava En Ram Direcion $60 Lo Que Hay En R17 Es Decir 00
 Cpi  R28,0xE0  ;Compara Con E0
 Brcs   L0021   ;Salta a L0021 si C=1 Como No Hay Carry Sigue Gravando 00 Hasta  
 Cpi  R29,0x00  ;Comparar Con 00
 Brcs   L0021   ;Salta a L0021 si C=1 Como No Hay Carry Sigue El Code En L0026:

L0026:

 Ldi R26,0x60   ;Apunta En La Direcion $60 De La Ram
 Ldi R18,0x04   ;Esto Parece Ser Bytes Que Vamos A Grabar o Leer

L0028:
; Aqui Saltara A Rcall L00C2 Donde Parece Esperar El Estado De Un Pin


Mira Primero La Foto 1 Y Luego La Foto 2
Una Vez hayas Conseguido esto Seguimos
« Última modificación: 21 de Enero de 2012, 16:27:40 por Belgitaes »

Desconectado Belgitaes

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 215
Re: Pasar de assembler a hexal
« Respuesta #11 en: 21 de Enero de 2012, 17:57:24 »
Mumm
Se Puede Saber que Hace Este Codigo ??:g)
Simple Curiosidad Ya Sabes
AGX28/GX46 Blocker (V2.00)

Desconectado michy

  • PIC10
  • *
  • Mensajes: 18
Re: Pasar de assembler a hexal
« Respuesta #12 en: 22 de Enero de 2012, 13:00:35 »
Es un lector de card,  :-/
lo de las fotos si me sale lo que no sale es el hexal, me voy a la carpeta de trabajo y no me larga el hexal o estare equivocado en que carpeta lo tiene que largar?
en la carpeta de trabajo solo me sale esto: avrbuild, trabajo en formato assembler con el logo de studio 4, y trabajo en formato lectura.
el codigo que puse anteriormente asi de esa forma lo compilo y no me larga ningun error, pero no se donde me pone el hexal.
cuando compilo en trabajo.asm me larga este mensaje y paresiera que esta bien

Loaded plugin STK500
gcc plug-in: Found avr-gcc at C:\WinAVR-20100110\bin\avr-gcc.exe
gcc plug-in: Found make at C:\WinAVR-20100110\utils\bin\make.exe
Loaded plugin Atmel AVR Assembler
Loaded partfile: C:\Program Files\Atmel\AVR Tools\PartDescriptionFiles\ATtiny2313.xml
Flash memory 2048
EEPROM memory 128
I/O start 00
I/O stop 3F
SRAM size 128
SRAM start 60
XRAM size 0
Temporary page buffer 32
SRAM start NA
AvrAssembler:  - Building from folder:  C:\Program Files\ATMEL\AVR Tools\AvrStudio4\trabajo\
AvrAssembler: Object file is empty and not saved
AvrAssembler:  - Building from folder:  C:\Program Files\ATMEL\AVR Tools\AvrStudio4\trabajo\
AvrAssembler: Object file is empty and not saved
AvrAssembler:  - Building from folder:  C:\Program Files\ATMEL\AVR Tools\AvrStudio4\trabajo\
AvrAssembler: Object file is empty and not saved
AvrAssembler:  - Building from folder:  C:\Program Files\ATMEL\AVR Tools\AvrStudio4\trabajo\
AvrAssembler: Object file is empty and not saved

tambien descarge la ultima version de avr gcc

Desconectado stk500

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4923
Re: Pasar de assembler a hexal
« Respuesta #13 en: 22 de Enero de 2012, 13:51:53 »
bueno amigo Michy, ya no pienso ayudarte mas, porque no eres capaz de leer los mensaje, si lee los mensaje te daria cuenta de tu gran error y novatada.
 ;-)

Desconectado michy

  • PIC10
  • *
  • Mensajes: 18
Re: Pasar de assembler a hexal
« Respuesta #14 en: 22 de Enero de 2012, 14:24:02 »
bueno amigo Michy, ya no pienso ayudarte mas, porque no eres capaz de leer los mensaje, si lee los mensaje te daria cuenta de tu gran error y novatada.
 ;-)

no hay ningun problema amigo...no simpre pasa por leer y escribir. vos te fijas que practicando y envestigando pude manejar un poco mejor el studio.y de leer e leido varios apuntes de como se compila y demas... lo que no se que le pasa el sof o no me puedo dar cuenta en donde esta el error parese que mis ojos no ven.
 nos vemos ningun problema ya te agas.