ервалів за 10ms (період виникнення переповнення таймера) пройшли з моменту останнього приходу даних. Якщо вміст цієї змінної досягає 50, то виникає підозра, що з датчиком трапилося нещастя і виставляється прапор аварії датчика, в даному випадку це користувальницький прапор 0V і в спеціальну область пам'яті для індикації завантажуються коди слова ERR span> , яке з цього моменту і виводиться на індикатор засвідчуючи про аварію.
У випадку, якщо дані приходять нормально виробляється висновок чисельного значення температури. За один раз виводиться один розряд. p align="justify"> Попередньо перевіряється прапор дозволу індикації і в разі якщо вона заборонена дану ділянку програми ігнорується і відбувається перехід на ділянку генерації звуку. Необхідність заборони індикації виникає в процесі модифікації спеціальній області пам'яті. У цей момент основна програма виставляє прапор заборони і сама ж його потім скидає. p align="justify"> Індикація починається з процесу запису керуючого слова в P1 (напр. 11011111).
Дозвіл роботи індикатора проводиться нулем. У наведеному вище прикладі обраний самий молодший індикатор. Далі в порт P0 виводиться вміст відповідного розряд, яке береться за адресою, записаному в спеціальній змінній rcount. Далі цю адресу модифікується, а керуюче слово зсувається на біт вліво, тобто наступного разу буде виводиться інший розряд. Цей процес повторюється до тих пір поки 0 в керуючому слові не потрапить в прапор переносу. У цьому випадку керуюче слово налаштовується знову на самий молодший розряд індикатора, а в rcount заноситься адреса на байт даних молодшого індикатора. p align="justify"> На наступному кроці програма переходить до блоку генерації звукових сигналів. На початку перевіряється наявність прапора аварії датчика і якщо він є виробляється перехід на генерацію меандру 1000Гц. У разі якщо аварії не сталося перевіряється прапор виходу температури за межі Errtemp, який раніше згадувався і якщо він встановлений виробляється перехід, на генерацію меандру 500Гц, тобто інверсія біта в порту проводиться через раз, для цього використовується спеціальний прапор delaybit, який інвертується при кожному виникненні переривання, а інверсія біта в порту проводиться тільки в разі його одиничного значення. Далі в кінці перевіряється проміжок часу який пройшов з моменту початку генерації (змінна soundgen), якщо цей час дорівнює 5 с., То відбувається заборона генерації на 5 хв., Які теж контролюються за допомогою цієї змінної. br/>
Опис процедури обчислення температури
Температура обчислюється за такою формулою:
В
Вхідні в неї змінні були згадані раніше.
Для вирішення цього завдання потрібно використовувати арифметичні операції з трехбайтнимі числами, алгоритм яких буде розглянуто нижче. У даному випадку це процедури роботи з ці...