над вхідним, вихідним напругою, а також над напругою акумулятора проводитися в обробниках переривань. Коли напруга комп'ютера відбувається від електромережі, таймер C/T0 вимкнений і переривань від нього не відбувається. Розглянемо алгоритм обробника переривань від АЦП. p align="justify"> 1) Зберігаємо в локальну змінну State типу byte стан бітів P0.0, P0.1.
2) Заносимо в локальну змінну Voltage результат перетворення АЦП.
) Переходимо на частину обробника відповідну каналу, на якому вироблялося перетворення напруги. (ADC0 - п.4, ADC1 - п.5, ADC2 - п.6).
) Канал ADC0 - вхідна напруга.
Якщо U вх. <200В або U вх . > 250В, запускаємо лічильник який буде генерувати імпульси, необхідні для формування змінної напруги резервного джерела живлення, відключаємо комп'ютер від електромережі, включаємо живлення від акумулятора. Переходимо на пункт 7.Еслі 200В вх. <250В, зупиняємо лічильник, закриваємо транзистори, підключаємо до комп'ютера живлення від мережі. Переходимо на пункт 7.
5) Канал ADC1 - вихідна напруга.
Цей канал перевіряється тільки у випадку, якщо харчування йде від акумулятора, тобто якщо таймер 0 працює (див. опис робочого циклу). Якщо напруга живлення менше 225В, і імпульс коротше 8,75 мс (не досяг максимально передбаченої довжини), то збільшимо довжину імпульсу на 250мкс, що спричинить збільшення діючої напруги. Якщо напруга живлення більше 235В, і імпульс довше 1,25 мс (не досяг своєї мінімальної передбаченої довжини), то зменшимо довжину імпульсу на 250мкс, що спричинить зменшення діючої напруги. Таким чином, автоматично буде обрана довжина імпульсу, необхідна для того, щоб діюча напруга харчування знаходилося в межах від 225 до 235В. Ці значення обрані тому, що блок живлення комп'ютера розрахований на 230В. p align="justify"> 6) Канал ADC2 - напруга акумулятора. Коли комп'ютер живиться від зовнішньої електромережі, і напруга акумулятора більше 12В, схема підзарядки відключається, якщо менше 10В - підключається. У разі якщо комп'ютер походить від акумулятора, при напрузі менше 10В на COM-порт надсилається байт з одиниць, а при напрузі нижче 9,85 В відбувається примусове відключення резервного живлення. Це зроблено тому, що, якщо напруга знизитися до 9,82 В, контролер перестане функціонувати через нестачу харчування.
7) Якщо стан системи змінилося, посилаємо код нового стану через послідовний порт TxD на COM-порт комп'ютера.
...