Доброе время суток, Господа!
В Bascom'e я новичОк
А потому прошу советы профессионалов
Набросал вот такую схемку
Она представлет собой моддинг стоп-сигналов на 5 каналов
идея в следующем:
[эффект_1] поворот налево - бегущий огонь налево (пока на PIND.4 = 0)
[эффект_2] поворот направо - бегущий огонь направо (пока на PIND.5 = 0)
[эффект_3] авайрийник - мигают все 5 каналов (пока на PIND.4 = 0 and PIND.5 = 0)
[STOP] (тут прерывание PIND.2 (INT0)) - горят все лампы статично и (!)не важно, какая операция была до прерывания.
В случае, если аварийник и поворотники не горят - стоп-сигналы все-равно работают по прерыванию.
Внимание:
Реализован, [эффект_1] и [эффект_2]. Трабла в том, что подав 0 к соответ. портам, огонек без остановки бежит
Как сделать так, чтобы огонь бегал, пока на PIND.X = 0 ? (я вроде указал это в коде)
И еще, касательно PIND.2 (INT0) - прерывание сразу пролетает.
т.е. при активном [эффект_1], [эффект_2], [эффект_3] все 5 каналов вспыхнут и программа идет дальше 
Как сделать так, чтобы прерывание было активно. пока PIND.2 = 0
Подскажите, укажите ошибку. Может че-то напортачил
Буду весьма благодарен 
Выкладываю код
'------------------------------------------------------------------
'моддинг стоп-сигналов
'------------------------------------------------------------------
$regfile = "2313def.dat" 'specify the used micro
$crystal = 4000000'used crystal frequency
$baud = 19200'use baud rate
$hwstack = 32'default use 32 for the hardware stack
$swstack = 10'default use 10 for the SW stack
$framesize = 40'default use 40 for the frame space
Config Portb.0 = Output 'настройка пина b0 выход (LED1)
Config Portb.1 = Output 'настройка пина b1 выход (LED2)
Config Portb.2 = Output 'настройка пина b2 выход (LED3)
Config Portb.3 = Output 'настройка пина b3 выход (LED4)
Config Portb.4 = Output 'настройка пина b4 выход (LED5)
Config Portd.4 = Input 'настройка пина D4 на вход (S1)
Config Portd.5 = Input 'настройка пина D5 на вход (S2)
Config Portd.2 = Input
Config Int0 = Rising
Config Debounce = 50
Enable Interrupts
Enable Int0
On Int0 Stopbutton
Dim Effect As Byte
Dim Temp As Byte
Temp = 250
Инициализация
Portb = 0 '00000'
'-------------------------------------------------------------------------------
Do 'начало всех начал
'Опрос кнопок
If Pind.4 = 0 Then Effect = 1 Else Portb = 0
If Pind.5 = 0 Then Effect = 2 Else Portb = 0
If Pind.4 = 0 And Pind.5 = 0 Then Effect = 3 Else Portb = 0
'RIGHT, если Effect = 1
If Effect = 1 Then
Portb = 1 '10000'
Waitms Temp
Portb = 2 '01000'
Waitms Temp
Portb = 4 '00100'
Waitms Temp
Portb = 8 '00010'
Waitms Temp
Portb = 16 '00001'
Waitms Temp
End If
'LEFT, если Effect = 2
If Effect = 2 Then
Portb = 16 '00001'
Waitms Temp
Portb = 8 '00010'
Waitms Temp
Portb = 4 '00100'
Waitms Temp
Portb = 2 '01000'
Waitms Temp
Portb = 1 '10000'
Waitms Temp
End If
'EMERGENCY, если Effect = 3
If Effect = 3 Then
Portb = 31 '00000'
Waitms Temp
Portb = 0 '11111'
Waitms Temp
End If
Loop
Stopbutton:
Portb = 31 '11111'
Gifr = 64
Return
End
'конец
'-------------------------------------------------------------------------------Отредактировано ma35tr0 (2011-05-26 13:08:46)
Я на машине, слава Богу, пока ещё сам поварачиваю 