como criar um programa para ler um teclado matricial?

eu devo ter uma ideia de como funciona este programa... a varredura das colunas é feita de modo continuo enquanto que nenhuma tecla é pressionada, quando uma tecla é precssionada o sinal da coluna correspondente a ela vai pra linha correspondente a sua posição e é lida pela CPU... sei que para cada tecla apertada tem uma operação lógica que condiz assim: posição armazenada da coluna + nivel lógico obtido na linha de acordo com a tecla pressionada, que pode interromper a varredura ou não... eu já fiz um circuito deste no hardware e funcionou perfeitamente... mas eu não consigo de fato fazer o programa pra isso... como controlar um teclado somente por software... pois tudo se baseia em contar uma variável q seria a coluna e somar o valor dessa variavel com o valor obtido nas linhas de acordo com a tecla pressionada...isso seria ótimo tambem pra expandir as entradas de um MCU usando multiplexadores como o 74LS151 por exemplo...e controlar 8 entradas usando 4 vias do microcontrolador poderiam me ajudar apênas explicando detalhadamente o código?