[Solved] using a mask bit dallas rtc

finally figured this out, all the posts were correct, clearing the mask bits when reading was the key. sorry this stuff was hard for me but i learned alot.
setting the clock for 8pm

writeRegister(HOURS_REG,B01101000);

lowbyte 1000 is bcd for 8, bits 6 is 12 hour mode, bit 5 is am/pm..
to read..

byte hours = readRegister(HOURS_REG);
  byte ampm=bitRead(hours,5);
  if (ampm==1){
    meridian=1;
  }
  else{
    meridian=0;
  }
  hours=hours &B10011111; // CLEAR THE MASK BITS HERE
  byte days = readRegister(0x10);
  Serial.print(bcdToDec(hours),DEC);

still working on it, alarm registers etc, there is a library for this particular clock (ds1305) but i wont learn how to deal with the chip directly by using it all the time. and ill never be able to write my own libraries without being able to talk to the chip. next up when im done with 1305 is ds1615 and ds2404. thanks again to all the posters here who helped me.

entire sloppy test code, im just testing and its not optimized, just fyi.

#include <avr/interrupt.h>
#include <SPI.h>
#define DATAOUT 11//MOSI
#define DATAIN  12//MISO 
#define SPICLOCK  13//sck
#define SLAVESELECT 10//ss
#define control 240 //READ
#define CONTROL_REG 0x0F
#define DS1305_ADDRESS_OFFSET 0x80
#define SECONDS_REG 0x00
#define MINUTES_REG 0x01
#define HOURS_REG 0x02
#define DAY_REG 0x03
#define DAY_ALARM 0x0A
#define SECONDS_ALARM 0x07
#define MINUTES_ALARM 0x08
#define HOURS_ALARM 0x09
#define DS1305_SR 0x10
#define DS1305_SR_IRQF1			1
#define DS1305_SR_IRQF0			0
boolean meridian;
void setup() {
  // set the slaveSelectPin as an output:

  unsigned int data;
  unsigned int address = 0xF0;
  SPI.begin();
  digitalWrite(SLAVESELECT,LOW);
  pinMode(DATAOUT, OUTPUT);
  pinMode(DATAIN, INPUT);
  pinMode(SPICLOCK,OUTPUT);
  pinMode(SLAVESELECT,OUTPUT);
  SPI.setClockDivider(SPI_CLOCK_DIV16);
  SPI.setBitOrder(MSBFIRST);
  SPI.setDataMode(SPI_MODE1);
  // initialize SPI:
  pinMode(2, INPUT);
  digitalWrite(2,HIGH);
  attachInterrupt(0, alarmTriggered, FALLING); 
  interrupts();
  Serial.begin(9600);
  digitalWrite(SLAVESELECT, HIGH);
  writeRegister(CONTROL_REG,0x03);
  //  unsigned int r = readRegister(CONTROL_REG);
  //  Serial.println("CONTROL = ");
  //  Serial.println(r,BIN);
  //  writeRegister(SECONDS_REG,decToBcd(30));
  //  writeRegister(MINUTES_REG,decToBcd(40));
  //  
  //   
  //    
  //writeRegister(HOURS_REG,B01101000);

  writeRegister(DAY_REG,1);
  writeRegister(HOURS_ALARM,B10010010);
  writeRegister(MINUTES_ALARM,B10010010);
  writeRegister(DAY_ALARM,B10010010);
  writeRegister(SECONDS_ALARM,B1110000);

}

void loop(){

  delay(1000);



  byte seconds = bcdToDec(readRegister(SECONDS_REG));
  byte minutes = bcdToDec(readRegister(MINUTES_REG));
  //  byte hours = bcdToDec(readRegister(HOURS_REG));
  byte hours = readRegister(HOURS_REG);
  byte ampm=bitRead(hours,5);
  if (ampm==1){
    meridian=1;
  }
  else{
    meridian=0;
  }
  hours=hours &B10011111;
  byte days = readRegister(0x10);
  Serial.print(bcdToDec(hours),DEC);
  Serial.print(":");
  Serial.print(minutes,DEC);
  Serial.print(":");
  Serial.print(seconds);
  if (meridian==1){
    Serial.println(" PM");
  }
  else{
    Serial.println(" AM");
  }


  //  writeRegister(0x20,0x30);
  //  r = readRegister(0x20);
  //  Serial.println("0x20 = ");
  //  Serial.println(r,HEX);
}

unsigned int readRegister(byte thisRegister) 
{
  byte inByte = 0;
  unsigned int result = 0;

  digitalWrite(SLAVESELECT, HIGH);
  SPI.transfer(thisRegister);
  result = SPI.transfer(0x00);
  digitalWrite(SLAVESELECT, LOW);
  return(result);
}

void writeRegister(byte thisRegister, char thisValue) 
{
  digitalWrite(SLAVESELECT, HIGH);
  SPI.transfer(thisRegister+DS1305_ADDRESS_OFFSET);
  SPI.transfer(thisValue);
  digitalWrite(SLAVESELECT, LOW);
}
byte bcdToDec(byte val)
{
  return ( (val/16*10) + (val%16) );
}

byte decToBcd(byte val)
{
  return ( (val/10*16) + (val%10) );
}

void alarmTriggered()
{
  Serial.println("** ALARM WENT OFF! **");
  writeRegister(DS1305_SR,0);
}