Составители:
228
#include "aduc812.h"
#define MAXBASE 8
///////////////////////// WriteMax ///////////////////////////
// Запись байта в регистр ПЛИС
// Вход:
// regnum – адрес регистра ПЛИС,
// val – записываемое значение.
// Выход: нет.
// Результат: нет.
//////////////////////////////////////////////////////////////
void WriteMax (unsigned char xdata *regnum, unsigned char val)
{
// Сохранение текущего значения регистра страниц
unsigned char oldDPP = DPP;
DPP = MAXBASE; // Установка адреса страницы ПЛИС
*regnum = val; // Запись значения в регистр ПЛИС
DPP = oldDPP; // Восстановление сохраненного значения
// регистра страниц
}
//////////////////////// WriteLED ///////////////////////////
// Функция установки состояния линейки светодиодов.
// Вход:
// value – состояния
светодиодов.
// Выход: нет.
// Результат: нет.
//////////////////////////////////////////////////////////////
void WriteLED(unsigned char value)
{
// Запись состояния светодиодов в регистр 7-й регистр ПЛИС
WriteMax( 7, value );
}
//////////////////////// T0_ISR //////////////////////////////
// Обработчик прерывания от таймера 0.
// Вход: нет.
// Выход: нет.
// Результат: нет.
//////////////////////////////////////////////////////////////
void T0_ISR( void ) __interrupt ( 1 )
{
WriteLED( 0x55 ); // Зажигание светодиодов (через один)
}
//////////////////////// SetVector //////////////////////////
// Функция, устанавливающая вектор прерывания в
// пользовательской таблице прерываний.
// Вход:
// Vector – адрес обработчика прерывания,
// Address – вектор пользовательской таблицы
прерываний.
// Выход: нет.
// Результат: нет.
//////////////////////////////////////////////////////////////
void SetVector(unsigned char xdata * Address, void * Vector)
{
unsigned char xdata * TmpVector; // Временная переменная
// Первым байтом по указанному адресу записывается
// код команды передачи управления ljmp, равный 02h
*Address = 0x02;
Страницы
- « первая
- ‹ предыдущая
- …
- 227
- 228
- 229
- 230
- 231
- …
- следующая ›
- последняя »
