@name Timer 
@inputs Clk Reset 
@outputs Second Milli Micro

interval(1) 
while(Clk == 1) 

Second = Second + 0.01 
Milli = Milli + 1 
Micro = Milli * 100 
if(Reset == 1 & Clk == 0) 

Second = 0 
Milli = 0 
Micro = 0 

break 
}

КОД E2 САМОЕ СЛОЖНОЕ 
Чего греха таить, я всего лишь обьясню как действует этот код, итак:

@name Timer

@name это директива которая обозначает что следующее что за ней пойдет, это имя, до конца строки.

@inputs Clk Reset 
В данном случае директива дает знать игре какие будут входы на чипе, записывать их нужно раздельно, поэтому названий входом вроде "WTF HAAX" не получится. Таким же образов действует @outputs только там обозначаются выходы.

Главная работа КЭПа завершается.

interval(1) - это команда обозначает сколько раз будет повторятся код, точнее сказать, через какие промежутки времени. В миллисекундах обозначается если что. Синтаксис думаю понятен. Кстати я пока сам до конца не понял как это действует, что, повторяется код от и до фигурных скобок?

while(Clk == 1) - ключевое слово "while" обозначает что пока выполняется условие, будет выполнятся и то что находится в скобках. Правда в сборке сайта этот цикл бесполезен, так как если не поставит break в конце, игра не будет принимать, так как она считает что условия всегда выполняются, и игра может зависнуть. А если поставить в условие x < 100 получается что? Что всегда может быть X меньше 100? Получается цикл становится тем же if.

Second = Second + 0.01 
Milli = Milli + 1 
Micro = Milli * 100

Ну думаю с этим все понятно. Математические операции. Кстати если написать например Second + 10, а не Second = Second + 10, то по непонятной причине игра сложит числа, но не засунет их в первый оператор(точнее говоря она будет считать что Second это первый оператор, с неизвестным числом, и игра автоматом подставляет ему значение 0, и получается циклом всегда будет получатся 10, а не увеличиваться на 10). Хотя в циклах for правило не действует, очень странно.

if(Reset == 1 & Clk == 0)

О, самое интересное. Ключевое слово "if" по-русски "если", обозначает что если условие выполнилось, то один развыполняется код в скобках, если нет, то не выполняется. Кстати в условии можно использовать логические операции, в моем случае используется "И", обозначаемый символом "&", думаю что логические операции не надо объяснять, потому что любой их знает, кто видел программирование хоть глазком.

Second = 0 
Milli = 0 
Micro = 0

КЭП. Обнуление.

break

Как ни странно эта функция используется для преждевременных выходов из цикла. Всегда нужно ставить в нашем цикле, иначе игра не примет. Игра - дура)))) ВАМ ЖЕ СКАЗАЛИ НЕ ВЫДЕЛЯТЬ! Не выделяйте то что тут было написано)!

В заключение пару нюансов: 
"=", и "==" это разные операции, просто "=" обозначает присвоение значения к чему то, а "==" обозначает что эти два операнда равны. 
Clk - вход для кнопки которая врубает таймер. 
Reset - для того чтобы сбросить таймер. 
Second, Milli, Micro - КЭП, выходы для значений секунд, миллисекунд, микросекунд. 


  • Комментарии ВКонтакте
  • Комментарии на сайте

По просмотрам По дате По рейтингу По комментарием