/************************* клиент для ПЛК ip-8441+i8053W. Сигналы ПА приходят на модуль i8053W, считывается значение с модуля в основной программе, в функции прерывания считается счетчик попаданий. Вызывается ISR функция каждые 90 мс *****/ #include "..\..\lib\8000a.h" #include char counter0=0, counter1=0, counter2=0, counter3=0, counter4=0; //flag shows is new value got from DI_16(0) unsigned char r0=0, r1=0, r2=0, r3=0, r4=0; unsigned int value=0; //value from DI_16(0) int new_value=0; char counts[5]; //array of counter for catch signals void ISR_Function() { /* if(new_value==1){ if(r0) counter0++; else counter0=0; if(r1) counter1++; else counter1=0; if(r2) counter2++; else counter2=0; if(r3) counter3++; else counter3=0; if(r4) counter4++; else counter4=0; new_value=0; } */ new_value++; } void main() { int ind=0; InitLib(); Init5DigitLed(); Show5DigitLedSeg(1, 0x46); Show5DigitLedSeg(2,0x3e); Show5DigitLedSeg(3,0x76); Show5DigitLedSeg(4,0); Show5DigitLedSeg(5,0); InstallUserTimerFunction_ms(90,ISR_Function); for(;;) { if(Kbhit()&&Getch()==27) { break; } /* value=DI_16(0); new_value=1; r0=(value>>8)&1; r1=(value>>9)&1; r2=(value>>10)&1; r3=(value>>11)&1; r4=(value>>12)&1; Print("**%i\n\r"); if(r0)Print("%iR0=%i\n\r", ind, r0); if(counter0) Print("%iCounter[0]=%i\n\r", ind++, counter0); */ Print("**%i\r", new_value); } StopUserTimerFun(); }