// Example 11b: A/D Converter -- Temperature sensor
// Vout = 19.5 mV/C x Ta + 400 mV
// Ta = val/4 - 20 deg C
#include <hidef.h>      /* common defines and macros */
#include <mc9s12dg256.h>     /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12dg256b"

#include "main_asm.h" /* interface to the assembly module */


void main(void) {
int val, Tc, Tf;
  char* q1;
  char* q2;
  q1 = " deg C";
  q2 = " deg F";
  PLL_init();		// set system clock frequency to 24 MHz 
  ad0_enable();         	// enable a/d converter 0
  lcd_init();           	// enable lcd
  while(1) {
    val = ad0conv(5);   	// read temp sensor on channel 5 
    val = val >> 2;		    // shift 2 bit right (divide by 4)
    Tc = val - 20;        // degrees C
    Tf = Tc*9/5 +32;      // degrees F
    set_lcd_addr(0x00); 	// display on 1st row of LCD
    write_int_lcd(Tc);		// write value in field of 5
    type_lcd(q1);         // write deg C
    set_lcd_addr(0x40); 	// display on 2nd row of LCD
    write_int_lcd(Tf);		// write value in field of 5
    type_lcd(q2);         // write deg F
   ms_delay(100);		      // delay 0.1 seconds
  }
}
