C program to use control a heater based on input voltage to the HC12 A/D converter


/* Read temperature from PAD4.  Turn on heater if temp too low,
 * turn off heater if temp too high.  Heater connected to Bit 0
 * of Port A.
#include 

#define TRUE 1

#define SET_POINT 72	/* Temp at which to turn heater on or off */

main()
{
	ATDCTL2 |= 0x80; /* Power up A/D */
	ATDCTL4 = 0x01;	 /* 9 us/conversion */
	ATDCTL5 = 0x64;  /* 0 1 1 0 0 1 0 0
						  | | | \____/
						  | | |    |
						  | | |    \___  Bit 4 of Port AD
						  | | \________  Mult = 0 => one channel only
						  | \__________  Scan = 1 => continuous conversion
						  \____________  S8CM => do eight conversions
				 	*/

/**************************************************************************/

	DDRA = 0xff;	/* Make Port A output */
	PORTA = 0x00;   /* Turn off heater */

/*****************************************************************************/

	while (TRUE) 
	{
		if (ADR0H > SET_POINT)
			PORTA &= ~0x01;
		else
			PORTA |= 0x01;
	}
}