Разработка цифрового термостата на основе оценочного комплекта TasteIt!-2, страница 4

//----------------------------------------------------------------------------// Прототипыфункций.

//----------------------------------------------------------------------------void     vWait25        (unsigned char);  // n *  25ms задержка

extern void          vHardwareInit  (void);           // инициализацияоборудования

extern void          vSoftwareInit  (void);           // инициализацияпеременных

//----------------------------------------------------------------------------// Глобальныепеременные

//----------------------------------------------------------------------------volatile unsigned char        bTimer1Flag;          // Статус Flag Timer1

volatile unsigned char        bWatchTimer;          // Статус Flag Watch Timer

volatile unsigned char        bKey3Flag;            // Статус Key3

volatile unsigned char        bKey2Flag;            // Статус Key2

unsigned int                  ACP;                  //ИнициализацияАЦП

__no_init unsigned char  set_done;

__no_init unsigned short temperature_max;

long     temperature_out;

long     temperature;

unsigned char        menu;

//----------------------------------------------------------------------------// Константы

//----------------------------------------------------------------------------const char *text01="NEC  K_Line ";

const char *text02="Taste it!-2 ";

const char *text03="Temperature ";

const char *text04="Measurement ";

const char *text05="max Temperature";

const char *text06="is already set";

const char *text07="is needed to set";

const char bgpat0[8] = {0x04,0x0a,0x04,0x00,0x00,0x00,0x00,0x00};

const char bgpat1[8] = {0x00,0x00,0x1f,0x1f,0x0e,0x04,0x00,0x00};

const char bgpat2[8] = {0x00,0x00,0x04,0x0e,0x1f,0x1f,0x00,0x00};

//----------------------------------------------------------------------------// Название: vWait10

// Описание: Модуль задержки программы в течении 10с.

//----------------------------------------------------------------------------void vWait10(unsigned char Number)

{

bTimer1Flag = FALSE;                 // Сброс Timer1

STARTTIMER1;                         // Запуск Timer1

while(Number > 0) {

while(bTimer1Flag == FALSE){  // Ожиданиепрерываний

__no_operation();

__no_operation();

}

bTimer1Flag = FALSE;           // Сброс Timer2

Number--;

}

STOPTIMER1;                          // Остановка Timer1

return;

}

//----------------------------------------------------------------------------// Название: Output_result

// Описание: Вывод на экран данных

//----------------------------------------------------------------------------void Output_result(unsigned short data)

{

unsigned char bcd0,bcd1,bcd2,bcd3;

bcd0 = data / 1000;

data = data % 1000;

bcd1 = data / 100;

data = data % 100;

bcd2 = data / 10;

bcd3 = data % 10;

LCD_cursor(0x41);

if(temperature_neg)LCD_char(0x2d);

else LCD_char(0x20);

if(bcd0) LCD_char(0x31);

if(!bcd0&!bcd1)LCD_char(0x20);

else LCD_data(bcd1);

LCD_data(bcd2);

LCD_char(0x2e);

LCD_data(bcd3);

LCD_char(0x20);

LCD_char(0x00);

LCD_char(0x43);

LCD_char(0x20);

}

//----------------------------------------------------------------------------// Название: Main Function

// Описание: Расчёт и вывод температуры на дисплей

//----------------------------------------------------------------------------void main( void )

{

temperature_max=0;

__disable_interrupt();                // Отключение всех прерываний

vHardwareInit();                    // Настройка периферии

vSoftwareInit();                    // Инициализация переменных

LCD_init();                         // Инициализация ЖКИ

LCD_inst(0x01);                     // Очистка дисплея

LCD_write_CGRAM(0x00,&bgpat0[0]);

LCD_write_CGRAM(0x01,&bgpat1[0]);