Hello everyone! I've a problem... I wrote a program which transmit a text to LCD in assembler...but I must rewrite this code into C language... And that's my problem cause don't know so much C language to rewrite this code...:/ Please help me...
P4 DATA 84H P5 DATA 85H P6 DATA 86H P7 DATA 96H WDTCN DATA 0FFH ADRES_1 DATA 22H ADRES_2 DATA 23H ADRES_3 DATA 24H LCDDA_CLK_1 EQU 08H LCDDA_CLK_2 EQU 00H LCDDA_CLK_3 EQU 00H LCDCTR_CLK_1 EQU 09H LCDCTR_CLK_2 EQU 00H LCDCTR_CLK_3 EQU 00H ORG 00H LJMP START ORG 100H DELAY: NOP RET STERRING_LCD: MOV ADRES_1,#LCDCTR_CLK_1 MOV ADRES_2,#LCDCTR_CLK_2 MOV ADRES_3,#LCDCTR_CLK_3 RET DATA_LCD: MOV ADRES_1,#LCDDA_CLK_1 MOV ADRES_2,#LCDDA_CLK_2 MOV ADRES_3,#LCDDA_CLK_3 RET INFLAM: MOV ADRES_1,#0AH MOV ADRES_2,#00H MOV ADRES_3,#00H ORL P4,#80H ANL P4,#0FBH ANL P4,#0BFH CALL SEND_ADRES RET SEND_ADRES: ANL P4,#0C7H MOV P7,ADRES_1 ORL P4,#08H CALL DELAY MOV P7,ADRES_2 ORL P4,#10H CALL DELAY MOV P7,ADRES_3 ORL P4,#20H CALL DELAY ANL P4,#0FBH RET ENABLE: MOV P6,#20H CALL STERRING_LCD CALL SEND_ADRES NOP NOP MOV P6,#00H CALL STERRING_LCD CALL SEND_ADRES RET WRITE_STER_LCD: MOV P6,#00H CALL STERRING_LCD CALL SEND_ADRES MOV P5,A CALL DATA_LCD CALL SEND_ADRES CALL ENABLE RET WRITE_DATA_LCD: MOV P6,#10H CALL STERRING_LCD CALL SEND_ADRES MOV P5,A CALL DATA_LCD CALL SEND_ADRES CALL ENABLE RET START: CLR EA MOV WDTCN,#0DEh MOV WDTCN,#0ADh SETB EA CALL INFLAM MOV A,#0FH ;WLACZENIE WYSWIETLACZA CALL WRITE_STER_LCD MOV A,#14H ;PRZESUWANIE KURSORA CALL WRITE_STER_LCD MOV A,#38H ;USTAWIENIE PARAMETROW PRACY CALL WRITE_STER_LCD MOV A,#01H ;CZYSZCZENIE EKRANU I ZEROWANIE ADRESU KURSORA CALL WRITE_STER_LCD MOV A,#06H ;USTAWIENIE TRYBU WPROWADZANIA ZNAKOW CALL WRITE_STER_LCD MOV A,#52H ;R CALL WRITE_DATA_LCD MOV A,#61H ;a CALL WRITE_DATA_LCD MOV A,#66H ;f CALL WRITE_DATA_LCD MOV A,#61H ;a CALL WRITE_DATA_LCD MOV A,#6CH ;l CALL WRITE_DATA_LCD SJMP $ END
See example project at: http://www.keil.com/appnotes/docs/apnt_161.asp Maybe it helps. Reinhard
BEWARE When you switch from almost any processor to a 1 clock Cygnal (or use "canned" LCD code) you will most likely have timing problems. During initial debugging set the system clock (use the PLL) to something extremely slow. Then when that works, set you clock to the final value and fix the timings.