/***************************************************************************** * * Function name : main * * Returns : None * * Parameters : None * * Purpose : Contains the main loop of the program * *****************************************************************************/ int main(void) { // mt static char __flash *statetext; //(PGM_P const char*) PGM_P statetext; // Initial state variables statetext = PSTR("Hello World"); //digit = CHAR2BCD2(number); // Program initalization LCD_Init(); sei(); // mt __enable_interrupt(); for (;;) // Main loop { if (statetext) { LCD_puts_f(statetext, 1); LCD_Colon(1); statetext = NULL; } } //End Main loop return 0; }
// PUTF,# // Verify that # represents a valid string in flash. // Set the pFlashStr pointer to the string // Call LCD_puts_f(*pFlashStr, scrollmode); // Send "Called LCD_puts_f" to the PC. void OnPUTF(char *PUTFstr) { sendFString(PUTF_msg); PGM_P text; text = PSTR("LCD_put_f test\0"); // won't show the _ LCD_puts_f(text, 1); }
void initializer() { // Calibrate the oscillator: OSCCAL_calibration(); // Initialize the USART USARTinit(); // initialize the LCD LCD_Init(); // Display instructions on PC sendFString(TALKING_TO); sendFString(WHO_DEMO); LCD_puts_f(LCD_START_msg, 1); }
/***************************************************************************** * * Function name : RS232 * * Returns : char ST_state (to the state-machine) * * Parameters : char input (from joystick) * * Purpose : Store data from the UART to EEPROM * *****************************************************************************/ char RS232(char input) { static char enter = 1; char c; static char buffer[STRLENGHT]; static char temp_index; if (enter) { __disable_interrupt(); // boost IntRC to 2Mhz to achieve 19200 baudrate CLKPR = (1<<CLKPCE); // set Clock Prescaler Change Enable // set prescaler = 4, Inter RC 8Mhz / 4 = 2Mhz CLKPR = (1<<CLKPS1); __enable_interrupt(); LCD_puts_f(TEXT_WAIT, 0); enter = 0; temp_index = 0; c = UDR0; // Dummy read to clear receive buffer gUART = TRUE; } if (UCSR0A & (1<<RXC0)) { c = UDR0; if (c != '\r') { if (temp_index < STRLENGHT) buffer[temp_index++] = c; } else // UART transmission completed { __disable_interrupt(); CLKPR = (1<<CLKPCE); // set Clock Prescaler Change Enable // set prescaler = 8, Inter RC 8Mhz / 8 = 1Mhz CLKPR = (1<<CLKPS1) | (1<<CLKPS0); __enable_interrupt(); if(temp_index) { buffer[temp_index] = '\0'; for (temp_index = 0; buffer[temp_index]; temp_index++) Name[temp_index] = buffer[temp_index]; Name[temp_index] = '\0'; enter = 1; __EEPUT(EEPROM_START, temp_index); //store the length of name in EEPROM StoreEEPROM(Name, temp_index, EEPROM_START + 1); //store the Name in EEPROM index = temp_index; gUART = FALSE; return ST_VCARD_FUNC; } else // if no characters received { enter = 1; return ST_VCARD_DOWNLOAD_NAME; } } } if (input != KEY_NULL) { enter = 1; __disable_interrupt(); CLKPR = (1<<CLKPCE); // set Clock Prescaler Change Enable // set prescaler = 8, Inter RC 8Mhz / 8 = 1Mhz CLKPR = (1<<CLKPS1) | (1<<CLKPS0); __enable_interrupt(); gUART = FALSE; return ST_VCARD_DOWNLOAD_NAME; } return ST_VCARD_DOWNLOAD_NAME_FUNC; }