Далее переменную двигаем.
Как-то так:
Код: Выделить всё
For I = 1 To 8
Var.0 = Pinb.0
Shift Var , Left , 1
Waitms 2
Next IКод: Выделить всё
For I = 1 To 8
Var.0 = Pinb.0
Shift Var , Left , 1
Waitms 2
Next IМурик писал(а):Считываем текущее значение из порта или компаратора и пишем его в младший бит переменной.
Далее переменную двигаем.
Код: Выделить всё
$regfile = "m8def.dat"
$crystal = 8000000
Config Pind.2 = Input
Config Int0 = Falling
On Int0 baton
Enable Interrupts
Enable Int0
Do
...
If Stjag = 1 Then Goto PP.1
Лейбл.1
...
Loop
baton :
Asm
Stjag = 1
конец Asm
Waitms 250
Gifr = 64
wdr
Return
PP.1:
Stjag = 0
Шевелю ногами
Лейбл.1
Return
EndКод: Выделить всё
$hwstack = 64
$swstack = 32
$framesize = 64
$lib "lcd4.lbx"Как-то смущает меня переход по goto а возврат по return. Может стоит по gosub уйти?
Код: Выделить всё
$framesize = 64
$lib "lcd4.lbx"
Wdtcr = &B00001111Код: Выделить всё
$regfile = "attiny2313.dat"
$crystal = 4000000
'----------
Config Porta.1 = Output ' светодиод
Config Pind.2 = Input ' INT0
Const Debouncetime = 150 ' 150 мс
Led Alias Porta.1
Led = 0
'----------
Config Int0 = Falling
On Int0 Button
Enable Interrupts
Enable Int0
'----------
Do
Loop
'----------
Button:
Toggle Led
Waitms Debouncetime ' антидребезг
Eifr = 64 ' сбрасываем флаг
Return
EndКод: Выделить всё
Button:
Waitms Debouncetime ' антидребезг
Toggle Led
While Pind.2 = 0 ' если кнопка удерживается
Waitms Debouncetime
Wend ' крутимся здесь
Eifr = 64 ' сбрасываем флаг
ReturnЯ бы удивился если бы работало.saschai писал(а):ГОТО-РЕТУРН, не работает!!!

saschai писал(а):И еще один вопросик, про грамотный синтаксис описание включения сторожевого таймера
Код: Выделить всё
Config Watchdog = 2048
Start Watchdog
Reset Watchdog
Мурик писал(а):Это создаст фатальные проблемы со стеком, что приведёт к краху программы!
Я не видел подобных решений, но в процессе экспериментов получилось, что полностью убирает ложные срабатывания только проверка на удержание кнопки, непосредственно перед очисткой флага прерывания.