Hallo,
ich habe mal wieder ein neues Display und möchte es nur mal so zum laufen bekommen. Controller ist ein SED1530 und natürlich habe ich das Demoprogramm SED1531 angeschaut. Leider habe ich von Assembler keine Ahnung und das Demo enthält Assembler. Kann ich einfach im Demo
procedure LCD_SEDout(cmd : boolean; data : byte);
begin
A0:= not cmd;
cs:= 0;
// note: no other PortG accesses while this procedure is running!!
ASM;
LDD _ACCA, Y+00
LDI _ACCB, 8
SoutLp:
;IN _ACCALO, PortX
LDS _ACCALO, PortG; // "LDS" because PortG is not in IO area
LSL _ACCA
BRCS Sout1
CBR _ACCALO, 10h; // = bit 4 cleared
RJMP Sout2
Sout1:
SBR _ACCALO, 10h; // = bit 4 set
Sout2:
; store bit value into port
;OUT PortX, _ACCALO
STS PortG, _ACCALO; // "STS" because PortG is not in IO area
NOP;
NOP;
; scl:= 1;
SBR _ACCALO, 04h; // = bit 2 set
; store hi-clock into port
;OUT PortX, _ACCALO
STS PortG, _ACCALO; // "STS" because PortG is not in IO area
NOP;
NOP;
; scl:= 0;
CBR _ACCALO, 04h; // = bit 2 cleared
; store lo-clock into port
;OUT PortX, _ACCALO
STS PortG, _ACCALO; // "STS" because PortG is not in IO area
DEC _ACCB
BRNE SoutLp
endasm;
cs:= 1;
end;
die "PortG" gegen "PortC" tauschen und gut ists ?
Und ich vermute mal im Demo das bit 4 cleared und bit 4 set bewirkt die Datenübernahme (SI) und das gleich mit Bit 2 ergibt das CLK-Signal. Liege ich hier richtig ? Dementsprechend muß ich diese beiden Stellen auch an meine Belegung anpassen ?
Mein Display hat zusätzlich zum /CS ein CS (gegenpolig zum /CS) und einen Pin MS (der muß auf +5V).
gruss
Harry
ich habe mal wieder ein neues Display und möchte es nur mal so zum laufen bekommen. Controller ist ein SED1530 und natürlich habe ich das Demoprogramm SED1531 angeschaut. Leider habe ich von Assembler keine Ahnung und das Demo enthält Assembler. Kann ich einfach im Demo
Code
procedure LCD_SEDout(cmd : boolean; data : byte);
begin
A0:= not cmd;
cs:= 0;
// note: no other PortG accesses while this procedure is running!!
ASM;
LDD _ACCA, Y+00
LDI _ACCB, 8
SoutLp:
;IN _ACCALO, PortX
LDS _ACCALO, PortG; // "LDS" because PortG is not in IO area
LSL _ACCA
BRCS Sout1
CBR _ACCALO, 10h; // = bit 4 cleared
RJMP Sout2
Sout1:
SBR _ACCALO, 10h; // = bit 4 set
Sout2:
; store bit value into port
;OUT PortX, _ACCALO
STS PortG, _ACCALO; // "STS" because PortG is not in IO area
NOP;
NOP;
; scl:= 1;
SBR _ACCALO, 04h; // = bit 2 set
; store hi-clock into port
;OUT PortX, _ACCALO
STS PortG, _ACCALO; // "STS" because PortG is not in IO area
NOP;
NOP;
; scl:= 0;
CBR _ACCALO, 04h; // = bit 2 cleared
; store lo-clock into port
;OUT PortX, _ACCALO
STS PortG, _ACCALO; // "STS" because PortG is not in IO area
DEC _ACCB
BRNE SoutLp
endasm;
cs:= 1;
end;
die "PortG" gegen "PortC" tauschen und gut ists ?
Und ich vermute mal im Demo das bit 4 cleared und bit 4 set bewirkt die Datenübernahme (SI) und das gleich mit Bit 2 ergibt das CLK-Signal. Liege ich hier richtig ? Dementsprechend muß ich diese beiden Stellen auch an meine Belegung anpassen ?
Mein Display hat zusätzlich zum /CS ein CS (gegenpolig zum /CS) und einen Pin MS (der muß auf +5V).
gruss
Harry