; Letzte Änderung: 4.01.2008 ; Programmierer: Bo ; Public-Symbol: LINout ; Funktion: schreibt Text (20 Zeichen) aus XDATA in die angegebene Zeile ; HeaderFile: lcd535 .h ; Bibliothek: subr_535.lib ; einbinden: extern void LINout(Byte, Byte *); DPL DATA 082H DPH DATA 083H B DATA 0F0H ACC DATA 0E0H PSW DATA 0D0H EXTRN CODE (lcdbsy, _cmdout, _datout) PUBLIC _linout ;Symbol allgemein verfügbar ?PR?a_lino segment CODE ;Segment-Definition rseg ?PR?a_lino ;deklariertes Segment aktivieren _linout: push psw push acc push b push dpl push dph mov a, r7 ;Übergabe LCD-Zeile mov b, #20 ;Zeichenzähler = 20 (eine Zeile max. 20 Zeichen) cjne a, #01, $+7 ;Erste Zeile? ( 0 ... 15), (Anfangsadr. 00H) mov a, #00H jmp l0 cjne a, #02, $+7 ;Zweite Zeile? (16 ... 31), (Anfangsadr. 40H) mov a, #40H jmp l0 cjne a, #03, $+7 ;Dritte Zeile? (32 ... 47), (Anfangsadr. 10H) mov a, #14H jmp l0 mov a, #54H ;Vierte Zeile (48 ... 63), (Anfangsadr. 50H) l0: orl a, #10000000B ;Set DD_RAM_Adr. (Display Data) mov r7, a ;Cursorpos. in Reg.7 sichern call _cmdout ;Adresse in Display schreiben call lcdbsy cjne r3, #01H, ?i_dat ; 01H -> XDATA, 00H -> IDATA (ab Ver.6) ?x_dat: mov a, r1 ; Pointer auf TxBuffer im XDATA mov dpl, a mov a, r2 mov dph, a ?loop2: movx a, @dptr ; XDATA-Array lesen inc dptr mov r7, a call _datout call lcdbsy djnz b, ?loop2 pop dph pop dpl pop b pop acc pop psw RET ?i_dat: mov a, r1 mov r0, a ; Pointer auf Buffer im IDATA ?loop1: mov a, @r0 ; IDATA-Array lesen inc r0 mov r7, a call _datout call lcdbsy djnz b, ?loop1; pop dph pop dpl pop b pop acc pop psw RET END