domingo, 5 de janeiro de 2014

LCD Serial...

copy a:lcdseri2.asm
c:\8051\x8051
c:\8051\link
>cd exrom


Programa do Eder? não sei não....
        org     00h
        sjmp    PROG
        org     23h
        call serial
reti
        org     0bh
call timer
reti
        org     30h

PROG:
      CALL    LCDSET          ;vai para rotina de inicializacao do display
        MOV     R4,#080H        ;endereço da 1ª posicao da 1ª linha
ACALL LCDCOM
        MOV     R4,#'E'         ;escreve letra "E"
ACALL   LCDHR
        MOV     R4,#'n'         ;escreve letra "n"
ACALL   LCDHR
        MOV     R4,#'g'         ;escreve letra "g"
ACALL   LCDHR
        MOV     R4,#' '         ;escreve espaco
ACALL   LCDHR
        MOV     R4,#'C'         ;escreve letra "C"
ACALL   LCDHR
        MOV     R4,#'o'         ;escreve letra "o"
ACALL   LCDHR
        MOV     R4,#'m'         ;escreve letra "m"
ACALL   LCDHR
        MOV     R4,#'p'         ;escreve letra "p"
ACALL   LCDHR
        MOV     R4,#'u'         ;escreve letra "u"
ACALL   LCDHR
        MOV     R4,#'t'         ;escreve letra "t"
ACALL   LCDHR
        MOV     R4,#'a'         ;escreve letra "a"
ACALL   LCDHR
        MOV     R4,#'c'         ;escreve letra "c"
ACALL   LCDHR
        MOV     R4,#'a'         ;escreve letra "a"
ACALL   LCDHR
        MOV     R4,#'o'         ;escreve letra "o"
ACALL   LCDHR
        MOV     R4,#0C0H       ;endereço da 1ª posicao da 2ª linha
LCALL LCDCOM ;seta o display
        MOV     R4,#'>'         ;escreve caracter ">"
ACALL   LCDHR
        mov     TMOD,#00100001b ;contador modo 2 auto-reload
mov TH1,#0FDh ;carga do contador
        mov     TL1,#0FDh ;valor de contagem depende do baud-rate
        mov     TL0,#B0h ;valor inicial da contagem
        mov     TH0,#3Ch ;valor inicial da contagem
        mov     SCON,#01010000b ;serial modo 1 com bit de recepcao REN habilitado
mov pcon,#10000000b ;bit pcon.7 SMOD habilitado conforme baud-rate
setb tcon.6 ;habilita timer 1
setb tcon.4 ;habilita timer 0
mov     IE,#10010010b ;habilita interrupcao da serial
        mov     r7,#20d
mov r5,#0d
        mov     r3,#0d
        mov     r2,#0d
        mov     r1,#0d
        sjmp    $


serial: jb ri,recebe
jb ti,envia
ret

recebe: mov     r6,sbuf
mov a,r6
mov r4,a
        clr     RI
clr c
mov a,r6
subb a,#'-'
jz cont
clr c
mov a,r6
subb a,#'='
jz impc

envia: mov p1,#03h
clr ti
mov sbuf,r4
LCALL   LCDHR ;escreve dado lido da serial
jnb ti,$
clr ti
clr c
mov a,r5
subb a,#14d
jz cont
inc r5
ret

cont: mov r5,#0d
mov r6,#16d
        MOV     R4,#02h       ;retorno de linha
LCALL LCDCOM ;seta o display
        MOV     R4,#0C0H       ;endereço da 1ª posicao da 2ª linha
LCALL LCDCOM ;seta o display
clr1:   MOV     R4,#' ' ;12 pulsos de clock
LCALL   LCDHR ;24 pulsos de clock //escreve 2º digito do segundo
djnz r6,clr1
        MOV     R4,#02h       ;retorno de linha
LCALL LCDCOM ;seta o display
        MOV     R4,#0C0H       ;endereço da 1ª posicao da 2ª linha
LCALL LCDCOM
        MOV     R4,#'>'         ;escreve caracter ">"
ACALL   LCDHR
ret

impc:   MOV     R4,#0C0H        ;12 pulsos de clock //endereço da 1ª posicao da 2ª linha
LCALL LCDCOM ;24 pulsos de clock //seta o display
        MOV     R4,#'>' ;12 pulsos de clock
LCALL   LCDHR ;24 pulsos de clock //escreve 1º digito da hora
        MOV     R4,20h ;12 pulsos de clock
LCALL   LCDHR ;24 pulsos de clock //escreve 1º digito da hora
        MOV     R4,21h ;12 pulsos de clock
LCALL   LCDHR ;24 pulsos de clock //escreve 2º digito da hora
        MOV     R4,22h ;12 pulsos de clock
LCALL   LCDHR ;24 pulsos de clock //esc
Postar um comentário