/**************************************************************************** tank_max_volume.c - драйвер расширителя ввода-вывода для учебного стенда SDK-1.1 (C) tank_max_volume.c, Ключев А.О. 2007 г. Это свободная программа; вы можете повторно распространять ее и/или модифицировать ее в соответствии с Универсальной Общественной Лицензией GNU, опубликованной Фондом Свободного ПО; либо версии 2, либо (по вашему выбору) любой более поздней версии. Эта программа распространяется в надежде, что она будет полезной, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ; даже без подразумеваемых гарантий КОММЕРЧЕСКОЙ ЦЕННОСТИ или ПРИГОДНОСТИ ДЛЯ КОНКРЕТНОЙ ЦЕЛИ. Для получения подробных сведений смотрите Универсальную Общественную Лицензию GNU. Вы должны были получить копию Универсальной Общественной Лицензии GNU вместе с этой программой; если нет, напишите по адресу: Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ---------------------------------------------------------------------------- Россия, Санкт-Петербург, кафедра вычислительной техники СПбГУИТМО e-mail: kluchev@d1.ifmo.ru ****************************************************************************/ #include "aduc812.h" #define MAXBASE 0x8 //Номер страницы внешней памяти (xdata), куда отображаются //регистры расширителя. /**---------------------------------------------------------------------------- write_max ------------------------------------------------------------------------------- Запись в нужный регистр ПЛИС ALTERA MAX3064(3128) Вход: regnum - адрес (номер) регистра val - записываемое значение Выход: нет Результат: нет Описание: Производится запись в регистр (порт) ПЛИС ALTERA MAX3064(3128) путем переключения адресуемой страницы памяти на страницу, где расположены (куда отображаются) порты ввода-вывода ПЛИС. -----------------------------------------------------------------------------*/ void write_max( unsigned char xdata *regnum, unsigned char val ) { unsigned char oldDPP = DPP; DPP = MAXBASE; *regnum = val; DPP = oldDPP; } /**---------------------------------------------------------------------------- read_max ------------------------------------------------------------------------------- Чтение из нужного регистра ПЛИС ALTERA MAX3064(3128) Вход: regnum - адрес (номер) регистра Выход: нет Результат: прочитанное из регистра значение Описание: Чтение из порта ПЛИС ALTERA MAX3064(3128) путем переключения адресуемой страницы памяти на страницу, где расположены (куда отображаются) порты ввода-вывода ПЛИС Пример: -----------------------------------------------------------------------------*/ unsigned char read_max(unsigned char xdata *regnum) { unsigned char oldDPP = DPP; unsigned char val; DPP = MAXBASE; val = *regnum; DPP = oldDPP; return val; }