I don't know much about this implementation of C, but... > void outtobus(unsigned char data, unsigned char flag, unsigned char > flag2) { > outtobus(0b10101010); //prints 0x80, and puts 0x80 out to bus!? is considered very bad form! It might be that the stack is getting upset over the fact there are three parameters expected to the function yet you only supply one -- http://www.piclist.com hint: The PICList is archived three different ways. See http://www.piclist.com/#archives for details.