SETUP_COMPARATOR( )
Syntax: setup_comparator (mode)
Parameters: mode is a constant. Valid constants are in the devices .h file and are as follows:
• A0_A3_A1_A2
• A0_A2_A1_A2
• NC_NC_A1_A2
• NC_NC_NC_NC
• A0_VR_A1_VR
• A3_VR_A2_VR
• A0_A2_A1_A2_OUT_ON_A3_A4
• A3_A2_A1_A2
Returns: undefined
Function: Sets the analog comparator module. The above constants have four parts representing the inputs: C1-, C1+, C2-, C2+
Availability: This function is only available on devices with an analog comparator.
Requires: Constants are defined in the devices .h file.
Examples:
// Sets up two independent comparators (C1 and C2),
// C1 uses A0 and A3 as inputs (- and +), and C2
// uses A1 and A2 as inputs
setup_comparator(A0_A3_A1_A2);
Example Files: ex_comp
/////////////////////////////////////////////////////////////////////////
//// EX_COMP.C ////
//// ////
//// This example demonstartes the use of the built in comparator. ////
//// The program compares the input voltage with the internal ////
//// reference voltage. Turn the POT to change the voltage. ////
//// ////
//// Configure the CCS prototype card as follows: ////
//// Connect pin A1 to GND. ////
//// Connect the output of the POT to pin A0. ////
//// ////
//// NOTE: Make sure the POT is turned all the way counter clock ////
//// wise before starting the program. ////
//// ////
//// This example will work with the PCM compiler. The following ////
//// conditional compilation lines are used to include a valid ////
//// device for each compiler. Change the device, clock and RS232 ////
//// pins for your hardware if needed. ////
/////////////////////////////////////////////////////////////////////////
//// (C) Copyright 1996,2003 Custom Computer Services ////
//// This source code may only be used by licensed users of the CCS ////
//// C compiler. This source code may only be distributed to other ////
//// licensed users of the CCS C compiler. No other use, ////
//// reproduction or distribution is permitted without written ////
//// permission. Derivative programs created using this software ////
//// in object code form are not restricted in any way. ////
/////////////////////////////////////////////////////////////////////////
#if defined(__PCM__)
#include <12F675.h>
#fuses HS,WDT,NOPROTECT
#use delay(clock=20000000)
#use rs232(baud=9200, xmit=PIN_A3, rcv=PIN_A4)
#endif
short safe_conditions=TRUE;
#INT_COMP
void isr() {
safe_conditions=FALSE;
printf("WARNING!! Voltage level is above 3.6 V. \r\n");
}
main() {
printf("\r\nRunning voltage test...\r\n\n");
setup_comparator(A1_VR_OUT_ON_A2);
setup_vref(VREF_HIGH|15);
enable_interrupts(INT_COMP);
enable_interrupts(GLOBAL);
while(TRUE)
{
if(safe_conditions)
printf("Voltage level is below 3.6 V. \r\n");
safe_conditions=TRUE;
delay_ms(500);
}
}