Ensamblador - ¿Problemas con arreglos ensamblador?

 
Vista:
sin imagen de perfil
Val: 2
Ha aumentado 1 puesto en Ensamblador (en relación al último mes)
Gráfica de Ensamblador

¿Problemas con arreglos ensamblador?

Publicado por Francisco Emmanuel (1 intervención) el 01/06/2021 20:57:37
Buen día comunidad espero me puedan orientar estoy realizando un programa en ensamblador con un microcontrolador atmega 328p , a el tengo conectado un display de 7 segmentes en el cual voy a mostrar el abecedario ya tengo parte del código mi problema es que no me muestra las letras correctas, por ejemplo si pongo una A me muestra un g. Soy relativamente nuevo programando en ensamblador y la verdad no se que pueda estar mal en mi código. Dejo lo que llevo al momento:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
.ORG $0000                        ;El programa se escribe en la dirección 0
 
  START:
  LDI R20,0xFF                            ;Se configura el puerto B de salida
  OUT DDRB,R20
  LDI ZH,HIGH(MYDATA<<1)             ;ZH=Byte alto de la dirección de MYDATA
  LDI ZL,LOW(MYDATA<<1)             ;ZL= Byte bajo de la dirección de MYDATA
  LDI XH,HIGH(Alfabeto<<1)                 ;XH=$01 byte alto de la direccion en RAM
  LDI XL,LOW(Alfabeto<<1)            ;XL=$40 byte bajo de la direccion en RAM
 
 
  L1:
   LPM R20,Z+                         ;Trae el siguiente byte e incrementa Z
   CPI R20,0                          ;Compara con el fin de la cadena
   BREQ RetardoSiete              ;Si es cierto, va a HERE
   CPI R20,32
   BREQ RetardoCinco
   SUBI  R20,65
   ADD  XL,R20
   OUT  PORTB, XL
   CALL RetardoUnSeg
 
   RetardoUnSeg:
      ldi  r16, 6
      ldi  r17, 19
      ldi  r18, 174
 
       L1S:
       dec  r18
       brne L1S
       dec  r17
       brne L1S
       dec  r16
       brne L1S
        RJMP L1
       RET
 
RetardoCinco:
 
 ldi  r16, 26
 ldi  r17, 94
 ldi  r18, 110
L5S:
 dec  r18
 brne L5S
 dec  r17
 brne L5S
 dec  r16
 brne L5S
 rjmp PC+1
  RJMP L1
 RET
 
 
     RetardoSiete:
 ldi  r16, 36
 ldi  r17, 131
 ldi  r18, 207
 L7S:
 dec  r18
 brne L7S
 dec  r17
 brne L7S
 dec  r16
 brne L7S
 nop
  CALL START
 RET
 
.ORG 0x100                       ;Se ubican estos datos a partir de la direccion 0x100
 MYDATA: .DB "ABCDEFGHIJKLMNÑOPQRSTUVWXYZ",0    ;Cadena terminada en nulo
 Alfabeto:  .DB 0x77,0x7C,0x39,0x5E,0x79,0x71,0x6F,0x76,0x19,0x1E,0x7A,0x38,0x37,0x54,0x3F,0x73,0x67,0x50,0x6B,0x78,0x1C,0x3E,0x1D,0x70,0x6E,0x49
 RET
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder