Ну вот, после нескольких танцев с бубном на индикаторе: "000000.00". На входную частоту не реагирует. Почему?

Теперь код выглядит так:
Код: Выделить всё
$regfile = "attiny2313.dat" 'выбираем микроконтроллер
$crystal = 8000000 ' частота кварца
$lib "mcsbyte.lbx"
$lib "mcsbyteint.lbx"
Config Portb = Output
Signal Alias Pind.5
Kn Alias Pind.0
Knr Alias Pind.1
Dn Alias Portb.4 ' data (порт для данных на ЖК)
Cl Alias Portb.5 'clock (порт синхронизации на ЖК)
Csst Alias Portb.7 'старшая микросхема
Csml Alias Portb.6 'младшая микросхема
' обЪявляем переменные
Dim I As Byte
Dim Cifri(9) As Byte
Dim T As Byte
Dim A As Word
Dim Byte0 As Byte , Byte1 As Byte
Dim Overflow As Byte
Dim X As Byte
Dim Cnt As Word
Dim Fr As Long
Dim Flag As Bit 'переменные частотомера
Dim Ph As Word
Dim Pl As Word ' переменные периода
Config Timer0 = Timer , Prescale = 1
Enable Interrupts
Enable Timer0
'**********************
Fmetr: ' начало программы частотометра
Cifri(1) = 13
Gosub Indicator
Stop Timer1
Config Timer1 = Counter , Edge = Rising , Noise Cancel = 1 ' включена фильтрация шумов
On Timer0 Tm0_intsub
On Timer1 Tm1_intsub
Counter1 = 0
Overflow = 0
Cnt = 31250
Flag = 0
'******Initial******
Start Timer0
Start Counter1
'*******Main Loop*****
Main:
Do
If Flag = 1 Then
X = Counter1
Gosub Indicator
Reset Flag
Counter1 = 0
Overflow = 0
Cnt = 31250 ' значение подобрано для захвата за 1 секунду
Start Timer0
Start Counter1
End If
Debounce Kn , 0 , Pmetr
Loop
Pmetr:
Stop Counter1
Cifri(1) = 12
Config Timer1 = Timer , Prescale = 8
Enable Timer1
Aa:
Do
Gosub Indicator
Stop Timer1
Timer1 = 0
Bitwait Signal , Set
Start Timer1
Bitwait Signal , Reset
Stop Timer1
Ph = Timer1
Timer1 = 2
Start Timer1
Bitwait Signal , Set
Stop Timer1
Pl = Timer1
If Kn = 1 Then Gosub Fmetr
Debounce Knr , 0 , Reg , Sub
Select Case A
Case 1
Cifri(2) = 14
X = Ph
Case 2
Cifri(2) = 15
X = Pl
Case 3
Cifri(2) = 16
Fr = Ph + Pl
If Ph > 100 Then
X = Ph \ 100
Fr = Fr * Ph
Else
Fr = Fr * Ph
Fr = Fr \ 100
End If
End Select
Loop
'************************************************
'*******Counter1 Overflow Interrupt**************
Tm1_intsub: 'переполнение counter1 - счетчик прешедших импульсов
Incr Overflow
Return
'***********Timer0 Zero Interrupt****************
Tm0_intsub:
If Cnt <> 0 Then ' отсчет одной секунды
Decr Cnt
Else
Stop Counter1
Stop Timer0
Set Flag
End If
Return
'************End of interrupt*********************
Indicator:
Fr = Overflow * 65536 'количество импульсов умн. на кол. переполнений
Fr = Fr + X ' и плюс что ещё насчитали
I = 0 ' и разделяем значения на цифры
While I < 7
Incr I
Cifri(i) = Fr Mod 10
Fr = Fr / 10
Wend
'Set Csst
'Set Csml
Reset Csst
Reset Csml
I = Lookup(cifri(1) , Dta)
Gosub Ind
I = Lookup( , Dta)
Gosub Ind
I = Lookup(cifri(3) , Dta)
Gosub Ind
I = Lookup(cifri(4) , Dta)
Gosub Ind
I = Lookup(10 , Dta) 'загрузка спец кода
Gosub Ind
'Reset Csst
'Reset Csml
'Set Csst
Set Csst
Set Csml
Reset Csst
I = Lookup(cifri(5) , Dta)
Gosub Ind
I = Lookup(cifri(6) , Dta)
I = I - &H80
Gosub Ind
I = Lookup(cifri(7) , Dta)
Gosub Ind
I = Lookup(cifri(8) , Dta)
Gosub Ind
I = Lookup(11 , Dta) 'загрузка спец кода
I = I + Cifri(9) 'и включение указательных спец символов
Gosub Ind
'Reset Csst
Set Csst
Return
Dta: ' таблица с данными о цифрах зажигает по порядку : 1234567890
Data &HC0 , &HF9 , &HA4 , &HB0 , &H99 , &H92 , &H82 , &HF8 , &H80 , &H90 , &HF0 , &HFF , &H8C , &H8E , &H89 , &HC7 , &H94
' 0 1 2 3 4 5 6 7 8 9 Cs m Cs St P F 14 H 15 L o
Ind:
'Shiftout Dn , Cl , I , 0 'последовательная загрузка
I = Not I
Shiftout Dn , Cl , I , 1
Return
Reg:
Incr A
If A > 3 Then A = 1
Return