Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

74ls259 problem with 16f74

Status
Not open for further replies.

ateym

Newbie level 3
Joined
Sep 29, 2004
Messages
4
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Activity points
62
Hi,
My following code is working on proteus correctly.
But when I loaded it on pic in real application.
I could not seen any thing..
What is my fault...
Regards

//Ali Asker
//2006
#include<16f74.h>
#fuses XT,PUT,NOWDT
#use delay(clock=4000000 )
#byte port_a=5
#byte port_b=6
#byte port_c=7
#byte port_d=8
#define INTS_PER_SECOND 14
#define SegmentPort port_b

byte seconds,minutes,hours,int_count;
int l_digit, h_digit;

byte digitValues[4]={ 0x00,
0x00,
0x00,
0x00};
byte digitValue1,digitValue2,digitValue3,digitValue4;

byte const tblSevenSegment[10]={//01234567
0b11111101, //0
0b01100000, //1
0b11011011, //2
0b11110010, //3
0b01100110, //4
0b10110111, //5
0b10111111, //6
0b11100000, //7
0b11111111, //8
0b11100111 //9

};



#bit ENABLE=7.0
#bit ENABLE2=7.1
#bit DATA=7.6
#bit A0=7.7
#bit A1=8.1
#bit A2=8.0
boolean ignition_flag=false;
boolean ignition_on=false;


#int_rtcc
clock_isr() {

if(--int_count==0) {
seconds++;
if(seconds>59)
{
seconds=0;
minutes++;
if(minutes>59)
{
minutes=0;
hours++;
if(hours>23)
{
hours=0;
}
}


}
int_count=INTS_PER_SECOND;

}
set_rtcc(0);
}


void set_259(byte z1,byte y1,byte x1,byte d1,byte en1,byte disable1);
void set_2592(byte z2,byte y2,byte x2,byte d2,byte en2,byte disable2);
void init_259(void);
void ignition_test(void);

void bin2bcd(int value);
void GetDigitValues(byte num1,byte num2);
void Display(void);

main()
{


set_tris_b(0x00);
set_tris_c(0x00);
set_tris_d(0x00);


int_count=INTS_PER_SECOND;
set_rtcc(0);
setup_counters (RTCC_INTERNAL, RTCC_DIV_256);
enable_interrupts (INT_RTCC);
enable_interrupts(GLOBAL);


init_259();
delay_ms(20);

for(;;)
{

GetDigitValues(minutes,seconds);
Display();



}

}





void set_259(byte z1,byte y1,byte x1,byte d1,byte en1,byte disable1)
{
A0=x1;
A1=y1;
A2=z1;
DATA=d1;
ENABLE=en1;
delay_us(50);
ENABLE=disable1;
DATA=0;
A0=0;
A1=0;
A2=0;
}
void set_2592(byte z2,byte y2,byte x2,byte d2,byte en2,byte disable2)
{
A0=x2;
A1=y2;
A2=z2;
DATA=d2;
ENABLE2=en2;
delay_us(50);
ENABLE2=disable2;
DATA=0;
A0=0;
A1=0;
A2=0;

}
void init_259(void)
{
set_259(0,0,0,0, 0,1); //0
set_259(0,0,1,0, 0,1); //1
set_259(0,1,0,0, 0,1); //2
set_259(0,1,1,0, 0,1); //3
set_259(1,0,0,0, 0,1); //4
set_259(1,0,1,0, 0,1); //5
set_259(1,1,0,0, 0,1); //6
set_259(1,1,1,0, 0,1); //7


set_2592(0,0,0,0, 0,1); //0
set_2592(0,0,1,0, 0,1); //1
set_2592(0,1,0,0, 0,1); //2
set_2592(0,1,1,0, 0,1); //3
set_2592(1,0,0,0, 0,1); //4
set_2592(1,0,1,0, 0,1); //5
set_2592(1,1,0,0, 0,1); //6
set_2592(1,1,1,0, 0,1); //7
}




//////////////////////////////////////////////////////////////////
//convert to bcd
////////////////////////////////////////////////////////////////////
void bin2bcd(int value)
{
h_digit=0;

if (value>=10)
{ do
{ value-=10;
h_digit++; }
while (value>=10); }

l_digit=value;
}
//putting bcd values into digitValues
/////////////////////////////////////////////////////////////////////////

void GetDigitValues(byte num1,byte num2)
{

bin2bcd(num2);

digitValues[0]=tblSevenSegment[l_digit];
digitValues[1]=tblSevenSegment[h_digit];



bin2bcd(num1);
digitValues[2]=tblSevenSegment[l_digit];
digitValues[3]=tblSevenSegment[h_digit];

}
////////////////////////////////////////////////////////////////////



//display on 4 7segment cc display
void Display(void)
{
byte k;

for (k=0;k<4;k++)
{


SegmentPort=(digitValues[k]);

if(k==0)
{

set_2592(1,0,1,0,0,1); //5 0 4
set_2592(1,0,0,1,0,1); //4 set 1
//set_2592(1,1,1,0,0,1); //7 0 2
// set_2592(1,1,0,0,0,1); //6 0 3
}

else if(k==1)
{

set_2592(1,0,0,0,0,1); //4 set 1
set_2592(1,1,1,1,0,1); //7 0 2
//set_2592(1,1,0,0,0,1); //6 0 3
//set_2592(1,0,1,0,0,1); //5 0 4

}
else if(k==2)
{

//set_2592(1,0,0,0, 0,1); //4 1
set_2592(1,1,1,0,0,1); //7 0 2
set_2592(1,1,0,1,0,1); //6 0 3
// set_2592(1,0,1,0, 0,1); //5 0 4

}
else if(k==3)
{

// set_2592(1,0,0,0, 0,1); //4 1
// set_2592(1,1,1,0, 0,1); //7 0 2
set_2592(1,1,0,0,0,1); //6 0 3
set_2592(1,0,1,1,0,1); //5 0 4

}


delay_ms(2);
// port_b=0;

}
}
 

Status
Not open for further replies.

Similar threads

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top