🇩🇪
void LCD_gotoxy(uint8_t spalte, uint8_t zeile)
{
uint8_t Adresse;
akt_pos.spalte_nok = spalte; //hier Spalte gleich merken, wird verändert
akt_pos.zeile = zeile;
letzte_pos.nok =1; //letzte position nicht mehr gültig
// 2: Zeile 0..3
// 3: Spalte 0..39
// Zeile 0: 0x00
// Zeile 1: 0x40
// Zeile 2: 0x00+Zeilenlänge
// Zeile 3: 0x40+Zeilenlänge
if (zeile>1) //Zeile2, 3
{
spalte += 20; //LCD_spalten;
}
Adresse = ((zeile & 0x01) * 0x40) + spalte;
writeLCDCmd(Adresse | 0x80);
wait_1us (25);//_ff testweise org. 25us
}
bcf PORTC, LcdRs; ist nicht unbedingt nötig da schon gelöscht.
movlw adresse; (0x40)
movwf LcdDaten
bsf LCDDaten,7; (0xc0) bit 7 setzen, kann auch mit oder 0x80 gesetzt werden
call OutLcdControl
Zitat von: ^Cobra in 22.04.2025, 06:48:08 CESTDas Wetter zwingt mich zu sehr was im Garten,am Haus oder die immer noch nicht komplett eingeräumte Werkstatt weiter zu machen.Da geht es dir noch gut! Zusätzlich zum Wetter zwingt meine Frau mich, "was" am Garten zu machen. Und dann gibt es ja noch meinen zweiten Garten, den am geerbten Elternhaus. Das Grundstück hat 1.000 m² und zwecks des Leerstandes des Hauses ist die Natur sehr erfolgreich, sich dort auszubreiten. Dazu zählt übrigens auch die Tierwelt: es hat sich seit einem Jahr schon ein Reh den Garten als Nutzraum auserkoren. Das kommt aus dem nebenan liegenden Wald, spaziert ein Stück über die Anliegerstraße und tummelt sich auf meinem und den Nachbargrundstücken. Zudem musste ich mich in den letzten Tagen um 6 (!) Thermokomposter kümmern, also umsetzen und vorher noch eine irre Menge an Zweigen zerteilen, häckseln, etc..
#include "configuration.h"
#include "usb.h"
#include "main.h"
#include <stdio.h>
#if UIP_LOGGING == 1
void uip_log(const rom char *data) {
printOut( "%S\r\n", data );
}
#endif
#include <string.h>
#include <ctype.h>
#include <stdarg.h>
#include "net/TcpApps/telnetd.h"
#include "commandParser.h"
#include "hardware.h"
#include "lcd/lcd.h"
typedef void (*put_t)(const uint8_t);
static int _print(put_t put, const rom char *f, va_list ap);
stdout= _H_USER; //damit Aufruf in main.c
int _user_putc(char c){ // für printf
put_t fct;
#if TELNETD_SUPPORT == 1 && USB_SUPPORT == 1
fct = (stdOut == source_usb) ? &transmitUSB : &telnetSendChar;
#elif TELNETD_SUPPORT == 1
fct = &telnetSendChar;
#else
fct = &transmitUSB;
#endif
if (stdOut == source_lcd) fct = &writeLCDRomData;//&writeLCDData
fct( c );
}
extern source_t stdOut, stdOut_mr; // für print_test
void print_test(void){
lcd_neu= 0; LCD_ausw();// Anzeige (Hauptmenu) auswählen
writeLCDInitCmd(LCD_crcr_blink); //zum Testen des blinkens
writeLCDInitCmd(LCD_CLEARDISPLAY);
stdOut_mr = stdOut; //vorsichtshalber sichern
stdOut = source_lcd; //damit auf LCD Anzeige
//#define _user_putc(c) writeLCDData(c) in main.h definiert siehe putc.c
printf("%d\n",123);
printf("%3.2f\n",3.14);
printf("%f\n",3.14);
stdOut = stdOut_mr;
}