Advertisement
Guest User

Untitled

a guest
Jan 22nd, 2020
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 22.84 KB | None | 0 0
  1. //------- FFDEVICE.CPP ---------------------------------------------------------------
  2. //------- собственно это конкретная реализация класса нашей модели, обеспечивающего
  3. //------- стандартный интерфейс с PROSPICE.
  4. #include "stdafx.h"
  5. #include "FFDEVICE.h" //- заголовочный файл для реализации класса нашей модели.
  6. //------------------------------------------------------------------------------------
  7. int ROM[35][37];
  8.  
  9. STATE TO_STATE(int Znach)
  10. {
  11.  
  12. if(Znach == 1)
  13. {
  14. return SHI;
  15. }
  16. return SLO;
  17. }
  18.  
  19.  
  20. //--- DEVICE::isdigital --------------------------------------------------------------
  21. //--- Каждый вывод компонента, обнаруженный PROSPICE в списке соединений ассоциируется
  22. //--- со своей модель через эту функцию. PROSPICE создаст образец IDSIMPIN для каждого
  23. //--- вывода, для которого получает возврат из этой функции, не равнй нулю.
  24. //--- Эти интерфейсы с выводами доступны затем через функцию IINSTANCE::getdsimpin.
  25. //--- DSIM интерфейс представляет вывод модели как содержимое DSIM.
  26. //--- Он предоставляет доступ к текущему и предшествующему состоянию вывода, и методы,
  27. //--- позволяющие изменять состояние вывода в определенное время в будущем.
  28. //--- См. подробнее об этом VSMSDK.HLP: Class IDSIMPIN
  29. INT FFDEVICE::isdigital (CHAR *pinname)
  30. {
  31. return 1; //--- у модели все выводы цифровые
  32. //--- возможны варианты:
  33. //--- 1 вывод является цифровым или смешанного типа.
  34. //--- 0 вывод является аналоговым или не распознаётся моделью.
  35. //--- -1 вывод может быть как аналоговым, так и цифровым, в зависимости от контекста.
  36. }
  37.  
  38. //--- DEVICE::setup ------------------------------------------------------------------
  39. //--- Эта функция вызывается PROSPICE как только установлено, что компонент имеет
  40. //--- один или более цифровых выводов.
  41. //--- Модели передаётся указатель на примитив симулятора к который она присоединена
  42. //--- и на DSIM цепь, которая её содержит. По сути - это начальная инициаллизация...
  43. VOID FFDEVICE::setup (IINSTANCE *instance, IDSIMCKT *dsimckt)
  44. {
  45. //------------------- IINSTANCE *instance - указатель на примитив симулятатора,
  46. //------------------- к которой модель приосоединена.
  47. //----------------------------------------- IDSIMCKT *ckt - указатель на DSIM цепь,
  48. //----------------------------------------- которая включает в себя модель.
  49.  
  50. //--- Обычно, модель сохраняет оба параметра интерфейса как переменные.
  51. inst = instance;
  52. ckt = dsimckt;
  53.  
  54. //--- Большинство моделей также делает вызовы функции IINSTANCE::getdsimpin, чтобы
  55. //--- приобрести доступ к интерфейсам, которые созданы для её выводов.
  56. //--- Связываем переменные с именами выводов нашей модели
  57. Pin1 = inst->getdsimpin("A0", true);
  58. Pin2 = inst->getdsimpin("A1", true);
  59. Pin3 = inst->getdsimpin("A2", true);
  60. Pin4 = inst->getdsimpin("A3", true);
  61. Pin40 = inst->getdsimpin("A4", true);
  62. Pin46 = inst->getdsimpin("A5", true);
  63.  
  64. Pin7 = inst->getdsimpin("OE", true);
  65.  
  66. Pin8 = inst->getdsimpin("D0", true);
  67. Pin9 = inst->getdsimpin("D1", true);
  68. Pin10 = inst->getdsimpin("D2", true);
  69. Pin11 = inst->getdsimpin("D3", true);
  70. Pin12 = inst->getdsimpin("D4", true);
  71. Pin13 = inst->getdsimpin("D5", true);
  72. Pin14 = inst->getdsimpin("D6", true);
  73. Pin15 = inst->getdsimpin("D7", true);
  74. Pin16 = inst->getdsimpin("D8", true);
  75. Pin17 = inst->getdsimpin("D9", true);
  76. Pin18 = inst->getdsimpin("D10", true);
  77. Pin19 = inst->getdsimpin("D11", true);
  78. Pin20 = inst->getdsimpin("D12", true);
  79. Pin21 = inst->getdsimpin("D13", true);
  80. Pin22 = inst->getdsimpin("D14", true);
  81. Pin23 = inst->getdsimpin("D15", true);
  82. Pin24 = inst->getdsimpin("D16", true);
  83. Pin25 = inst->getdsimpin("D17", true);
  84. Pin26 = inst->getdsimpin("D18", true);
  85. Pin27 = inst->getdsimpin("D19", true);
  86. Pin28 = inst->getdsimpin("D20", true);
  87. Pin29 = inst->getdsimpin("D21", true);
  88. Pin30 = inst->getdsimpin("D22", true);
  89. Pin31 = inst->getdsimpin("D23", true);
  90. Pin32 = inst->getdsimpin("D24", true);
  91. Pin33 = inst->getdsimpin("D25", true);
  92. Pin34 = inst->getdsimpin("D26", true);
  93. Pin35 = inst->getdsimpin("D27", true);
  94. Pin36 = inst->getdsimpin("D28", true);
  95. Pin37 = inst->getdsimpin("D29", true);
  96. Pin38 = inst->getdsimpin("D30", true);
  97. Pin39 = inst->getdsimpin("D31", true);
  98. Pin41 = inst->getdsimpin("D32", true);
  99. Pin42 = inst->getdsimpin("D33", true);
  100. Pin43 = inst->getdsimpin("D34", true);
  101. Pin44 = inst->getdsimpin("D35", true);
  102. Pin45 = inst->getdsimpin("D36", true);
  103.  
  104. //--- установим начальное состояние выходов:
  105. Pin8->setstate(SLO);
  106. Pin9->setstate(SLO);
  107. Pin10->setstate(SLO);
  108. Pin11->setstate(SLO);
  109. Pin12->setstate(SLO);
  110. Pin13->setstate(SLO);
  111. Pin14->setstate(SLO);
  112. Pin15->setstate(SLO);
  113. Pin16->setstate(SLO);
  114. Pin17->setstate(SLO);
  115. Pin18->setstate(SLO);
  116. Pin19->setstate(SLO);
  117. Pin20->setstate(SLO);
  118. Pin21->setstate(SLO);
  119. Pin22->setstate(SLO);
  120. Pin23->setstate(SLO);
  121. Pin24->setstate(SLO);
  122. Pin25->setstate(SLO);
  123. Pin26->setstate(SLO);
  124. Pin27->setstate(SLO);
  125. Pin28->setstate(SLO);
  126. Pin29->setstate(SLO);
  127. Pin30->setstate(SLO);
  128. Pin31->setstate(SLO);
  129. Pin32->setstate(SLO);
  130. Pin33->setstate(SLO);
  131. Pin34->setstate(SLO);
  132. Pin35->setstate(SLO);
  133. Pin36->setstate(SLO);
  134. Pin37->setstate(SLO);
  135. Pin38->setstate(SLO);
  136. Pin39->setstate(SLO);
  137. Pin41->setstate(SLO);
  138. Pin42->setstate(SLO);
  139. Pin43->setstate(SLO);
  140. Pin44->setstate(SLO);
  141. Pin45->setstate(SLO);
  142.  
  143. int data[36][37] = {
  144.  
  145. // Загр Опер Ист Адр. ПЗУ Адр след. Выбор УА или ОА
  146. // Ad3_1_1
  147. // v v v Ad2_1_1
  148. // v v B2 B1 B3 v Ad1_1_1
  149. // A B D I8,7,6 I5,4,3 I2,1,0 CX X1,X0 Ad0_1_1 AR E_2
  150. { 0,0,0,0, 0,0,0,0, 1,0,1,0, 0,1,1, 0,0,0, 1,1,1, 0, 0,0, 0,0,0,0,0,0, 0,0,0,0,0,0, 0, }, // 0
  151. { 0,0,0,0, 0,0,0,1, 1,1,1,0, 0,1,1, 0,0,0, 1,1,1, 0, 0,0, 0,0,0,0,0,1, 0,0,0,0,0,0, 0, }, // 1
  152. { 0,0,0,0, 0,0,1,0, 1,0,1,0, 0,1,1, 0,0,0, 1,1,1, 0, 0,0, 0,0,0,0,1,0, 0,0,0,0,0,0, 0, }, // 2
  153. { 0,0,0,0, 0,0,1,1, 0,1,1,1, 0,1,1, 0,0,0, 1,1,1, 0, 0,0, 0,0,0,0,1,1, 0,0,0,0,0,0, 0, }, // 3
  154. { 0,0,0,0, 0,1,0,0, 1,1,0,0, 0,1,1, 0,0,0, 1,1,1, 0, 0,0, 0,0,0,1,0,0, 0,0,0,0,0,0, 0, }, // 4
  155. { 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0, 0,0,0, 0,1,1, 0, 0,0, 0,0,0,1,0,1, 0,0,0,0,0,0, 0,}, // 5
  156. { 0,0,0,1, 0,0,0,0, 0,0,0,0, 0,0,1, 0,0,1, 0,0,0, 1, 0,0, 0,0,0,1,1,0, 0,0,0,0,0,0, 0,}, // 6 10-14
  157. { 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,1, 0,0,0, 0,0,0, 0, 1,1, 0,0,0,1,1,1, 0,1,1,1,1,0, 0,}, // 7 z
  158. { 0,0,1,0, 0,0,0,0, 0,0,0,0, 0,0,1, 0,0,1, 0,0,0, 1, 0,0, 0,0,1,0,0,0, 0,0,0,0,0,0, 0,}, // 8 10-10
  159. { 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,1, 0,0,0, 0,0,0, 0, 1,1, 0,0,1,0,0,1, 0,1,1,1,1,0, 0,}, // 9 z
  160. { 0,0,1,1, 0,0,0,0, 0,0,0,0, 0,0,1, 0,0,1, 0,0,0, 1, 0,0, 0,0,1,0,1,0, 0,0,0,0,0,0, 0,}, // 10
  161. { 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,1, 0,0,0, 0,0,0, 0, 1,1, 0,0,1,0,1,1, 0,1,1,1,1,0, 0,}, // 11
  162. { 0,1,0,0, 0,0,0,0, 0,0,0,0, 0,0,1, 0,0,1, 0,0,0, 1, 0,0, 0,0,1,1,0,0, 0,0,0,0,0,0, 0,}, // 12
  163. { 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,1, 0,0,0, 0,0,0, 0, 1,1, 0,0,1,1,0,1, 0,1,1,1,1,0, 0,}, // 13
  164. { 0,0,0,0, 0,0,0,1, 0,0,0,0, 0,0,0, 0,0,0, 0,1,1, 0, 0,0, 0,0,1,1,1,0, 0,0,0,0,0,0, 0,}, // 14
  165. { 0,0,1,0, 0,0,0,0, 0,0,0,0, 0,0,1, 0,0,1, 0,0,0, 1, 0,0, 0,0,1,1,1,1, 0,0,0,0,0,0, 0,}, // 15
  166. { 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,1, 0,0,0, 0,0,0, 0, 1,1, 0,1,0,0,0,0, 0,1,1,1,1,0, 0,}, // 16
  167. { 0,0,1,1, 0,0,0,0, 0,0,0,0, 0,0,1, 0,0,1, 0,0,0, 1, 0,0, 0,1,0,0,0,1, 0,0,0,0,0,0, 0,}, // 17
  168. { 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,1, 0,0,0, 0,0,0, 0, 1,1, 0,1,0,0,1,0, 0,1,1,1,1,0, 0,}, // 18
  169. { 0,1,0,0, 0,0,0,0, 0,0,0,0, 0,0,1, 0,0,1, 0,0,0, 1, 0,0, 0,1,0,0,1,1, 0,0,0,0,0,0, 0,}, // 19
  170. { 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,1, 0,0,0, 0,0,0, 0, 1,1, 0,1,0,1,0,0, 0,1,1,1,1,0, 0,}, // 20
  171. { 0,0,0,0, 0,0,1,0, 0,0,0,0, 0,0,0, 0,0,0, 0,1,1, 0, 0,0, 0,1,0,1,0,1, 0,0,0,0,0,0, 0,}, // 21
  172. { 0,0,1,1, 0,0,0,0, 0,0,0,0, 0,0,1, 0,0,1, 0,0,0, 1, 0,0, 0,1,0,1,1,0, 0,0,0,0,0,0, 0,}, // 22
  173. { 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,1, 0,0,0, 0,0,0, 0, 1,1, 0,1,0,1,1,1, 0,1,1,1,1,0, 0,}, // 23
  174. { 0,1,0,0, 0,0,0,0, 0,0,0,0, 0,0,1, 0,0,1, 0,0,0, 1, 0,0, 0,1,1,0,0,0, 0,0,0,0,0,0, 0,}, // 24
  175. { 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,1, 0,0,0, 0,0,0, 0, 1,1, 0,1,1,0,0,1, 0,1,1,1,1,0, 0,}, // 25
  176. { 0,0,0,0, 0,0,1,1, 0,0,0,0, 0,0,0, 0,0,0, 0,1,1, 0, 0,0, 0,1,1,0,1,0, 0,0,0,0,0,0, 0,}, // 26
  177. { 0,1,0,0, 0,0,0,0, 0,0,0,0, 0,0,1, 0,0,1, 0,0,0, 1, 0,0, 0,1,1,0,1,1, 0,0,0,0,0,0, 0,}, // 27
  178. { 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,1, 0,0,0, 0,0,0, 0, 1,1, 0,1,1,1,0,0, 0,1,1,1,1,0, 0,}, // 28
  179. { 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,1, 0,0,0, 0,0,0, 0, 0,1, 0,1,1,1,0,1, 0,1,1,1,1,1, 0,}, // 29
  180. { 0,0,0,0, 0,1,1,0, 0,0,0,0, 0,1,1, 0,0,0, 0,1,0, 0, 0,0, 0,1,1,1,1,0, 0,0,0,0,0,0, 0, }, // 30 PQ в POH(6)
  181. { 0,0,0,0, 0,1,1,1, 0,0,1,1, 0,1,1, 0,0,0, 1,1,1, 0, 0,0, 0,1,1,1,1,1, 0,0,0,0,0,0, 0, }, // 31 Эталонное напряжение в РОН(7)
  182. { 0,0,0,0, 1,0,0,0, 0,0,0,0, 0,1,1, 0,0,0, 1,1,1, 0, 0,0, 1,0,0,0,0,0, 0,0,0,0,0,0, 1, }, // 32 Считываем полученное напряжение в РОН(8) с шины D
  183. { 1,0,0,0, 0,1,1,1, 0,0,0,0, 0,0,1, 0,0,1, 0,0,1, 1, 0,0, 1,0,0,0,0,1, 0,0,0,0,0,0, 0, }, // 33 POH(8) - POH(7)
  184. { 1,0,0,0, 0,1,1,1, 0,0,0,0, 0,0,1, 0,0,1, 0,0,1, 1, 1,1, 1,0,0,0,1,0, 1,0,0,0,1,0, 0,}, // 34 Флаг Z
  185. { 1,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,1, 0,0,0, 1,1,1, 0, 0,1, 1,0,0,0,0,1, 1,0,0,0,0,1, 0, } // 35 Увеличить напряжение для увеличения тока
  186.  
  187. };
  188.  
  189. for (int i = 0; i < 36; i++) {
  190. for (int j = 0; j < 37; j++) {
  191. ROM[i][j] = data[i][j];
  192. }
  193. }
  194.  
  195. Pin8->setstate(TO_STATE(ROM[0][0]));
  196. Pin9->setstate(TO_STATE(ROM[0][1]));
  197. Pin10->setstate(TO_STATE(ROM[0][2]));
  198. Pin11->setstate(TO_STATE(ROM[0][3]));
  199. Pin12->setstate(TO_STATE(ROM[0][4]));
  200. Pin13->setstate(TO_STATE(ROM[0][5]));
  201. Pin14->setstate(TO_STATE(ROM[0][6]));
  202. Pin15->setstate(TO_STATE(ROM[0][7]));
  203. Pin16->setstate(TO_STATE(ROM[0][8]));
  204. Pin17->setstate(TO_STATE(ROM[0][9]));
  205. Pin18->setstate(TO_STATE(ROM[0][10]));
  206. Pin19->setstate(TO_STATE(ROM[0][11]));
  207. Pin20->setstate(TO_STATE(ROM[0][12]));
  208. Pin21->setstate(TO_STATE(ROM[0][13]));
  209. Pin22->setstate(TO_STATE(ROM[0][14]));
  210. Pin23->setstate(TO_STATE(ROM[0][15]));
  211. Pin24->setstate(TO_STATE(ROM[0][16]));
  212. Pin25->setstate(TO_STATE(ROM[0][17]));
  213. Pin26->setstate(TO_STATE(ROM[0][18]));
  214. Pin27->setstate(TO_STATE(ROM[0][19]));
  215. Pin28->setstate(TO_STATE(ROM[0][20]));
  216. Pin29->setstate(TO_STATE(ROM[0][21]));
  217. Pin30->setstate(TO_STATE(ROM[0][22]));
  218. Pin31->setstate(TO_STATE(ROM[0][23]));
  219. Pin32->setstate(TO_STATE(ROM[0][24]));
  220. Pin33->setstate(TO_STATE(ROM[0][25]));
  221. Pin34->setstate(TO_STATE(ROM[0][26]));
  222. Pin35->setstate(TO_STATE(ROM[0][27]));
  223. Pin36->setstate(TO_STATE(ROM[0][28]));
  224. Pin37->setstate(TO_STATE(ROM[0][29]));
  225. Pin38->setstate(TO_STATE(ROM[0][30]));
  226. Pin39->setstate(TO_STATE(ROM[0][31]));
  227. Pin41->setstate(TO_STATE(ROM[0][32]));
  228. Pin42->setstate(TO_STATE(ROM[0][33]));
  229. Pin43->setstate(TO_STATE(ROM[0][34]));
  230. Pin44->setstate(TO_STATE(ROM[0][35]));
  231. Pin45->setstate(TO_STATE(ROM[0][36]));
  232. }
  233.  
  234. //---- DEVICE::runctrl ------------------------------------------------------------------
  235. //---- Эта функция вызывается PROSPICE в начале каждого кадра анимации во время интерактивного
  236. //---- симулирования. Она также называется в конце кадра, который приостановлен или потому что
  237. //---- пользователь нажал кнопку ПАУЗА, или модели передан аналогичный паузе вызов.
  238. //---- Эта функция важна при симуляции микропроцессорных моделей для пошаговой отладки и
  239. //---- установки контрольных точек (breakpoints).
  240. //---- Функция обеспечивает возможность опрелелить выполняется ли симуляция в интерактивном
  241. //---- в том случае, если функция не вызвана для пакетного режима анализа.
  242. //---- Функция также позволяет модели выполнять любые действия по инициаллизации, требующийся
  243. //---- в начало каждого интервала анимации.
  244. //----
  245. VOID FFDEVICE::runctrl (RUNMODES mode)
  246. {
  247. //--- Функция может проанализировать параметр (RUNMODES mode):
  248. //--- RM_BATCH=-1, // BATCH-режим ни разу не вызывался;
  249. //--- RM_START, // Указывает самый первый кадр (фрейм) анимации.
  250. //--- RM_STOP, // Симуляция остановлена (нажата кнопка СТОП)
  251. //--- RM_SUSPEND, // Симуляция приостановлена (нажата кнопка ПАУЗА);
  252. //--- RM_ANIMATE, // Симуляция свободно выполняется;
  253. //--- Эти значения представляют интерес при пошаговой отладке:
  254. //--- RM_STEPTIME, // Кнопка STEP(ШАГ) была нажата
  255. //--- RM_STEPOVER, // Выполняется "Шаг через подпрограмму"(Step Over command)
  256. //--- RM_STEPINTO, // Выполняется "Шаг в подпрограмму" (Step Into command)
  257. //--- RM_STEPOUT, // Выполняется "Шаг из подпрограмму"(Step Out command)
  258. //--- RM_STEPTO // Выполняется "Шаг к команде"(Step To command)
  259. //--- их смысл становится понятен, если протестировать пошаговую отладку CPU с программой.
  260.  
  261. //--- Здесь можно использовать VOID IINSTANCE::log (CHAR *msg, ...) для контроля.
  262. //--- Функция добавляет сообщение к log-списку симуляции.
  263. //--- Эта функция наиболее полезна для отладки новых моделей тогда как log-список
  264. //--- отображается в всплывающем окне, а сообщения появятся в нём по мере их генерации.
  265. //--- Функция аналогична "printf" в C и использует аналогичные аргументы [ ... ].
  266. //--- Пример:
  267. //--- if (instance) instance->log ("DIGONLY::runctrl() called with mode=%d:%s", mode, EnumToRunCtrl(mode));
  268.  
  269. //--- для сообщений без остановки симуляции интересна следующая функция сообщения:
  270. //--- BOOL IINSTANCE::message (CHAR *msg, ...) - выводит сообщение в строке статуса ISIS.
  271. //--- Этот сервис доступен только для интерактивного режима симуляции.
  272. //--- Функция также аналогична "printf" в C и использует аналогичные аргументы [ ... ].
  273.  
  274. //--- Есть ряд других, похожих, но более специализированных функций, позволяющих как
  275. //--- выводить сообщения в log, так и управлять отладкой. (См. Logging and messaging: )
  276. }
  277.  
  278. //---- DEVICE::actuate ------------------------------------------------------------------
  279. //---- Эта функция вызывается PROSPICE в результате изменения пользователем состояние связанного
  280. //---- с моделью выключателя, переключателя и т.д. (Некоего устройства ввода).
  281. //---- Обычно есть необходимость осуществлять эту функцию если Вы используете некоторый тип
  282. //---- интерактивно управляемого во время симуляции ключа, вспомогательной клавиатуры
  283. //---- или другого регулируемого во время симуляции компонента.
  284. VOID FFDEVICE::actuate (REALTIME time, ACTIVESTATE newstate)
  285. {
  286. //---- анализируется состояние (ACTIVESTATE newstate)
  287. }
  288.  
  289. //---- DEVICE::indicate ------------------------------------------------------------------
  290. //---- Эта функция вызывается PROSPICE в конце каждого кадра анимации. Она позволяет
  291. //---- электрической модели возможность передать информацию обратно на связанный с моделью
  292. //---- указатель или в графическую модель.
  293. //----
  294. BOOL FFDEVICE::indicate (REALTIME time, ACTIVEDATA *data)
  295. {
  296. //---- обслуживается структура (ACTIVEDATA *data)
  297. //---- через неё можно передать информацию в графическую модель(см.VSMSDK.HLP).
  298. return FALSE;
  299. }
  300.  
  301. //---- DEVICE::simulate ------------------------------------------------------------------
  302. //---- Эта функция вызывается DSIM если любая из цепей к которым подсоединены входы модели
  303. //---- изменяет своё состояние в определенное время.
  304. //---- Модель может опросить текущее и предшествующее состояние любого из своих выводов,
  305. //---- используя их IDSIMPIN интерфейсы и затем может вызывать IDSIMPIN::setstate, чтобы
  306. //---- послать любое изменение состояний на свои выходы.
  307. //---- Модель может использовать СТАРТОВЫЙ вызов, чтобы установить начальные события
  308. //---- возврата, использующие функцию IDSIMCKT::setcallback.
  309. //---- СТАРТОВЫЙ вызов (DSIMMODES = BOOT, самый первый шаг по времени. Все модели получают
  310. //---- вызов их функции "simulate" в процессе загрузки.)
  311. VOID FFDEVICE::simulate (ABSTIME time, DSIMMODES mode)
  312. {
  313. if (ishigh(Pin7->istate())) {
  314.  
  315. int adres = 0;
  316.  
  317. if(ishigh(Pin1->istate()))
  318. {
  319. adres+=1;
  320. }
  321. if(ishigh(Pin2->istate()))
  322. {
  323. adres+=2;
  324. }
  325. if(ishigh(Pin3->istate()))
  326. {
  327. adres+=4;
  328. }
  329. if (ishigh(Pin4->istate()))
  330. {
  331. adres += 8;
  332. }
  333. if (ishigh(Pin40->istate()))
  334. {
  335. adres += 16;
  336. }
  337. if (ishigh(Pin46->istate()))
  338. {
  339. adres += 32;
  340. }
  341.  
  342. Pin8->setstate(time, 1, TO_STATE(ROM[adres][0]));
  343. Pin9->setstate(time, 1, TO_STATE(ROM[adres][1]));
  344. Pin10->setstate(time, 1, TO_STATE(ROM[adres][2]));
  345. Pin11->setstate(time, 1, TO_STATE(ROM[adres][3]));
  346. Pin12->setstate(time, 1, TO_STATE(ROM[adres][4]));
  347. Pin13->setstate(time, 1, TO_STATE(ROM[adres][5]));
  348. Pin14->setstate(time, 1, TO_STATE(ROM[adres][6]));
  349. Pin15->setstate(time, 1, TO_STATE(ROM[adres][7]));
  350. Pin16->setstate(time, 1, TO_STATE(ROM[adres][8]));
  351. Pin17->setstate(time, 1, TO_STATE(ROM[adres][9]));
  352. Pin18->setstate(time, 1, TO_STATE(ROM[adres][10]));
  353. Pin19->setstate(time, 1, TO_STATE(ROM[adres][11]));
  354. Pin20->setstate(time, 1, TO_STATE(ROM[adres][12]));
  355. Pin21->setstate(time, 1, TO_STATE(ROM[adres][13]));
  356. Pin22->setstate(time, 1, TO_STATE(ROM[adres][14]));
  357. Pin23->setstate(time, 1, TO_STATE(ROM[adres][15]));
  358. Pin24->setstate(time, 1, TO_STATE(ROM[adres][16]));
  359. Pin25->setstate(time, 1, TO_STATE(ROM[adres][17]));
  360. Pin26->setstate(time, 1, TO_STATE(ROM[adres][18]));
  361. Pin27->setstate(time, 1, TO_STATE(ROM[adres][19]));
  362. Pin28->setstate(time, 1, TO_STATE(ROM[adres][20]));
  363. Pin29->setstate(time, 1, TO_STATE(ROM[adres][21]));
  364. Pin30->setstate(time, 1, TO_STATE(ROM[adres][22]));
  365. Pin31->setstate(time, 1, TO_STATE(ROM[adres][23]));
  366. Pin32->setstate(time, 1, TO_STATE(ROM[adres][24]));
  367. Pin33->setstate(time, 1, TO_STATE(ROM[adres][25]));
  368. Pin34->setstate(time, 1, TO_STATE(ROM[adres][26]));
  369. Pin35->setstate(time, 1, TO_STATE(ROM[adres][27]));
  370. Pin36->setstate(time, 1, TO_STATE(ROM[adres][28]));
  371. Pin37->setstate(time, 1, TO_STATE(ROM[adres][29]));
  372. Pin38->setstate(time, 1, TO_STATE(ROM[adres][30]));
  373. Pin39->setstate(time, 1, TO_STATE(ROM[adres][31]));
  374. Pin41->setstate(time, 1, TO_STATE(ROM[adres][32]));
  375. Pin42->setstate(time, 1, TO_STATE(ROM[adres][33]));
  376. Pin43->setstate(time, 1, TO_STATE(ROM[adres][34]));
  377. Pin44->setstate(time, 1, TO_STATE(ROM[adres][35]));
  378. Pin45->setstate(time, 1, TO_STATE(ROM[adres][36]));
  379. }
  380. }
  381.  
  382. //---- DEVICE::callback ------------------------------------------------------------------
  383. //---- Эта функция получает события возврата созданные через IDSIMCKT::setcallback
  384. //---- Для того, чтобы осуществлять повторяющиеся события, как, например, тактовые
  385. //---- генераторы, функция возврата должна создать следующее событие возврата,
  386. //---- вызывая IDSIMCKT::setcallback сама.
  387. VOID FFDEVICE::callback (ABSTIME time, EVENTID eventid)
  388. {
  389.  
  390. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement