bit start_ad_conversion(enum AD_CHANNELS channel)
{
    data bit success;

    // Start a conversion if the A/D is not busy and a value is not locked.
    if (s_ad_status & BUSY) {
        // Caller should check for this failure.
        success = FALSE;
    }
    else {
        // Start a new conversion on the given channel.
        s_ad_status  &= ~VALUE_LOCKED;
        s_ad_command &= ~CHANNEL_MASK;
        s_ad_command |= (U8) channel;
        s_ad_command |= START;
        success       = TRUE;
    }

    return(success);
}