logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

sterowanie LCD kompatybilnym z HD44780. Zamiana C na asm

cys_ek 23 Sie 2008 01:08 2288 5
REKLAMA
  • #1 5464916
    cys_ek
    Poziom 10  
    Witam,
    chce napisać program do obsługi wyświetlacza LCD, ale nigdziej nie znalazłem informacji które by mnie zadowalały, dlatego postanowiłem przerobić kod ze strony http://radzio.dxp.pl/hd44780/hd44780_8bit_norw.zip i powstał plik C.txt program działa i bardzo ładnie wyświetla mi migający kursor. Niestety gdy przepisałem ten program na asm to wyświetlacz nie reaguje na komendy display on/off. Porównywałem szynę danych, E i RS z programu w C i asm i wychodziło, że jest to samo czyli teoretycznie jest to dobrze ale jednak musiałem błąd zrobić. Proszę o pomoc... :cry:
  • REKLAMA
  • #2 5465050
    adamwesola
    Poziom 24  
    Czesc , nie bede analizowal twojego programu, zrob to sam na podstawie mojego (fragment czestosciomierza) z oscylatorem 20MHz
    ini_LCD: ldi	r24,$FF 
    		out		DDRB,r24	; port B - wyjscia
    		out		DDRD,r24	; port D - wyjscia
    		rcall	cz_2ms
    		ldi		r24,$38	; interf.8-bit, 2 wiersze
    		rcall	lcd_cont
    		ldi		r24,$C 	; display on, reszta off
    		rcall	lcd_cont
    		ldi		r24,1 	; display clear
    		rcall	lcd_cont
    		rcall	cz_2ms
    		ret
    		
    lcd_cont:	cbi		PORTD,b1	; linia RS - komenda
    			   rjmp	skok		
    lcd_data:	sbi		PORTD,b1	; linia RS - znak dla LCD
    skok:	    out		PORTB,r24	
    		sbi		PORTD,b0	;linia E
    		nop
    		cbi		PORTD,b0	;linia E
    		ldi		r29,2		;czekaj 50us
    tu:	clr		r28		
    odlicz:	  sbiw	r28,1
    		brne	odlicz
    		ret
    		
    cz_2ms:	ldi		r29,$40		;czekaj 2ms
    		    rjmp	tu
    
  • REKLAMA
  • #3 5465402
    cys_ek
    Poziom 10  
    adamwesola napisał:
    Czesc , nie bede analizowal twojego programu, zrob to sam na podstawie mojego (fragment czestosciomierza) z oscylatorem 20MHz
    skopiowałem Twoj kod i odpaliłem i jest tak samo jak przedtem (zresztą ten mój kod asm jest prawie identyczny jak Twój). Te pytanie jest niewłaściwe, ale czemu mój wyświetlacz nie chce działać na asm a z C tak :|
  • REKLAMA
  • Pomocny post
    #4 5466269
    zumek
    Poziom 39  
    cys_ek napisał:
    ... czemu mój wyświetlacz nie chce działać na asm a z C tak :|

    Odpowiem pytaniem :-P
    Dlaczego Twoje podprogramy
    
    .equ	FOSC	=	8000000
    ;...
    	rcall czekaj_50us  ;994 cykle=124.25uS
    ;oraz
    	rcall czekaj_2ms   ;994 cykle=124.25uS
    

    "zajmują" procesor tylko(aż ?) na 994 cykle :?:

    Piotrek
  • REKLAMA
  • #6 5468892
    cys_ek
    Poziom 10  
    Dzięki Zumek, aż wstyd mi teraz
REKLAMA