It appears that RTC.readRTC returns the number in binary coded decimal, not hexidecimal.
The first hex digit is the 10's digit, the second is the 1's, in decimal format, so to convert back to binary take the first hex digit, multiply by 10, and add the second hex digit.
I added this to your code, see if it works:
// RTC.readRTC returns a byte in BCD (binary coded decimal)
// convert from BCD to Binary
ALM2hrVal = (ALM2hrVal / 16 * 10) + ALM2hrVal % 16;
ALM2minVal = (ALM2minVal / 16 * 10) + ALM2minVal % 16;
#include <DS3232RTC.h> //http://github.com/JChristensen/DS3232RTC
#include <Wire.h> //http://arduino.cc/en/Reference/Wire
//Alarm 1 hour/minute registers
int ALM1hrReg = ALM1_MATCH_HOURS+1;
int ALM1minReg = ALM1_MATCH_HOURS;
//Alarm 2 hour/minute registers
int ALM2hrReg = 0x0C;
int ALM2minReg = 0x0B;
void setup(void)
{
Serial.begin(9600);
// Set alarms in DS3231 Alarm registers
RTC.setAlarm(ALM1_MATCH_HOURS, 0, 15, 23, 0);
RTC.setAlarm(ALM2_MATCH_HOURS, 13, 22, 0);
//clear the alarm flags
RTC.alarm(ALARM_1);
RTC.alarm(ALARM_2);
// Read Alarm 1 registers
int ALM1hrVal;
int ALM1minVal;
ALM1hrVal = RTC.readRTC(ALM1hrReg);
ALM1minVal = RTC.readRTC(ALM1minReg);
// Print Alarm 1 values via Serial
Serial.print("ALM1 = ");
Serial.print(ALM1hrVal, HEX);
Serial.print(":");
Serial.println(ALM1minVal, HEX);
delay(100); // for some reason the compiler craps out without this delay
// Read Alarm 1 registers
int ALM2hrVal;
int ALM2minVal;
ALM2hrVal = RTC.readRTC(ALM2hrReg);
ALM2minVal = RTC.readRTC(ALM2minReg);
// RTC.readRTC returns a byte in BCD (binary coded decimal)
// convert from BCD to Binary
ALM2hrVal = (ALM2hrVal / 16 * 10) + ALM2hrVal % 16;
ALM2minVal = (ALM2minVal / 16 * 10) + ALM2minVal % 16;
// Print Alarm 2 values via Serial
Serial.print("ALM2 = ");
Serial.print(ALM2hrVal);
Serial.print(":");
Serial.println(ALM2minVal);
delay(1000);
}
void loop(void)
{
}