прошу помощи....
Собираю девайс на базе Pic16f84 ... а именно счётчик импульсов с динамической индикацией на 7 сегментном 3х разрядном идикаторе ....
Задача девайса:
Проверять состояние порта RA4 и считать кол-во поступивших на него лог. 1 и выводить на индикатор кол-во импульсов...
Программу вроде как написал..
Код: Выделить всё
Segments Var PORTB
Digits Var PORTA
i Var Byte
n Var Byte
Value Var Word
ii Var Word
TRISB = $80 ' Set segment pins to output
TRISA = $f0 ' Set digit pins to output
Value = 0
mainloop
For ii = 0 To 9999
GoSub display ' Display the value
'*
if porta.4 = 1 then Value = Value + 1
if Value = 9999 then Value = 0
Next ii
GoTo mainloop ' Do it forever
'*
' Subroutine to send the number (0 - 9999) in Value to LEDs
display
For i = 0 To 3 ' Loop through 4 digits
n = Value Dig i ' Get digit to display
GoSub display1 ' Display the digit
Pause 1 ' Leave it on 1 millisecond
Next i ' Do next digit
Return
' Surboutine to display one digit on LED
' i = digit number
' n = number to display
display1
Digits = $ff ' All digits off to prevent ghosting
' Convert binary number in n to segments for LED
Lookup n, [$40, $79, $24, $30, $19, $12, $02, $78, $00, $10], Segments
' Set digit pin i to 0 (on) and the rest of the pins to 1 (off)
Digits = ~Dcd i
Return
Но косяк в том, что получилось так что она считает не кол-во лог. 1 , а тупо выполняет цикл For ii = 0 To 9999 когда на порте весит 1, и получается тупо секундомер
Пробовал много разных вариантов.... результат тот-же
вот 1 из них
Код: Выделить всё
' дополнительные переменные
tmr0 VAR Word
tmr1 VAR Word
' изменение кода взятого в " '* '* "
'*
tmr1 = 0
if Value = 9999 then Value = 0
if porta.4 = 1 then tmr1 = 1
if porta.4 = 1 then bb
GoTo mainloop
bb:
if tmr1 - 0 = 1 then Value = Value + 1
Next ii
GoTo mainloop ' Do it forever
'*В результате пропарился и без результатно.... не алгоритмический у меня склад ума господа =(( тут полюбому есть более простой выход до которого я немогу додуматься......