I don't see any difference between Lcd8_Init and Lcd8_Config both P16 and P18 !
Anyway Lcd8_Config work only in standard configuration for Lcd8_Init .
P16 :
Code: Select all
;Lcd_Test.c,26 :: Lcd8_Config(&PORTE,&PORTD,2,1,0,7,6,5,4,3,2,1,0);
$0040 $3009 MOVLW PORTE
$0041 $00BF MOVWF FARG_Lcd8_Init+0
$0042 $3008 MOVLW PORTD
$0043 $00C0 MOVWF FARG_Lcd8_Init+1
$0044 $206E CALL _Lcd8_Init
;Lcd_Test.c,27 :: Lcd8_Init(&PORTE,&PORTD);
$0045 $3009 MOVLW PORTE
$0046 $00BF MOVWF FARG_Lcd8_Init+0
$0047 $3008 MOVLW PORTD
$0048 $00C0 MOVWF FARG_Lcd8_Init+1
$0049 $206E CALL _Lcd8_Init
I tested this in Mikropascal and work :
Code: Select all
;lcd_demo.ppas,24 :: Lcd8_Config(PORTC, PORTD, 0,1,2, 6,5,4,3,7,1,2,0);
$0624 $0E82 MOVLW PORTC
$0626 $6E48 MOVWF FARG_Lcd8_Config, 0
$0628 $0E0F MOVLW @PORTC
$062A $6E49 MOVWF FARG_Lcd8_Config+1, 0
$062C $0E83 MOVLW PORTD
$062E $6E4A MOVWF FARG_Lcd8_Config+2, 0
$0630 $0E0F MOVLW @PORTD
$0632 $6E4B MOVWF FARG_Lcd8_Config+3, 0
$0634 $6A4C CLRF FARG_Lcd8_Config+4, 0
$0636 $0E01 MOVLW 1
$0638 $6E4D MOVWF FARG_Lcd8_Config+5, 0
$063A $0E02 MOVLW 2
$063C $6E4E MOVWF FARG_Lcd8_Config+6, 0
$063E $0E06 MOVLW 6
$0640 $6E4F MOVWF FARG_Lcd8_Config+7, 0
$0642 $0E05 MOVLW 5
$0644 $6E50 MOVWF FARG_Lcd8_Config+8, 0
$0646 $0E04 MOVLW 4
$0648 $6E51 MOVWF FARG_Lcd8_Config+9, 0
$064A $0E03 MOVLW 3
$064C $6E52 MOVWF FARG_Lcd8_Config+10, 0
$064E $0E07 MOVLW 7
$0650 $6E53 MOVWF FARG_Lcd8_Config+11, 0
$0652 $0E01 MOVLW 1
$0654 $6E54 MOVWF FARG_Lcd8_Config+12, 0
$0656 $0E02 MOVLW 2
$0658 $6E55 MOVWF FARG_Lcd8_Config+13, 0
$065A $6A56 CLRF FARG_Lcd8_Config+14, 0
$065C $ECA9 F001 CALL _lcd8_config
;lcd_demo.ppas,25 :: Lcd8_Init(PORTB, PORTC); // initialize Lcd on PORTD (EasyPIC4).
$0660 $0E81 MOVLW PORTB
$0662 $6E43 MOVWF FARG_Lcd8_Init, 0
$0664 $0E0F MOVLW @PORTB
$0666 $6E44 MOVWF FARG_Lcd8_Init+1, 0
$0668 $0E82 MOVLW PORTC
$066A $6E45 MOVWF FARG_Lcd8_Init+2, 0
$066C $0E0F MOVLW @PORTC
$066E $6E46 MOVWF FARG_Lcd8_Init+3, 0
$0670 $ECA2 F002 CALL _lcd8_init