Program for initialize two row lcd, Assembly Language

Assignment Help:

init_lcd                        ;(this initialises a 2 row lcd)

    bcf     TRISA,0             ;PORTA bit 0 as an output (lcd RS pin)
    bcf     TRISA,1             ;PORTA bit 1 as an output (lcd R/W pin)
    bcf     TRISA,2             ;PORTA bit 2 as an output (lcd E pin)

    
    bcf     lcd_rs
    bcf     lcd_rw
    bcf     lcd_en
    movlw   b'00110000'         ;Instruction - function set. First of 3
    call    lcd_write
    call    Delay5              ;wait MORE THAN 4.1mS


    movlw   b'00110000'         ;Instruction - function set. Second of 3
    call    lcd_write
    movlw   .33                 ;wait MORE THAN 100uS [(33 x 3) +1 +1 + (1 x 2)] - measured 102uS on scope
    movwf   counta              ;1 cycle
    decfsz  counta              ;1 cycle until true then a 2 cycle
    goto    $-2                 ;2 cycle instruction

    movlw   b'00110000'         ;Instruction - function set. Third of 3
    call    lcd_write

    movlw   b'00111000'         ;8 bit data / 2 line display / 5x8 character font
    call    lcd_write
    call    busy

    movlw   b'00001111'         ;instruction bit / display on / cursor position on / blinking cursor on
    call    lcd_write
    call    busy

    movlw   b'00000001'
    call    lcd_write
    call    busy

    movlw   b'00000110'         ;increment cursor position by 1 / don't shift display
    call    lcd_write
    call    busy

    return  ;return from initialization routine

lcd_write

    movwf   lcd_data            ;data to port
    bsf     lcd_en              ;sets LCD enable pin high
    bcf     lcd_en              ;data is latched into lcd on high to low transition of E

    return

busy

    bsf     TRISC,7             ;was output when sending init data, now input to read busy flag
    bsf     lcd_rw              ;set high to read data from lcd
    bsf     lcd_en              ;enable
    btfsc   lcd_busy            ;is the busy flag low?
    goto    $-2                 ;no, go back and keep checking until it is
    bcf     lcd_en              ;busy flag now clear
    bcf     lcd_rw              ;set lcd back to write mode
    bcf     TRISC,7             ;port bit as an output again

    return
Delay30
        movlw   .30             ;delay 30mS
        goto    d0
Delay5
        movlw   .5              ;delay 5ms
d0      movwf   count1
d1      movlw   0xC7
        movwf   counta
        movlw   0x01
        movwf   countb
Delay_0
        decfsz  counta
        goto    $+6
        decfsz  countb
        goto    Delay_0
        decfsz  count1
        goto    d1

        retlw   .0              ;return from the delay routine


Related Discussions:- Program for initialize two row lcd

Formulate the linear programming model , Print Media Advertising (PMA) has ...

Print Media Advertising (PMA) has been providing a contract to market Buzz Cola via newspaper ads in a main southern newspaper. Full-page ads in the weekday editions (Monday throug

8088 associated with 8259 a-microprocessor, For an 8088 the 2 addresses lin...

For an 8088 the 2 addresses linked with an 8259A are normally consecutive, and the AO line is associated to the AO pin, but because there are just 8 data pins on the 8259A and the

Project ideas, can u please give me ideas on Assembly Language Projects usi...

can u please give me ideas on Assembly Language Projects using Nasm

Program, write a program assembly language for adding two 3*3 matrix

write a program assembly language for adding two 3*3 matrix

Dq-dt-assemblers directive-microprocessor, DQ:   Define  Quad word:-  Th...

DQ:   Define  Quad word:-  This directive is taken in use to direct the assembler to reserve 4 words (8 bytes) of memory for the specified variable and can initialise it having

More Sentence Sense, When Seen in the choir, Terry was the picture of an an...

When Seen in the choir, Terry was the picture of an angelic devil. I have to underline the predicate twice

Arm assembly language code, You will need to upload your main.c and factori...

You will need to upload your main.c and factorial.s files and a .jpg photo of the output on your board using the Vista assignment upload features.  It must be submitted by the dead

Program, wap proram for bthe addition of two 3*3 matrix

wap proram for bthe addition of two 3*3 matrix

Arithmrtic operation exercise assempley HELP!, Open notepad and enter the c...

Open notepad and enter the code for a program that calculates the following arithmetic expression: x = a + b + c - d - e + f The operands a, b, c, d, e, f, and x should be declared

Eax and ax register, MyLocation SDWORD 14 TheTest        SDWORD 8     mov ...

MyLocation SDWORD 14 TheTest        SDWORD 8     mov    eax,MyLocation     mov    ebx,TheTest     neg     eax,ebx     sub     eax,ebx Show exactly what lives in eax after executi

Write Your Message!

Captcha
Free Assignment Quote

Assured A++ Grade

Get guaranteed satisfaction & time on delivery in every assignment order you paid with us! We ensure premium quality solution document along with free turntin report!

All rights reserved! Copyrights ©2019-2020 ExpertsMind IT Educational Pvt Ltd