Need help with c program - Programmers Heaven

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Categories

Need help with c program

Ebi_90Ebi_90 Posts: 2Member
I want to make a project digital code lock usin AT89c51.while compiling in Keil Compiler it shows error anybody please help me.I m new to programming.Here is the code





#include
#define port P1
#define dataport P2
#define key P0
#define sec 100
sbit rs = port^0;
sbit rw = port^1;
sbit en = port^2;

sbit col1=key^4;
sbit col2=key^5;
sbit col3=key^6;
sbit row1=key^0;
sbit row2=key^1;
sbit row3=key^2;
sbit row4=key^3;
sbit lock_output=P0^7;

int check=0;
int digit[4]={0,0,0,0};
int dig_one=3;
int dig_two=9;
int dig_three=0;
int dig_four=7;
int i,count=0;

void delay(unsigned int msec) //Time delay function
{
int i,j ;
for(i=0;i3)
{
lcd_cmd(0x01);
lcd_cmd(0x82);
lcd_data_string(" LOCK OPEN");
lock_output=1;
delay(500);
}
else
{
lcd_cmd(0x01);
lcd_cmd(0x82);
lcd_data_string(" WRONG PASSWORD");
lock_output=0;
count++;
delay(500);
}
}

void code_check() // Function to check password
{
if(i<=3 )
{
switch((i+1))
{
case 1: {
if(dig_one==digit[0])
{
check=check+1;
}
break;
}

case 2: {
if(dig_two==digit[1])
{
check=check+1;
}
break;
}

case 3: {
if(dig_three==digit[2])
{
check=check+1;
}
break;
}

case 4: {
if(dig_four==digit[3])
{
check=check+1;
}
break;
}
}
}
if(i==3)
{
ans();
}
}


void display(int a) //Display function
{
switch(a)
{
case 1:{
lcd_data('1');
delay(30);
digit[i]=1;
code_check();
break;
}
case 2:{
lcd_data('2');
delay(30);
digit[i]=2;
code_check();
break;
}
case 3:{
lcd_data('3');
delay(30);
digit[i]=3;
code_check();
break;
}
case 4:{
lcd_data('4');
delay(30);
digit[i]=4;
code_check();
break;
}
case 5:{
lcd_data('5');
delay(30);
digit[i]=5;
code_check();
break;
}
case 6:{
lcd_data('6');
delay(30);
digit[i]=6;
code_check();
break;
}
case 7:{
lcd_data('7');
delay(30);
digit[i]=7;
code_check();
break;
}
case 8:{
lcd_data('8');
delay(30);
digit[i]=8;
code_check();
break;
}
case 9:{
lcd_data('9');
delay(30);
digit[i]=9;
code_check();
break;
}
case 0:{
lcd_data('0');
delay(30);
digit[i]=0;
code_check();
break;
}
}
}

void check_col1()
{
row1=row2=row3=row4=1;
row1=0;
if(col1==0)
display(1);
row1=1;
row2=0;
if(col1==0)
display(4);
row2=1;
row3=0;
if(col1==0)
display(7);
row3=1;
row4=0;
if(col1==0)
{
row4=1;
}
}

void check_col2()
{
row1=row2=row3=row4=1;
row1=0;
if(col2==0)
display(2);
row1=1;
row2=0;
if(col2==0)
display(5);
row2=1;
row3=0;
if(col2==0)
display(8);
row3=1;
row4=0;
if(col2==0)
display(0);
row4=1;
}

void check_col3()
{
row1=row2=row3=row4=1;
row1=0;
if(col3==0)
display(3);
row1=1;
row2=0;
if(col3==0)
display(6);
row2=1;
row3=0;
if(col3==0)
display(9);
row3=1;
row4=0;
if(col3==0)
{
row4=1;
}
}

void main()
{
col1=col2=col3=1;
while(1)
{
lcd_cmd(0x01); //Clear LCD screen
lock_output=0;
lcd_cmd(0x82); // Set cursor on position first of first line
lcd("ENTER PASSWORD");
check=0;
row1=row2=row3=row4=0;
while(col1==1 && col2==1 && col3==1);
for(i=0;i<4;i++)
{
delay(100);
lcd_cmd(0xc4+i);
row1=row2=row3=row4=0;
while(col1==1 && col2==1 && col3==1);
row1=row2=row3=row4=0;
if(col1==0)
check_col1();
else
if(col2==0)
check_col2();
else
if(col3==0)
check_col3();
if(count==4)
{
lcd_cmd(0x01);
lcd_cmd(0x86);
lcd("SORRY");
lcd_cmd(0xc1);
lcd("NO MORE TRIALS");
while(1);
}
}
}
}
Sign In or Register to comment.