It's not perfectly clear to whether you want a real-time clock or a stopwatch (the 40 seconds you mention).  

You could use an RTC IC (Real-Time Clock), like the NXP PCF8563. This one is available in several packages, including both the old DIL and a very small DFN.
But you probably don't need a separate RTC IC. It's typically used because it consumes very little power, and the rest of the circuit can power down while the RTC keeps running of a battery or supercap. The MSP430, however, is also a low-power device, and it has a low-frequency oscillator which can run on the same 32.768kHz crystal you would use for the RTC.
In one project I had the MSP430 running continuously on a 32kHz crystal, and yet it consumed less than 5\$\mu\$A. That's more than an RTC (the PCF8563 only needs 250nA), but it will be acceptable for many applications.  

What's your problem with the 1s interrupt? If you want to make a real-time clock you'll need a time-cue anyhow, whether generated internally or coming from an external RTC. Upon interrupt you can perform required updates of seconds, minutes and hour counters, and wait for the next interrupt. You even could work with 10ths of a second, although with the 32.768kHz this will have a minor deviation. You would have four tenths of a second or 3277 clock ticks, followed by one tenth of 3278 ticks, to get exactly 1/2 second, so repeat this pattern a second time to complete one second. 

What would be the best way to design a real time clock for the MSP430?
I'm defining a function in PowerShell and trying to call it as shown below.

function foo([Int32] $a, [Int32] $b)
{
}
foo(0,0)


When I do this, I get the following error.

foo : Cannot process argument transformation on parameter 'a'. Cannot convert the "System.Object[]" value of type "System.Object[]" to type
 "System.Int32".
At line:1 char:4
+ foo &lt;&lt;&lt;&lt; (0,0)
    + CategoryInfo          : InvalidData: (:) [foo], ParameterBindin...mationException
    + FullyQualifiedErrorId : ParameterArgumentTransformationError,foo


If I change the function to only accept a single argument as shown below it works fine.

function foo([Int32] $a)
{
}
foo(0)


Or, if I remove the type info it also works as shown below.

function foo($a, $b)
{
}
foo(0,0)


What's wrong with the first version?  How do I properly define a function which takes multiple integer arguments?

EDIT: Interestingly, the following invocation does work.

foo 0 0


I'd prefer the ()s though and am wondering how to get it to work with those.
