|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Таймер цифровой(Тик таймера = 1 мкс)
F(16)A(0) - запись кода интервала времени, разряды 1-24. F(16)A(1) - запись кода интервала времени, разряды 25-40. F(16)A(2) - запись кода диапазона интервала времени. F(26)A(1) - пуск таймера. F(8)A(15) - проверка L. F(10)A(0) - сброс L. F(26)A(0) - разрешение L. F(24)A(0) - запрет L. ПРИЛОЖЕНИЕ 2
/***************************************************************/ /* ПАКЕТ ПРИКЛАДНЫХ ПРОГРАММ ДЛЯ */ /* УПРАВЛЕНИЯ САМАС -АППАРАТУРОЙ (Visual C++) */ /* Start СТАРТ САМАС-ЦИКЛА */ /* Zero ГЕНЕРАЦИЯ СИГНАЛА ZERO */ /* Clear ГЕНЕРАЦИЯ СИГНАЛА CLEAR */ /* Inhibit ГЕНЕРАЦИЯ СИГНАЛА INHIBIT */ /* Numb УСТАНОВКА НОМЕРА АКТИВНОГО КК */ /* Enable РАЗРЕШЕНИЕ ПРЕРЫВАНИЯ ОТ IRQ2 */ /* Disable ЗАПРЕТ ПРЕРЫВАНИЯ ОТ IRQ2 */ /* NumLAM ОПРЕДЕЛЕНИЕ НОМЕРА СТАНЦИИ МОДУЛЯ */ /* ИСТОЧНИКА ЗАПРОСА НА ПРЕРЫВАНИЕ */ /* TSTL ПРОВЕРКА СИГНАЛА L */ /* TSTQ ПРОВЕРКА СИГНАЛА Q */ /* TSTX ПРОВЕРКА СИГНАЛА X */ /* Act ВЫПОЛНЕНИЕ ОДИНОЧНОЙ САМАС-ОПЕРАЦИИ */ /* БЕЗ ПЕРЕДАЧИ ДАННЫХ */ /* ActW1B ВЫПОЛНЕНИЕ ОДИНОЧНОЙ САМАС-ОПЕРАЦИИ */ /* C ПЕРЕДАЧЕЙ 8-ми РАЗРЯДНОГО СЛОВА ДАННЫХ */ /* ЭВМ - САМАС */ /* ActW2B ВЫПОЛНЕНИЕ ОДИНОЧНОЙ САМАС-ОПЕРАЦИИ */ /* C ПЕРЕДАЧЕЙ 16-ти РАЗРЯДНОГО СЛОВА */ /* ДАННЫХ ЭВМ - САМАС */ /* ActW3B ВЫПОЛНЕНИЕ ОДИНОЧНОЙ САМАС-ОПЕРАЦИИ */ /* C ПЕРЕДАЧЕЙ 24-х РАЗРЯДНОГО СЛОВА */ /* ДАННЫХ ЭВМ - САМАС */ /* ActR1B ВЫПОЛНЕНИЕ ОДИНОЧНОЙ САМАС-ОПЕРАЦИИ */ /* C ПЕРЕДАЧЕЙ 8-ми РАЗРЯДНОГО СЛОВА */ /* ДАННЫХ САМАС - ЭВМ */ /* ActR2B ВЫПОЛНЕНИЕ ОДИНОЧНОЙ САМАС-ОПЕРАЦИИ */ /* C ПЕРЕДАЧЕЙ 16-ти РАЗРЯДНОГО СЛОВА */ /* ДАННЫХ САМАС - ЭВМ */ /* ActR3B ВЫПОЛНЕНИЕ ОДИНОЧНОЙ САМАС-ОПЕРАЦИИ */ /* C ПЕРЕДАЧЕЙ 24-х РАЗРЯДНОГО СЛОВА ДАННЫХ */ /* САМАС - ЭВМ */ /* -Q ВЫПОЛНЕНИЕ САМАС-ОПЕРАЦИИ */ /* МЕТОДОМ ПОВТОРЕНИЯ С ПРОВЕРКОЙ СИГНАЛА Q */ /* -L ВЫПОЛНЕНИЕ САМАС-ОПЕРАЦИИ */ /* МЕТОДОМ ПОВТОРЕНИЯ С ПРОВЕРКОЙ СИГНАЛА L */ /* ПАРАМЕТРЫ: N - НОМЕР СТАНЦИИ */ /* A - СУБАДРЕС */ /* F - НОМЕР ФУНКЦИИ */ /* dat1 - МЛАДШИЙ БАЙТ */ /* dat2 - СРЕДНИЙ БАЙТ */ /* dat3 - СТАРШИЙ БАЙТ */ /* Num - НОМЕР АКТИВНОГО КОНТРОЛЛЕРА КРЕЙТА */ /***************************************************************/
void Start(void); void Zero(void); void Clear(void); void Inhibit(void); void Numb(int); void Enable(void); void Disable(void); int NumLam(void); int TSTL(void); int TSTQ(void); int TSTX(void);
void Act(int N, int A, int F); void ActW1B(int N, int A, int F, int W); void ActW2B(int N, int A, int F, int W); void ActW3B(int N, int A, int F, int W); void ActR1B(int N, int A, int F, int *data); void ActR2B(int N, int A, int F, int *data); void ActR3B(int N, int A, int F, int *data);
void Act_Q(int N, int A, int F); void ActW1B_Q(int N, int A, int F, int W); void ActW2B_Q(int N, int A, int F, int W); void ActW3B_Q(int N, int A, int F, int W); void ActR1B_Q(int N, int A, int F, int *data); void ActR2B_Q(int N, int A, int F, int *data); void ActR3B_Q(int N, int A, int F, int *data);
void Act_L(int N, int A, int F); void ActW1B_L(int N, int A, int F, int W); void ActW2B_L(int N, int A, int F, int W); void ActW3B_L(int N, int A, int F, int W); void ActR1B_L(int N, int A, int F, int *data); void ActR2B_L(int N, int A, int F, int *data); void ActR3B_L(int N, int A, int F, int *data);
int dat1, dat2, dat3;
void Start(void) { _outp(0x3A7,1);}
void Zero(void) { _outp(0x3A6,1); _outp(0x3A7,1); }
void Clear(void) { _outp(0x3A6,2); _outp(0x3A7,1); }
void Numb(int Num) { _outp(0x3AF,Num); _outp(0x3A7,1); }
int TSTQ(void) { return(_inp(0x3A8) & 1); }
void Act(int N, int A, int F) { _outp(0x3A5,N); _outp(0x3A3,A); _outp(0x3A4,F); _outp(0x3A7,1); } void ActW1B(int N, int A, int F, int dat1) { _outp(0x3A5,N); _outp(0x3A3,A); _outp(0x3A4,F); _outp(0x3A2,dat1); _outp(0x3A7,1); } void ActR1B(int N, int A, int F, int *dat1) { _outp(0x3A5,N); _outp(0x3A3,A); _outp(0x3A4,F); _outp(0x3A7,1); *dat1=_inp(0x3AB); } } ПРИЛОЖЕНИЕ 3 /*************************************************/ /* ПРОГРАММА ИЗМЕРЯЕТ ВРЕМЯ ВЫПОЛНЕНИЯ */ /* ФРАГМЕНТА ПРОГРАММЫ */ /************************************************/
#include <stdio.h> #include <dos.h> #include <conio.h> #include <time.h> #include "camaclib.c"
int i;
void main (void) { clock_t start, end; start = clock();
for (i=0;i<1000000;i++) /* Здесь нужно записать текст фрагмента */ /* программы */ end = clock(); printf("The time, mksec: %f\n", (end - start) / CLK_TCK); }
Пример программы на Visual C++ измерения времени выполнения отдельных фрагментов программного кода приведен в разделе «Высокоскоростные системы сбора данных и управления с интерфейсом ISA» Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.007 сек.) |