while (1) { if (newADCdata == 1) { Temperature(); bSendResultToUART = 1; // } if (newEEPROMdata == 1) { save(0xF000, *((unsigned long*)0xFFFF051C)); } else { load(0xF000); y = FEEDAT; } } delay (0x8FFFF); IRQEN |= !BIT13; } } void Temperature () { newADCdata = 0; // First calculate the resistance across the RTD // Equation = ADC0Result * ((RREF/Gain)/# of bits) Rrtd = (float)ulADC0Result * ((5600.0 /32.0) /0xFFFFFF); // Next the temperature value is calculated using Rtd resistance // Simple Linear equation: // At 35 degree Celsius, the equivalent resistance of a PT100 is 113.607 Ohm. Trtd = (Rrtd - 100.0) * (35.0/13.607); } void save (unsigned long addr, unsigned long value) { unsigned long Flash_Status = 0; for ( i = 0; i < 2; i++) { FEEADR = addr + 2 * i; FEEDAT = value; //*((unsigned long*)0xFFFF051C); FEECON = 0x03; Flash_Status = FEESTA&0x03; while (!(Flash_Status)) Flash_Status = FEESTA&0x03; if ((Flash_Status & 0x02) == 0x02) ERROR = 1; } return; } unsigned load (unsigned long addr) { unsigned long Flash_Status = 0; newEEPROMdata = 0; for ( i = 0; i < 2; i++) { FEEADR = addr + 2 * i; FEECON = 0x01; Flash_Status = FEESTA&0x03; while (!(Flash_Status)) Flash_Status = FEESTA&0x03; if ((Flash_Status & 0x02) == 0x02) ERROR = 1; } return(FEEDAT); } void IRQ_Handler(void) __irq { unsigned long IRQSTATUS = 0; unsigned char ucCOMIID0 = 0; // unsigned long Flash_Status = 0; IRQSTATUS = IRQSTA; // Read off IRQSTA register if ((IRQSTATUS & BIT11) == BIT11) //UART interrupt source { ucCOMIID0 = COMIID0; if ((ucCOMIID0 & 0x2) == 0x2) // Transmit buffer empty { ucTxBufferEmpty = 1; } } if ((IRQSTATUS & BIT13) != BIT13) //If ADC0 interrupt source { // if ADCnorm variables are ready for new data.. if (newADCdata==0) { // ulADC0Result = ADC0DAT; // Read ADC0 conversion result ADC0data_ptr = (signed long*)0xFFFF051C; ulADC0Result = *ADC0data_ptr; ResultADC0 = ulADC0Result - (y); ADCconversion = (float) ((ResultADC0 * (1200.0 / 16777216.0)) /32.0); } newADCdata = 1; GP1DAT ^= BIT22; newADCdata = 1; IRQCLR = BIT13; } if ((IRQSTATUS & BIT13) == BIT13) // XIRQ0 external Interrupt Source { newEEPROMdata = 1; } } // Simple Delay routine void delay (int length) { while (length >0) length--; }