Ср июл 12, 2017 19:19:12
Чт июл 13, 2017 03:58:15
Чт июл 13, 2017 07:19:45
Чт июл 13, 2017 07:31:21
Чт июл 13, 2017 08:10:38
Пт июл 14, 2017 09:29:42
Пт июл 14, 2017 10:03:25
Пт июл 14, 2017 10:05:20
Пт июл 14, 2017 10:07:49
vem566 писал(а):Есть хорошие учебники по Bascomу. Там все это описано
Пт июл 14, 2017 10:10:34
Пт июл 14, 2017 10:17:55
Пт июл 14, 2017 10:42:41
Пт июл 14, 2017 10:46:19
Dim U_min as byte
Dim U_min_e as eram byte
U_min = U_min_e 'читаем из Eeprom
U_min_e = U_min 'пишем в Eeprom
Пт июл 14, 2017 10:52:36
Пт июл 14, 2017 11:06:19
Пт июл 14, 2017 12:31:19
Вт июл 18, 2017 20:43:00
Пн июл 24, 2017 18:09:44
Сб авг 19, 2017 14:23:21
Пт окт 13, 2017 19:51:43
$regfile = "m8def.dat"
$crystal = 8000000
Config Lcdpin = Pin , Rs = Portc.0 , E = Portb.5 , Db4 = Portb.4 , Db5 = Portb.3 , Db6 = Portb.2 , Db7 = Portb.0
Config Lcd = 16 * 4
Dim W As Word
Dim P As Word
Config Adc = Single , Prescaler = Auto , Reference = Internal
Config Portd.6 = Input ' кнопка старт
Config Portb.6 = Output ' нож
Config Portb.7 = Output ' двигатель
Config Int0 = Falling
Config Int1 = Falling
On Int0 Encod
On Int1 Encod2
Gifr = 64
Gifr = 128
Enable Interrupts
Enable Int0
Enable Int1
Cls
Cursor Off Noblink
Start Adc
Do
Locate 2 , 1
Lcd "L=" ; Getadc(1) ; "cm" 'длина
If Getadc(1) < 10 Then
Locate 2 , 6
Lcd " "
End If
If Pind.6 = 1 Then
Portb.7 = 1 ' начинаем крутить двигатель
Else
End If
If Pind.6 = 1 Then 'если нажали кнопку старта
If W = Getadc(1) Then
Locate 2 , 8
Lcd "-"
Waitms 200
Portb.7 = 0 ' останавиваем двигатель пока работает нож
Waitms 50
Portb.6 = 1 'отрезаем
Waitms 300
Portb.6 = 0
Waitms 100
W = 0
Locate 2 , 8
Lcd " "
End If
End If
Locate 1 , 1
Lcd W
Locate 1 , 8
Lcd P
Locate 2 , 11
Lcd "pcs:" ; Getadc(2) ' количество
If Getadc(2) < 10 Then
Locate 2 , 16
Lcd " "
End If
Locate 1 , 11
Lcd " "
If P = Getadc(2) Then ' проверяем счетчик
Goto Ready
Else
End If
If P = Getadc(2) Then ' проверяем счетчик
'Locate 1 , 11
'Lcd "READY"
Waitms 500
End If
Loop
End
Return
Encod: ' тут узнаем в каком направлении вращают ручку энкодера
If W >= 100 Then 'добавляем условие сброса переменной
W = 0 'сбрасываем переменную
End If
Waitms 2 ' ждем пока утихнет дребезг контактов
If Pind.5 = 1 Then ' если на ноге единица (импульс не пришел) тогда
Incr W ' инкременируем переменную (увеличиваем на 1)
Else ' в обратном случае
Decr W ' декрементируем переменную (уменьшаем на 1)
End If
Gifr = 64 ' сбрасываем регистр хранения прерывания INT0
Return
Encod2: ' тут узнаем в каком направлении вращают ручку энкодера
If P >= 100 Then 'добавляем условие сброса переменной
P = 0 'сбрасываем переменную
End If
Waitms 2 ' ждем пока утихнет дребезг контактов
If Pind.5 = 1 Then ' если на ноге единица (импульс не пришел) тогда
Incr P ' инкременируем переменную (увеличиваем на 1)
Else ' в обратном случае
Decr P ' декрементируем переменную (уменьшаем на 1)
End If
Gifr = 128 ' сбрасываем регистр хранения прерывания INT0
Return
Ready:
Locate 1 , 11
Lcd "READY"
Waitms 500
Portb.7 = 0 ' останавливаем двигатель
End