Já usei bastante o PIC, atualmente tenho usado mais o Arduino, Matlab, .... Uma coisa que poderia ser avaliada é o uso de macros, a linguagem C (em qualquer arquitetura ou tipo de CPU) possibilita que se crie um comando interno, definido a nível do pré-compilador, por exemplo:
#define output_high(a) a=1
#define output_low(a) a=0
O qual, por exemplo, substitui o comando "output_high(clock)" por "clock=1" antes da compilação. Essas macros poderiam ser definidas em algum arquivo *.h.