You are on page 1of 5

#include<8051.

h>
#include<intrpt.h>
#include<conio.h>
#include<stdio.h>
#include<delay.h>
#include<e2prom16.h>
#include<lcd4bit.h>
#define DTMF_PORT P1
#define DTMF_READY P3_BITS.B2
#define TIMER0_INT ET0
#define DELAY1 (65536 - 50000)
#define RESET_KEY P2_BITS.B7
void interrupt dtmf_isr(void);
void interrupt timer0_isr(void);
void on_ack(void);
void off_ack(void);
const char msg_1[] = {"***WELCOME TO***"};
const char msg_2[] = {" MOBILE VOTING. "};
const char msg_3[] = {" TOTAL VOTE "};
const char msg_4[] = {"CANDIDATE-1 VOTE"};
const char msg_5[] = {"CANDIDATE-2 VOTE"};
const char msg_6[] = {"CANDIDATE-3 VOTE"};
const char msg_7[] = {"CANDIDATE-4 VOTE"};
const char msg_8[] = {"NEW VOTER ONLINE"};
const char msg_9[] = {"Please Wait....."};
const char msg_10[] = {" Invalid Vote "};
const char msg_11[] = {"Ask to Try Again"};
const char msg_12[] = {" VOTE CASTED "};
const char msg_13[] = {" SUCCESSFULLY "};
const char msg_14[] = {"SYSTEM RESET IN "};
const char msg_15[] = {"PROCESS PLS WAIT"};
unsigned char dtmf_data,dtmf_sts,page_add,data_add,data_status;
unsigned char VoteTotal,VoteC1,VoteC2,VoteC3,VoteC4;
unsigned char Data1,Data2,Data3,Data4,Data5,DataCounter;
unsigned int Timer;
void main()
{
P0 = 0xff;
P1 = 0xff;
P2 = 0xff;
P3 = 0xff;
VoteTotal = 0;
VoteC1 = 0;
VoteC2 = 0;
VoteC3 = 0;
VoteC4 = 0;
ACK_SIGNAL = OFF;
DTMF_READY = ON;
DTMF_PORT = 0xff;
DTMF_INT = 0;
ET0 = 0;
ET1 = 0;
TR0 = 0;
do
{
if(!RESET_KEY)
{
Timer = 50;
while((Timer > 0) && (!RESET_KEY));
if(Timer == 0)

{
wr_lcd_cmd(LINE1);
wr_lcd_data(msg_14[]);
wr_lcd_cmd(LINE2);
wr_lcd_data(msg_15[]);
for(data_add = 0;data_add < 255;data_add++)
{
write_eprom(0x00,data_add,0x00);
}
}
}
if(!TOTAL_KEY)
{
VoteC1 = 0;
VoteC2 = 0;
VoteC3 = 0;
VoteC4 = 0;
VoteTotal = 0;
for(data_add = 0;data_add < 100;data_add++)
{
data_status = read_eprom(0x00,data_add);
if(data_status == 1)
{
VoteC1++;
VoteTotal++;
}
else
if(data_status == 2)
{
VoteC2++;
VoteTotal++;
}
else
if(data_status == 3)
{
VoteC3++;
VoteTotal++;
}
else
if(data_status == 4)
{
VoteC4++;
VoteTotal++;
}
}
wr_lcd_cmd(LINE1);
wr_lcd_data("C1 = ");
wr_lcd_data(VoteC1);
wr_lcd_data(", C2 = ");
wr_lcd_data(VoteC2);
wr_lcd_cmd(LINE2);
wr_lcd_data("C3 = ");
wr_lcd_data(VoteC3);
wr_lcd_data(", C4 = ");
wr_lcd_data(VoteC4);
Timer = 100;
while(Timer);
wr_lcd_cmd(LINE1);
wr_lcd_data(msg_3[mi]);
wr_lcd_cmd(LINE2);

wr_lcd_data(VoteTotal);
Timer = 50;
while(Timer);
}
if(dtmf_sts == 1)
{
dtmf_sts = 0;
}
}
while((Timer > 0) && (dtmf_sts == 0));
if(Timer > 0)
{
if(dtmf_sts == 1)
{
dtmf_sts = 0;
Data4 = dtmf_data;
DataCounter++;
}
}
while((Timer > 0) && (dtmf_sts == 0));
if(Timer > 0)
{
if(dtmf_sts == 1)
{
dtmf_sts = 0;
Data5 = dtmf_data;
DataCounter++;
}
}
if(DataCounter == 5)
{
if((Data1 == 12) && (Data5 == 12))
{
if((Data4 > 0) && (Data4 < 5))
{
if(Data2 == 10)
{
Data2 - = 10;
}
data_add = Data2 * 10;
data_add += Data3;
if((data_add > 0) && (data_add < 100))
{
data_status = read_eprom(0x00,data_add);
if(data_status == 0)
{
write_eprom(0x00,data_add,Data4);
DataCounter = 0;
}
}
}
}
}
if((DataCounter > 0) && (DataCounter <= 5))
{
wr_lcd_cmd(LINE1);
wr_lcd_data(msg_10[]);
wr_lcd_cmd(LINE2);
wr_lcd_data(msg_11[]);
DataCounter = 0;

BUZZER = BUZZER_ON;
off_ack();
off_ack();
off_ack();
off_ack();
off_ack();
off_ack();
off_ack();
off_ack();
off_ack();
off_ack();
off_ack();
off_ack();
off_ack();
off_ack();
off_ack();
off_ack();
BUZZER = BUZZER_OFF;
}
else
{
wr_lcd_cmd(LINE1);
wr_lcd_data(msg_12[]);
wr_lcd_cmd(LINE2);
wr_lcd_data(msg_13[]);
off_ack();
Timer = 50;
while(Timer);
}
}
wr_lcd_cmd(LINE1);
wr_lcd_data(msg_1[]);
wr_lcd_cmd(LINE2);
wr_lcd_data(msg_2[]);
}while(1);
}
void interrupt timer0_isr(void)
{
if(Timer > 0)
{
Timer--;
}
TL0 = DELAY1 & 0x0f;
TH0 = DELAY1/256;
}
void interrupt dtmf_isr(void)
{
dtmf_data = DTMF_PORT;
dtmf_data = dtmf_data & 0x0f;
}
void on_ack(void)
{
unsigned char i,j;
for(i=0;i<255;i++)
for(j=0;j<50;j++);
for(i=0;i<255;i++)
{
for(j=0;j<70;j++);
ACK_SIGNAL = ~ACK_SIGNAL;
}

ACK_SIGNAL = OFF;
}
void off_ack(void)
{
unsigned char i,j;
for(i=0;i<255;i++)
for(j=0;j<50;j++);
for(i=0;i<255;i++)
{
for(j=0;j<70;j++);
ACK_SIGNAL = ~ACK_SIGNAL;
}
ACK_SIGNAL = OFF;
for(i=0;i<255;i++)
for(j=0;j<50;j++);
for(i=0;i<255;i++)
{
for(j=0;j<70;j++);
ACK_SIGNAL = ~ACK_SIGNAL;
}
ACK_SIGNAL = OFF;
}

You might also like