Armando
New Member
Hi, I'm new using the ATmega 8535 and I'm doing a program (in Assembly) to display in a matrix led (16 x 8) a message (for example: Hello World).
By the time, we don't saw much the Assemly language for the ATmega. I have an idea of how to make the program, but I have questions about how to display the message and what can I write of the code.
This is my code. I had some help from the professor:
;Proyecto final
;Aqui se define la estructura basica del programa
.include "m8535def.inc"
.org $00
rjmp inicio
.org $15
inicio: ldi r16,$5f ;configurar la pila
out spl,r16
ldi r17,$02
out sph,r17
retardo: ldi r22, 100 ;con estos valores 100,5,100
repite4: ldi r21,5 ;el retardo es de aproximadamente
repite3: ldi r20,100 ;un segundo
repite2: dec r20
cpi r20,0
brne repite2
dec r21
cpi r21,0
brne repite3
dec r22
cpi r22,0
brne repite4
reti
retardo1: ldi r22, 50
repite5: ldi r21,5
repite6: ldi r20,100
repite7: dec r20
cpi r20,0
brne repite7
dec r21
cpi r21,0
brne repite6
dec r22
cpi r22,0
brne repite5
reti
;Aqui empieza el codigo de la matriz de leds
rcall confpacb
rcall almac
denues: ldi YH, $0
ldi YL, $70
ldi XH, $0
ldi XL, $70
ldi r16, $6 ;matriz de 6 columnas
ldi r17, $13 ;Armando Cifuentes: 17 palabras contando espacio. 17 to hex= 11+2=13
mul r16, r13 ;letras del mensaje en Hexadecimal
movw r31:r30, r1:r0
add r26, r30
adc r27, r3
mov r21, r28
repit: mov r28, r21
ldi r16, $0
otravez: ldi r20, $0f
rcall mandamsg
ldi r17, $11
add r28, r17
inc r16
cp r16, r18
brlt otravez
inc r21
cp r21, r26
brne repit
;.......hace falta codigo
;Aqui empiezan las letras
;Inicio de palabra: Armando
;caracter: A
ldi r16,$7C
sts 0x0060,r16
ldi r16,$12
sts 0x0061,r16
ldi r16,$11
sts 0x0062,r16
ldi r16,$12
sts 0x0063,r16
ldi r16,$7C
sts 0x0064,r16
ldi r16,$00
sts 0x0065,r16
;caracter: r
ldi r16,$7C
sts 0x0066,r16
ldi r16,$08
sts 0x0067,r16
ldi r16,$04
sts 0x0068,r16
ldi r16,$00
sts 0x0069,r16
;caracter: m
ldi r16,$7C
sts 0x006a,r16
ldi r16,$04
sts 0x006b,r16
ldi r16,$78
sts 0x006c,r16
ldi r16,$04
sts 0x006d,r16
ldi r16,$78
sts 0x006e,r16
ldi r16,$00
sts 0x006f,r16
;caracter: a
ldi r16,$30
sts 0x0070,r16
ldi r16,$4A
sts 0x0071,r16
ldi r16,$4A
sts 0x0072,r16
ldi r16,$4A
sts 0x0073,r16
ldi r16,$3C
sts 0x0074,r16
ldi r16,$00
sts 0x0075,r16
;caracter: n
ldi r16,$7C
sts 0x0076,r16
ldi r16,$04
sts 0x0077,r16
ldi r16,$04
sts 0x0078,r16
ldi r16,$04
sts 0x0079,r16
ldi r16,$78
sts 0x007a,r16
ldi r16,$00
sts 0x007b,r16
;caracter: d
ldi r16,$38
sts 0x007c,r16
ldi r16,$44
sts 0x007d,r16
ldi r16,$44
sts 0x007e,r16
ldi r16,$44
sts 0x007f,r16
ldi r16,$3F
sts 0x0080,r16
ldi r16,$00
sts 0x0081,r16
;caracter: o
ldi r16,$38
sts 0x0082,r16
ldi r16,$44
sts 0x0083,r16
ldi r16,$44
sts 0x0084,r16
ldi r16,$44
sts 0x0085,r16
ldi r16,$38
sts 0x0086,r16
ldi r16,$00
sts 0x0087,r16
;Fin de palabra: Armando
;caracter:
ldi r16,$00
sts 0x0088,r16
ldi r16,$00
sts 0x0089,r16
Thank you for all, and sorry for the inconvenient.
By the time, we don't saw much the Assemly language for the ATmega. I have an idea of how to make the program, but I have questions about how to display the message and what can I write of the code.
This is my code. I had some help from the professor:
;Proyecto final
;Aqui se define la estructura basica del programa
.include "m8535def.inc"
.org $00
rjmp inicio
.org $15
inicio: ldi r16,$5f ;configurar la pila
out spl,r16
ldi r17,$02
out sph,r17
retardo: ldi r22, 100 ;con estos valores 100,5,100
repite4: ldi r21,5 ;el retardo es de aproximadamente
repite3: ldi r20,100 ;un segundo
repite2: dec r20
cpi r20,0
brne repite2
dec r21
cpi r21,0
brne repite3
dec r22
cpi r22,0
brne repite4
reti
retardo1: ldi r22, 50
repite5: ldi r21,5
repite6: ldi r20,100
repite7: dec r20
cpi r20,0
brne repite7
dec r21
cpi r21,0
brne repite6
dec r22
cpi r22,0
brne repite5
reti
;Aqui empieza el codigo de la matriz de leds
rcall confpacb
rcall almac
denues: ldi YH, $0
ldi YL, $70
ldi XH, $0
ldi XL, $70
ldi r16, $6 ;matriz de 6 columnas
ldi r17, $13 ;Armando Cifuentes: 17 palabras contando espacio. 17 to hex= 11+2=13
mul r16, r13 ;letras del mensaje en Hexadecimal
movw r31:r30, r1:r0
add r26, r30
adc r27, r3
mov r21, r28
repit: mov r28, r21
ldi r16, $0
otravez: ldi r20, $0f
rcall mandamsg
ldi r17, $11
add r28, r17
inc r16
cp r16, r18
brlt otravez
inc r21
cp r21, r26
brne repit
;.......hace falta codigo
;Aqui empiezan las letras
;Inicio de palabra: Armando
;caracter: A
ldi r16,$7C
sts 0x0060,r16
ldi r16,$12
sts 0x0061,r16
ldi r16,$11
sts 0x0062,r16
ldi r16,$12
sts 0x0063,r16
ldi r16,$7C
sts 0x0064,r16
ldi r16,$00
sts 0x0065,r16
;caracter: r
ldi r16,$7C
sts 0x0066,r16
ldi r16,$08
sts 0x0067,r16
ldi r16,$04
sts 0x0068,r16
ldi r16,$00
sts 0x0069,r16
;caracter: m
ldi r16,$7C
sts 0x006a,r16
ldi r16,$04
sts 0x006b,r16
ldi r16,$78
sts 0x006c,r16
ldi r16,$04
sts 0x006d,r16
ldi r16,$78
sts 0x006e,r16
ldi r16,$00
sts 0x006f,r16
;caracter: a
ldi r16,$30
sts 0x0070,r16
ldi r16,$4A
sts 0x0071,r16
ldi r16,$4A
sts 0x0072,r16
ldi r16,$4A
sts 0x0073,r16
ldi r16,$3C
sts 0x0074,r16
ldi r16,$00
sts 0x0075,r16
;caracter: n
ldi r16,$7C
sts 0x0076,r16
ldi r16,$04
sts 0x0077,r16
ldi r16,$04
sts 0x0078,r16
ldi r16,$04
sts 0x0079,r16
ldi r16,$78
sts 0x007a,r16
ldi r16,$00
sts 0x007b,r16
;caracter: d
ldi r16,$38
sts 0x007c,r16
ldi r16,$44
sts 0x007d,r16
ldi r16,$44
sts 0x007e,r16
ldi r16,$44
sts 0x007f,r16
ldi r16,$3F
sts 0x0080,r16
ldi r16,$00
sts 0x0081,r16
;caracter: o
ldi r16,$38
sts 0x0082,r16
ldi r16,$44
sts 0x0083,r16
ldi r16,$44
sts 0x0084,r16
ldi r16,$44
sts 0x0085,r16
ldi r16,$38
sts 0x0086,r16
ldi r16,$00
sts 0x0087,r16
;Fin de palabra: Armando
;caracter:
ldi r16,$00
sts 0x0088,r16
ldi r16,$00
sts 0x0089,r16
Thank you for all, and sorry for the inconvenient.