Bruno,
Na verdade eu ja utilizo um programa que conta os passos do jeito que voce falou, sem o L-297 ( ativando as bobinas sequencialmente ), mas minha intenção é fazer isso utilizando PWM como modo de acionamento.
Pesquisando eu descobri as funções de interrupção, mas nao são tão simples quanto eu pensei e assim várias dúvidas surgiram, por exemplo:
1- Qual a diferença entre os comandos disable_interrupt() e clear_interrupt();
2- Porque no código do meu post anterior eu nao tive que declarar nada antes de escrever uma interrupção sendo que eu vejo muitas pessoas declarando "#define int_timer2";
3 - Quando eu uso os comando de enable_interrupt();
Quando se estuda microcontroladores, o que deve ser BEM conhecido são os registradores e a arquitetura. A arquitetura de um microcontrolador envolve os registradores, as facilidades de USART, EEPROM, contadores, conversores A/D, saídas PWM, portas USB e I2C, as memórias, as instruções, etc, etc.
Quando se estuda a arquitetura, os comandos e as funções (por exemplo, as interrupções) são referenciadas à arquitetura e aos registradores.
Ao usar um compilador C, as coisas facilitam por um lado, mas o usuário fica meio distante desses registradores e aí podem surgir algumas dúvidas que não estão relacionadas ao microcontrolador. Mas sim de como o compilador "simplica" algumas coisas que um assembly faz acessando diretamente a arquitetura do microcontrolador.
Existem funções de seu compilador C que eu não saberia dizer para que servem ou o que exatamente fazem, sendo necessário ler o manual do mesmo. Se sua pergunta fosse relacionada à arquietura, seria +fácil para eu responder.
Eu conheço e uso assembly, C e outras linguagens. E o que eu lhe sugiro é conhecer o microcontrolador que voce pretende usar. Se por um lado, a linguagem C economiza seu tempo, voce deve saber muito bem o que o compilador está fazendo, principalmente se sua aplicação não vai acender e apagar LEDs apenas. Para não ter surpresas ou perplexidades...
Recentemente, tive muito trabalho com um programa em C que precisava copiar e mover dados entre memórias RAM extendida, registradores e memória de programa (Flash) num PIC18F2550. Pode paracer simples, a principio, mas são necessários comandos em C diferentes. O simulador e o compilador C18 da Microchip ajudaram muito.
Mesmo sem conhecer o CCS, posso arriscar alguns palpites:
disable_interrupt serve para inibir interrupções subsequentes, geralmente é usado quando uma interrupção está sendo atendida. Na arquitetura PIC, há apenas um endereço do vetor de interrupção, porém, várias coisas podem dispará-la, por exemplo: estouro num contador, chegada de caractere na USART, ... ao ocorrer um evento, o bit de um registrador é setado para indicar o que causou a interrupção.
clear_interrupt provavelmente estará relacionado ao reset desses bits ou ao bit de registro de interrupção, preparando o sistema para uma nova interrupção. Ou seja, tem que ler o manual e entender o que o compilador está fazendo.
Com relação a declaração de função, uma característica da linguagem C é que TODAS as variáveis e funções devem ser declaradas. Incluindo as funções de tratamento de interrupção. O
define é uma coisa diferente de declaração. Não sei se foi exatamente esta a pergunta...
A interrupção deve ser habilitada, usando
enable_interrupt(), após um microcontrolador ter sido inicializado ou então ao final de uma rotina de tratamento de interrupção.