I have done some changes according to all the suggestions:
Please check:
#include <stdio.h>
#include <stdlib.h>
#include <xc.h>
#include <LCD.h>
#define ldata PORTD //PORTD = LCD data pins
#define rs PORTEbits.RE0 //rs = PORTE.0
#define rw PORTEbits.RE1 //rw = PORTE.1
#define en PORTEbits.RE2 //en = PORTE.2
#define Up PORTAbits.RA0
#define Down PORTAbits.RA1
#define Select PORTAbits.RA2
#define Clock PORTBbits.RB5
#define Data PORTBbits.RB6
// End specification for pins
/* function prototype */
void MSDelay(unsigned int);
void lcdinit(void);
void lcdWrite(unsigned char);
void lcdout(char row, char column, char text);
void lcdchar (char x);
void SendPotValue (unsigned short num);
void SelectArrow();
//POT values;
unsigned short aa, count1, i;
int t, Flag, Mask;
const char MESSAGE[] = "VOL:";
void SendPotValue(unsigned short num1)
{
unsigned int // Mask;
Mask = 0x80;
Data = 1;
Clock = 1;
MSDelay(5);
Clock = 0;
// Shift in 8-bit wiper position for POTA
for (t=0; t<8; t++){
Flag = num1 & Mask;
if(Flag==0)
Data = 0;
else
Data = 1;
Clock = 1;
MSDelay(1);
Clock = 0;
Mask = Mask >> 1;
}
lcdcmd(0x01);
lcdout(1,3,MESSAGE); // Write message1 in 1st row
SelectArrow();
}
void SelectArrow()
{
for (i=0; i<count1; i++) {
lcdchar(1, 6+i, 255); //char row, char column, char out
}
}
void Debounce_Key(){
MSDelay(200);
}
void lcdcmd(unsigned char value)
{
ldata = value;
rs = 0;
rw = 0;
en = 1;
MSDelay(1);
en = 0;
}
void MSDelay(unsigned int itime)
{
unsigned int i, j;
for (i=0; i<itime; i++)
for (j=0; j<255; j++);
}
void lcdinit()
{
lcdcmd(0x38);
lcdcmd(0x0C);
lcdcmd(0x01);
lcdcmd(0x80);
}
void lcdout(char rows, char columns, char texts)
{
rs = 1;
lcdWrite( texts );
}
void lcdchar(char dat)
{
ldata= dat; /*Send data to LCD*/
rs = 1; /*Data Register is selected*/
en=1; /*High-to-Low pulse on Enable pin to latch data*/
NOP();
en=0;
MSDelay(1);
}
void main() {
TRISAbits.TRISA0 = 1;
TRISAbits.TRISA1 = 1;
TRISAbits.TRISA2 = 1;
TRISBbits.TRISB6 = 0; //SCL
TRISBbits.TRISB5 = 0; //SDA
CMCON = 0x07; // Disable comparators
ADCON1 = 0x0F; // Disable Analog functions
lcdinit(); // Initialize LCD
lcdout(1,1,MESSAGE); // Write message1 in 1st row
aa = 50;
count1 = 2;
SendPotValue(aa);
do {
if (!Up) {
Debounce_Key();
if (aa < 250) {
aa = aa + 25;
count1 = aa/25;
}
SendPotValue(aa);
}
if (!Down) {
Debounce_Key();
if (aa > 0) {
aa = aa - 25;
count1 = aa/25;
}
SendPotValue(aa);
}
if (!Select) {
Debounce_Key();
SelectArrow();
}
} while (1);
}
But I am still getting an error, i.e :
Speaker_Check.c:34: warning: (346) declaration of "Mask" hides outer declaration ------- Mask = 0x80;
Speaker_Check.c:52: warning: (361) function declared implicit int ------- lcdcmd(0x01);
Speaker_Check.c:53: warning: (358) illegal conversion of pointer to integer ------- lcdout(1,3,MESSAGE);
Speaker_Check.c:60: error: (186) too many function arguments ------- lcdchar(1, 6+i, 255);
Speaker_Check.c:69: error: (984) type redeclared ------- {
Speaker_Check.c:69: error: (1098) conflicting declarations for variable "lcdcmd" (Speaker_Check.c:68) --------- {
(908) exit status = 1
nbproject/Makefile-default.mk:106: recipe for target 'build/default/production/Speaker_Check.p1' failed
make[2]: Leaving directory 'C:/Users/Soni/MPLABXProjects/Speaker_Check.X'
nbproject/Makefile-default.mk:90: recipe for target '.build-conf' failed
make[1]: Leaving directory 'C:/Users/Soni/MPLABXProjects/Speaker_Check.X'
nbproject/Makefile-impl.mk:39: recipe for target '.build-impl' failed
make[2]: *** [build/default/production/Speaker_Check.p1] Error 1
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2
BUILD FAILED (exit value 2, total time: 1s)