Witam,
Miałem problem z wyświetlaczem, a mianowicie jeden kod działał na HD44780 a na niby kompatybilnym wyświetlaczu Hitech już nie. Po wielu próbach znalazłem miejsce
które należało zamienić na
Oryginalny kod funkcji do wysyłania znaków :
Moje pytania są następujące czemu się tak działo ? Rozumiem że kod ~(1<<PIN) jest chyba nie dominujący w sensie że nie wpływa na pozostałe piny czyli nie zmienia stanu lini RS a PORT&=0<<PIN owszem zmienia czy tak ? Drugie moje pytanie to czy muszą być te RS ponieważ po ich usunięciu (w miejscach zaznaczonych w kodzie) program funkcjonował bez problemów na jednym i drugim wyświetlaczu.
Miałem problem z wyświetlaczem, a mianowicie jeden kod działał na HD44780 a na niby kompatybilnym wyświetlaczu Hitech już nie. Po wielu próbach znalazłem miejsce
LCP&=0<<LCD_E|0<<LCD_RS;które należało zamienić na
LCP&=~(1<<LCD_E)|0<<LCD_RS; // Po usunieciu tego RS też działało na każdym i HD44780 i HitechOryginalny kod funkcji do wysyłania znaków :
void LCDsendChar(uint8_t ch)
{
//4 MSB bits
LDP=((ch>>2)&0b00111100);
LCP|=1<<LCD_RS|1<<LCD_E;
_delay_ms(1);
LCP&=0<<LCD_E|0<<LCD_RS; //--- bez 0<<LCD_RS tez dziala
_delay_ms(1);
//4 LSB bits
LDP=((ch<<2)&0b00111100);
LCP|=1<<LCD_RS|1<<LCD_E;
_delay_ms(1);
LCP&=0<<LCD_E|0<<LCD_RS; //----bez 0<<LCD_RS tez dziala
_delay_ms(1);
}
Moje pytania są następujące czemu się tak działo ? Rozumiem że kod ~(1<<PIN) jest chyba nie dominujący w sensie że nie wpływa na pozostałe piny czyli nie zmienia stanu lini RS a PORT&=0<<PIN owszem zmienia czy tak ? Drugie moje pytanie to czy muszą być te RS ponieważ po ich usunięciu (w miejscach zaznaczonych w kodzie) program funkcjonował bez problemów na jednym i drugim wyświetlaczu.