| ??? 04/30/11 14:34 Read: times  | 
#182126 - Assembler way is difficult Responding to: ???'s previous message  | 
but has ultimate control over the microcontroller.
 When the program has to stop running in the microcontroller, a simple way (not the only one) is to use the following STOP: sjmp $ or FIN: sjmp FIN about the MESSAGE: in order to display a string from code memory to lcd (having that the lower level routines are OK) may be like this MESSAGE:
    mov DPTR, #msga1
    acall lcd_cputs	
    
    MOV A,#84h           	
    acall LCD_COMMAND       
    
    mov DPTR, #msga2
    acall lcd_cputs	
    
    MOV A, #C1h           	
    CALL LCD_COMMAND                   ;change line
    
    mov DPTR, #msga3
    acall lcd_cputs	
    
    RET
;--------------------------------------- lcd_cputs -----------------------------
; Prints a null terminated string from code memory to lcd at current cursor
; position. Expects DPTR point to string start address in code memory.
;-------------------------------------------------------------------------------
lcd_cputs:                             ; Uses A and DPTR, returns nothing 
    push A                             ; 
lcd_cputsloop:                         ; 
    clr A                              ; clear A as index 
    movc A, @A+DPTR                    ; get first/next byte from string
    jz lcd_cputsexit                   ; if we get null 0x00 then finish
    acall WRITE_LCD_TEXT               ; 
    inc DPTR                           ; 
    sjmp lcd_cputsloop                 ; loop for next byte until 0x00
lcd_cputsexit:                         ;
    pop A                              ;
    ret                                ;
;-------------------------------------------------------------------------------
; most Assemblers define a null terminated string as text included in double quotes
;
msga1:  DB "VAG."
msga2:  DB "TRIANTAFILOU_347"
msga3:  DB "FINGERPRINT_SENSOR"
 
The ORG and END assembler directives are already explained by Per and Erik.  | 



