/*******************************************************************
** Project : inverter example
*******************************************************************/
#include <hidef.h> /* for EnableInterrupts macro */
#include <MC9S08QG8.h> /* include peripheral declarations */
void main(void)
{
ACMPSC_ACMOD = 11; // 1 = comparator output on rising or fallingedge
ACMPSC_ACOPE = 1; // 1 = comparator output enabled on external pin
SOPT1_BKGDPE = 0; // 0 = disable bgdb mode on compo pin
ACMPSC_ACIE = 1; // 1 = comparator interrupt enabled
ACMPSC_ACBGS = 1; // 1 = use internal reference on ACMP+
SPMSC1_BGBE = 1; // 1 = enable bandgap buffer for internal reference
ACMPSC_ACME = 1; // 1 = comparator enabled
ACMPSC_ACF = 1; // writing 1 clears event flag
// set up output port for an indicator
PTBDD_PTBDD7 = 1; //set PTB.7 as an output, LED2 on demo board
PTBD_PTBD7 = 1;
PTBDD_PTBDD6 = 1; //set PTB.6 as an output, LED1 on demo board
PTBD_PTBD6 = 1;
EnableInterrupts; // inverter can work without generating an interrupt
for(;;)
{
__RESET_WATCHDOG(); /* feeds the dog */
}// loop
}// end main
//ACMP ISR
interrupt 20 void ACMP_ISR(void)
{
if (ACMPSC_ACO)
{
PTBD_PTBD7 = 1; // toggle PTB.7 pin on compare event
PTBD_PTBD6 = 0; // toggle PTB.6 pin on compare event
}
else
{
PTBD_PTBD7 = 0; // toggle PTB.7 pin on compare event
PTBD_PTBD6 = 1; // toggle PTB.6 pin on compare event
}
ACMPSC_ACF = 1; // writing 1 clears event flag
}