NEED HELP WITH TIMER

ok so i am new to this forum but i have been checking it out for quite awhile.. so recently i am trying to make a timer circuit using a ardiuno uno.. what i need help with is making the code.. i have searched and searched and i cant find what i need.. i need a countdown circuit with 4digit 7segment display .. i have it wired up and i found a code that just counts down from 30.. what i need is this...
i have 1 switch 5 buttons and 1 display i need to code..

start switch = starts countdown
I DONT NEED ANY COLONS OR DOTS FOR MY CODE.. JUST NUMERICALS NOTHING TO SEPARATE MINS AND SECONDS
button 1 = would control the very left number (10mins)
button 2 = would control the second in number (1mins)
button 3 = would control the third number (10seconds)
button 4 = would control the fourth number (1seconds)

button 5 = SECONDARY TIMER AND PROGRAMMING now for this ineed a double meaning.. as in while the timer is counting down to say "30" if you hit button 5 it will change the countdown to what ever the "secondary" countdown is set to.. i also wanna use that button to "set" the count down ...

so heres how i need it to work.. when you get power to the arduino i want it to automatically display 06:00 and if you hit the start switch is starts counting down.. now if you just power the arduino you should see 06:00 mins again while in the "power up" i want that to be the programming sequence .. i want to be able to hit buttons 1-4 to change the count down time.. while in the programming sequence i want to be able to HOLD down button 5 and i want it to automatically display 03:00 mins.. now while holding it down during programming i want to be able to program that sequence which would be the "secondary" timer.. after you set the time and flip the switch i need it to count down.. then in the middle of counting down if you choose to push button 5 i want it to go to the secondary timer and count down from that..

SO... i am looking for help if anyone could help me i would love for you to email me and i can explain a bit more if needed.. as my breadboard sits its wired up for this http://www.hobbytronics.co.uk/arduino-countdown-timer so you can get a idea on the pins i have set..

Would you be okay with adding some extra hardware to start?
As wired, there is nothing preventing the IO pins from outputting (sourcing) too much current at 5V, and nothing preventing the IO pins from inputting (sinking) too much current. Put a resistor between these pins and the display

int segA = A1; //Display pin 14
int segB = 3; //Display pin 16
int segC = 4; //Display pin 13
int segD = 5; //Display pin 3
int segE = A0; //Display pin 5
int segF = 7; //Display pin 11
int segG = 8; //Display pin 15

This will limit these pins to sinking about 5mA and the PWM pins to sourcing about 35mA.
Ideally the value you use would be (5V - Vf)/.005= R, for a LED with 2.2V drop (Red would have about that value) the R would be (5V-2.2V)/.005A = 560 ohm,580 would be a good standard value to use.

Then for the code, it's too late to go into that for me tonight.
What's your software experience?

i am starting out on programming.. i can add anything i need.. the big thing i guess is i am going to use the chip as a standalone and completely remove the uno board.. so..... yea... lol ...

so can anyone help with this at all? all these views so far and only one comment?

the big thing i guess is i am going to use the chip as a standalone and completely remove the uno board

Well, that part is easy. Just need the '328P, 16 MHz crystal, two 22pf caps, 10K reset pullup resistor, 4 100nF/0.1uF caps, and 6 header pins to connect an external FTDI Basic or similar. Schematic has been posted many times. 3AA battery pack for power.

Here's some code I have that counts down from 10:00, 3:00, or 1:00.
You'll have to define all the variables & stuff in setup, but this shows how to use blink-without-delay type coding to watch for a time to pass and then do something.
The rest of the time, you can read the state of your buttons, set the time variables as needed per your button presses, and incorporate your LED muxing code - every 5 mS, update the digit selected and the cathode/segments being displayed.
I used a MAX7219 to control 8 digits, 4 of which were time; but since MAX7219 did the multiplexing, I only set a flag to let MAX7219 section of code know something needed to be done, and it cleared the flag when it did it. I suppose that could also be written as a function.
My code flow looked like this:

void loop(){
Time passed to update the time digits?
   Yes, update and set time update flag
Rx command received?
   Yes, execute switch:case command to :
   start/stop time running flag
   update time variables
   update score variables
   etc
Left or Right score made?
  Yes, update score variable, clear time running flag, set score update flag
Time updated or score updated flag set?
   Yes, update time or score register(s) in MAX7219, clear appropriate flag
}

No functuions at all just setting/clearing flags and acting on set flags.
Each major chunk was its own tab in the IDE.
This was the tab that started void loop and did the time countdown

// ***********************************************************************************************
// Loop here endlessly, checking if time or score needs updating, if wireless message came in, 
// if touch lights are on
// ***********************************************************************************************
void loop()
{
  // check if time needs updating
  if (time_running == 1)  // fencing time is counting down or delay time is counting down
  {
    unsigned long currentMillis = millis();  // see how long its been

    if (currentMillis - previousMillis >= interval) // more than our quarter second interval?
    {
      // save the last time we okayed time updates 
      previousMillis = previousMillis + interval;

      update_time = 1;   //  enable time display to be updated

        // update the time digits
        // cases: 
        // 0:01, final second - stop time, disable touch lights, sound buzzer
        // Tens of seconds rollover: time = x:50, x:40, x:30, x:20, x:10: decrement tens of seconds, rollover seconds to 9
        // Minutes rollover: time = 9:00, 8:00, etc. 2:00, 1:00: decrement ones of minutes, rollover tens of 
        // seconds to 5, ones of seconds to 9
          // 10:00: Roll all the digits over
        // otherwise: just roll over the seconds

        // Case: Final Second
        if ((minutes_ones == 0) && (seconds_tens == 0) && (seconds_ones == 1)) // don't need minutes_tens, can't have 10:01
        {

          time_running = 0;  // stop time running
          seconds_ones = 0;  // clear the last second
          updated = 1;  // fake a Case complete flag      

          if ((time_running == 1) && (period>0) && (period<9)) { //  update period counter if was fencing time, not 1:00 or 10:00 break
            period = period +1;
            update_period=1;  // enable period display to be updated
          }
        }  // end of  if final second

        // Case: x:50, x:40, x:30, x:20, x:10
        if ((seconds_tens >0) && (seconds_ones == 0))  // case for the last tens of seconds 
        {
          seconds_tens = seconds_tens - 1;  // decrement the tens
          seconds_ones = 9;  // rollover the ones
          updated = 1;
        }  // end of if 10 of seconds rollover

        // Case: 9:00, 8:00, etc 2:00, 1:00
        if ((minutes_ones > 0) && (seconds_tens == 0) && (seconds_ones == 0)) // case for the last ones of minutes
        { 
          minutes_tens = 0x00;  //
          minutes_ones = minutes_ones - 1;  // decrement the minutes
          seconds_tens = 5;  // rollover the tens of seconds;
          seconds_ones = 9;  // rollover the ones of seconds;
          updated = 1;
        } // end of if minutes rollover

        // Case: starting from 10:00
        if (minutes_tens == 0x01)  // roll over all digits
        {
          minutes_tens = 0x00;  // rollover the tens of minutes
          minutes_ones = 9;  // rollover the ones of mints;
          seconds_tens = 5;  // rollover the tens of seconds;
          seconds_ones = 9;  // rollover the ones of seconds; 
          updated = 1;
        } // end of if 10:00 rollover

        // General Case: just decrement the seconds
        if (updated == 0)  // nothing else updated - but don't decrement if = 0.
        {
          seconds_ones = seconds_ones - 1;
        }
        updated = 0;  // reset for next pass thru
      
    } // end of reaching our interval
  } // end of if time_running
  else
  {
    update_time = 0;   // no time update this time around - probably don't need this
  }

santino:
so can anyone help with this at all? all these views so far and only one comment?

Define "help" ... if you want it written for you, post in the "Gigs and Collaborations" section. Looks to me like the hobbytronics link contains a big piece of what you want to do. CrossRoads' advice about the current-limiting resistors is well taken, though.

Usually when asking for "help", the expectation is that something has been tried and either needs to be built on or possibly some issue has presented itself, in which case there are good pointers as to how to proceed on the forum here:
http://arduino.cc/forum/index.php/topic,148850.0.html (Item 11 in particular)

well i guess what i mean by help is ... i have been looking for awhile for a code i can use as a base... i cant fnd anything.. i dont know alot of code to input buttons and set a timer.. so pretty much advice and help writing the code is what i am lookin for ..

Here is a library I wrote to deal with buttons, it comes with example sketches to get you started.

Here is a project that uses the button library to set time and several other parameters.