Кто виноват Керниган, или Ричи? Приколитесь. IAR avr 2.28
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено BlackJack 05 февраля 2004 г. 12:36

Программа вывода времени на экран графического ЖК
Переменные blink объявлены трижды, 1-глобально и 2-локально

Когда приходит время их использовать, используется глобальная !!!!
Глобальная переменная меняет свое состояние дважды в секунду по прерыванию от таймера.


char blink;
char Time[7];
//хрен с ними, пусть будут глобальными

// подготовка области памяти перед выдачей на дисплей
void mix7(char blink) {
...Bla-bla....
if(blink){//подмешаем двоеточие между символами
ram[2][2]=ram[2][2]| 0x20;
ram[2][4]=ram[2][4]| 0x20; }
}
//-------------------------------------------
void Show_short_time(char x,char y,char blink,char reverse)
{if(reverse)reverse_ram();
//черное на белом или наоборот
mix7(blink);
put_byte_to_adress(x,y,3);
//выведем на дисплей данные, переданные через
// глобальную переменную Time[]
}
//------------------------------------------
#pragma vector=TIMER1_COMPA_vect
__interrupt void TMR1comp_interrupt( void )
{ static char blinks;
sysTime++;
if (tics--) {} else {tics=tics_in_Second; time_1s++;};
if (blinks--) {} else { blinks=BlinkTime; if(blink){ blink=0;} else { blink=1;};};
}
main()
{
...bla-bla-bla..

if (time_to_Show_Time)Show_short_time(Row_time,Column_time,0,white_on_black);
//вывод времени без двоеточия.

А на экране двоеточие моргает...
}


Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru