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.

Help with the source code

Status
Not open for further replies.

kaizer002

Newbie level 5
Joined
Jan 6, 2010
Messages
9
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Activity points
1,356
hello everyone.

I need some help regarding on our source which is compiled for our project. Our project supposed to be is a digital clock with stopwatch(with reset, and stop), and a countdown timer but we only built a digital clock.

We used 4 buttons for setting time (hold, hours, minutes, and seconds).

Schematic:

new.jpg


Code:

Code:
#include <16F877A.h>
#fuses XT,NOWDT,PUT,NOBROWNOUT,NOLVP
#use delay(clock = 4000000)
#byte PORTA=0X05
#byte PORTC=0x07
#byte PORTB=0X06
#define A0 PIN_A0
#define A1 PIN_A1
#define A2 PIN_A2
#define A3 PIN_A3
#define A4 PIN_A4


int sec1,sec2,min1,min2,hour1,hour2;
int num1=5,num2=5,num3=5;

int counter=125;
int flag=0;




const int table[10]={0b01101111, 
0b01111111, 
0b00000111, 
0b01111101, 
0b01101101, 
0b01100110, 
0b01001111, 
0b01011011, 
0b00000110, 
0b00111111};



void main()
{
PORTB=0X00;
PORTC=0X00;


set_tris_a(0xff);
set_tris_c(0x00);
set_tris_b(0x00);
set_RTCC(6);
setup_counters(RTCC_INTERNAL,RTCC_DIV_32);
enable_interrupts (INT_RTCC);
enable_interrupts (GLOBAL);

for(;;)
{
PORTB=table[sec1];
PORTC=0X01;
delay_ms(15);

PORTB=table[sec2];
PORTC=0x02;
delay_ms(15);

PORTB=table[min1];
PORTC=0x04;
delay_ms(15);

PORTB=table[min2];
PORTC=0x08;
delay_ms(15);

PORTB=table[hour1];
PORTC=0x10;
delay_ms(15);

PORTB=table[hour2];
PORTC=0x20;
delay_ms(15);



if(flag==1){


flag=0;
}





 if(input(A4)==1)
                          {
                        disable_interrupts(INT_RTCC);

                      if(input(A2)==1) { --num1; }
                      if(num1==0){
                           if(++min1>9) {
                                       min1=0;
                                if(++min2>5) {  min2=0; }
                                          }
                                        num1=5;
                                        }
                      if(input(A3)==1){ --num2; }
                                   
                               if(num2==0) {
                                     if( ++hour1>9 ) 
                                                     {                                                          
                                                  hour1=0;
                                                 ++hour2;
                                                      }
                                     if( (hour2==1) & (hour1==3) )  {
                                                              hour1=1;
                                                               hour2=0;
                                                                    }
                                                       num2=5;                       
                                              }
                     if(input(A1)==1) { --num3; }
                      if(num3==0){
                           if(++sec1>9) {
                                       sec1=0;    
                                if(++sec2>5) {  sec2=0; }
                                          }
                                        num3=5;           
                                        }
                          }


                    else if(input(A4)==0){
                                enable_interrupts(INT_RTCC); 
                                        }
}

}

#int_RTCC
void microII()

{ //void switch_time();
if(--counter>0)return;
counter=125;
flag=1;


if(++sec1>9){
sec1=0;

if(++sec2>5){
sec2=0;

if(++min1>9){
min1=0;

if(++min2>5){
min2=0;
if( ++hour1>9 )
{
hour1=0;
++hour2;
}
if( (hour2==1) & (hour1==3) ) {
sec1=0;
sec2=0;
min1=0;
min2=0;
hour1=1;
hour2=0;
}


}
}
}
}


}
 

Please be more specific. What is your problem exactly?
Describe your problem properly and you may get help.
 

Actually, I built a digital clock with hours, minutes and seconds. Now, I want to add some features in my clock like it can perform like stopwatch and can be stopped, and reset.
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top