Hallo Eine kleine Schaltung und ein bischen Code reichen aus, um ein LCD-Display mit HD44780 über SPI zu betreiben. Die Schaltung kommt mit einem CD4094 aus. Kleinere Controller ( 2313 ) können auch benutzt werden. Ich habe dafür eine extra Routine geschrieben. Der max. Clock ist derzeit 1MHz. Viel Spass. Steffen
Hallo Steffen dein Code ist einer der wenigen zum Thema, der in ASM geschrieben ist. Mir gehts hier um das SPI. Habe dort eine Frage zur Unterfunktion out_4094: ;-------------------------------------------------- ; Ausgabe über SPI ;-------------------------------------------------- out_4094: push data_4094 cbi LCD_PORT,Strobe ; Strobe auf Low out SPDR, data_4094 spil: sbis SPSR, SPIF rjmp spil ; jump wenn nicht fertig sbi LCD_PORT,Strobe ; Strobe High nop cbi LCD_PORT,Strobe ; Strobe Low Daten OK pop data_4094 ret ; return dein Strobe ist wohl das /SS Pin. Ich gehe mit bis nach der SPIF-Flag -Abfrage. Danach setzt du das /SS Pin High (also SPI-Übertragung fertig). Sollte davor nicht noch das SPDR ausgelesen werden, damit das SPIF-lag wieder gelöscht wird? Ich habe die SPI-Zugriffe immer so geschrieben: cbi PortB, 4 ;/SS low ldi temp, 0xF0 ; irgendwas zum senden rcall spiout ; an SPI übergeben sbi PortB, 4 ;/SS high ; ========================= SPI Transmit ============== spiout: out SPDR, temp wait_spi: sbis SPSR,SPIF ; Transmission complete? rjmp wait_spi ; SPIF is set in temp2, SPDR ; release SPIF by reading Register ret ; back to programm.. Muss man denn das SPIF Flag nicht rücksetzen (indem man das SPDR ausliesst) ?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.