Technical information
SCI to SPI Peripheral Communication in V850ES Microcontrollers
** display temp in degrees in LEDs, turn on decimal point for negative
temperature
**
**---------------------------------------------------------------------------
--
*/
volatile int dig[5]; /* digits xxx.yy */
void Temp_Display(short temp)
{
BOOL negative = MD_FALSE;
temp = temp / 8; /* remove 3 LSB, temp is now temperature * 16 */
if (temp < 0) {
negative = MD_TRUE;
temp = -temp;
}
/* temp is now a positive number, temperature * 16 */
dig[0] = temp / 1600; /* get hundreds digit */
temp = temp - (dig[0] * 1600); /* remove hundreds digit */
dig[1] = temp / 160; /* get tens digit */
temp = temp - (dig[1] * 160); /* get remainder */
dig[2] = temp / 16; /* get ones digit */
temp = temp - (dig[2] * 16); /* remainder is now number of 16ths */
temp = temp * 100; /* scale up to get .xxyy, now
xx.yy */
dig[3] = temp / 160; /* get tenths digit */
temp = temp - (dig[3] * 160);
dig[4] = temp / 16; /* get hundredths digit */
/* now display by rolling through display */
if (negative) {
/* negative, display sign in left */
led_out_left(LED_PAT_DASH); /* display minus sign */
if (dig[0] != 0) {
led_dig_right(dig[0]);
Temp_Delay_500ms();
led_dig_left(dig[0]);
}
if ( (dig[0] != 0) || (dig[1] != 0) ) {
led_dig_right(dig[1]);
Temp_Delay_500ms();
led_dig_left(dig[1]);
}
} else {
/* positive number, start in left digit */
if (dig[0] != 0) {
led_dig_left(dig[0]);
led_dig_right(dig[1]);
Temp_Delay_500ms();
51