For lower security, you could just use a fixed code. Rolling code requires that the transmitter and receiver have non-volatile memory to maintain a state counter. A fixed code does not require non-volatile memory, and is therefore easier to implement.
Basically, a rolling code can be made out of any encryption algorithm. The transmitter encrypts the current state count and sends it. The receiver decrypts the count. If it is in sequence with what was sent before, or nearly so, it unlocks the door.
One of the practical problems that any rolling code implementation needs to address is failure of syncronization. If the transmitter button is pressed when it is out of range of the receiver, then the transmitter state counter gets advanced while the receiver does not. (This is especially a problem when kids play with Daddy's garage door opener on a cross-country trip. By the time they get home, the transmitter and receiver can be out of sync by a large amount.) In addition to defining an acceptance window of maybe 16 counts into the future, the receiver also recogizes two successive transmissions with sequential counts to resyncronize to practically anywhere.
If you still want to implement a rolling code, then I suggest you forget about the Microchip algorithm and use something like Skipjack. It was once part of the Clipper Chip initiative, but has since been declassified and info is available on the net. Skipjack is well-suited to small microcontroller implementations.
-Robert Scott Ypsilanti, Michigan (Reply through newsgroups, not by direct e-mail, as automatic reply address is fake.)