Skip to content

Instantly share code, notes, and snippets.

@vduenasg
Last active May 7, 2016 02:33
Show Gist options
  • Select an option

  • Save vduenasg/02770af82eae51992f67 to your computer and use it in GitHub Desktop.

Select an option

Save vduenasg/02770af82eae51992f67 to your computer and use it in GitHub Desktop.
// * Author: Victor Dueñas Guardia
// * Info: www.netzek.com
.INCLUDE "M16DEF.INC"
.equ LCD_RS = 0
.equ LCD_RW = 1
.equ LCD_E = 2
LDI R16,HIGH(RAMEND)
OUT SPH,R16
LDI R16,LOW(RAMEND)
OUT SPL,R16
CALL INICIAR_LCD
LDI R29,HIGH(MENSAJE)
LDI R28,LOW(MENSAJE)
CALL RETARDO
CALL SEND_STRING
BUCLE:
RJMP BUCLE
INICIAR_LCD:
LDI R16,$FF;
OUT DDRA,R16
OUT DDRB,R16
CBI PORTB,LCD_E
CBI PORTB,LCD_RS
CBI PORTB,LCD_RW
LDI R16,$38;
OUT PORTA,R16
SBI PORTB,LCD_E
CBI PORTB,LCD_E
CBI PORTB,LCD_E
CBI PORTB,LCD_RS
CBI PORTB,LCD_RW
LDI R16,$0F;
OUT PORTA,R16
SBI PORTB,LCD_E
CBI PORTB,LCD_E
CBI PORTB,LCD_E
CBI PORTB,LCD_RS
CBI PORTB,LCD_RW
LDI R16,$06;
OUT PORTA,R16
SBI PORTB,LCD_E
CBI PORTB,LCD_E
RET
SEND_CHAR:
//Caracter en R18
SBI PORTB,LCD_RS
CBI PORTB,LCD_RW
CBI PORTB,LCD_E
OUT PORTA,R18
SBI PORTB,LCD_E
CBI PORTB,LCD_E
CALL RETARDO
RET
SEND_STRING:
//Envia mensaje direccionado por Y
LDI R23,0
SEGUIR:
MOVW R31:R30,R29:R28
MOV R22,R23
ADD R30,R22
EOR R22,R22
ADC R31,R22
CLC
ROL R30
ROL R31
LPM R18,Z
CPI R18,$FF
BREQ SALIR
CALL SEND_CHAR
ORI R30,$01
LPM R18,Z
CPI R18,$FF
BREQ SALIR
CALL SEND_CHAR
INC R23
JMP SEGUIR
SALIR:
RET
RETARDO:
LDI R21,31
BUCLE_EXTERNO:
LDI R20,255
BUCLE_INTERNO:
NOP
NOP
NOP
NOP
NOP
NOP
NOP
DEC R20
BRNE BUCLE_INTERNO
DEC R21
BRNE BUCLE_EXTERNO
RET
.CSEG
.ORG 0X0100
MENSAJE:
.DB "ATmega16",$FF;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment