para esto lo que tienes que hacer es pensarlo bien, si va a un numero determinado de personas, o lo venderas para cualquiera que lo desee. Ademas de tener cuidado con la seguridad, porque si pones los numeros consecutivos siempre puede venir un listillo y averiguar el codigo para abrir el garaje del vecino cuando no este...
Lo primero que puedes pensar es, en tener una base de datos con todos los codigos (si es para una comunidad o algo), poner numeros aleatorios con int16 minimo, ahora bien, el proceso de codificado llave->receptor lo puedes hacer de distintas formas, o bien una vez programado lo asignas manualmente, o bien que el receptor tenga algun procedimiento para el codificado, y que el receptor le envie al mando el codigo de ese receptor, el mando guarda ese codigo, y ya se puede usar, asi los mandos seran universales, y los receptores tendran un codigo fijo.
Ahora bien si se pierde un mando, o algo asi tenemos el problema que se podria seguir abriendo con el mando perdido, para esto tendrias que cambiar el codigo en el receptor, y codificar los nuevos mandos para que cojan el nuevo codigo del receptor.
Para guardarlo te recomiendo la eeprom, es facil usarla, asi para cambiar el codigo no sera muy complicado el procedimiento. Si lo haces en la flash es mas complicado la modificacion de este dato.