Jeffrey Peter
Member level 5
- Joined
- Aug 28, 2011
- Messages
- 82
- Helped
- 1
- Reputation
- 2
- Reaction score
- 1
- Trophy points
- 1,288
- Location
- Tirunelveli,Tamill Nadu, India
- Activity points
- 1,802
Hi, I'm getting the logic contentions detected error in Proteus. This program is a simple 8051 and LCd interfacing program written in Keil. What could be the problem ?
Thanks in advance
Thanks in advance
HTML:
#include<at89x51.h>
#define TRUE 1
#define cmdport P3
#define dataport P2
sbit rs = cmdport^0; //register select pin
sbit rw = cmdport^1; // read write pin
sbit e = cmdport^6; //enable pin
sbit LED = P1^7;
sbit BF= dataport^7; //Busy Flag
void led_blink()
{
LED=~LED;
}
void delay_msec(unsigned int msec) //Delay function
{
unsigned int i,j;
LED = TRUE;
for(i=0;i<msec;i++)
for(j=0;j<1250;j++)
{
led_blink();
}
}
void lcd_busy() //Check Busy Flag
{
BF = 1;
e = 1;
rs = 0;
rw = 1;
while(BF)
{
e=0;
delay_msec(2);
e=1;
}
}
void lcd_cmd(unsigned char item) //Function to send command to LCD
{
dataport = item;
rs= 0;
rw=0;
e=1;
delay_msec(1);
e=0;
lcd_busy();
}
void lcd_data(unsigned char item) //Function to send data to LCD
{
dataport = item;
rs= 1;
rw=0;
e=1;
delay_msec(1);
e=0;
lcd_busy();
}
void lcd_time(unsigned char *lcddata) //Displays a string in lcd
{
unsigned int LCDL1=0x80;
while(*lcddata)
{
LCDL1++;
lcd_cmd(LCDL1); //Set cursor to blink at line 1 positon 1
lcd_data(*lcddata++);
}
}
void lcd_ini(unsigned char *lcddata) //Function to initialize LCD
{
lcd_cmd(0x38); // Configuring settings to 8-bit 2 row
lcd_cmd(0x0E); // turn display ON for cursor blinking
lcd_cmd(0x06); //Display on
lcd_cmd(0x81); //Set cursor to blink at line 1 positon 1
lcd_time(lcddata);
//lcd_data('a');
//delay_msec(100);
}
void main()
{
unsigned short int LCDL1=0x80;
unsigned short int LCDL2=0xc0;
unsigned char *lcdtime="Good Work";
lcd_ini(lcdtime);
while(1)
{
delay_msec(1);
}
}