Quote (xxxmonejall)
Есть первые результаты прилагаю фото.
Короче получилось! Отследил я итот импульс и после 30 импульса делаю что хочу.
Все очевидное не так просто.Попробуйте в программе с 9-го сообщения поставить
if czet = 20 then pulsout portb.1,300
или
if czet = 20 then pulsout portb.1,100
Прога явно работает не правильно.
Связано это в первую очередь с тем,что у вас даже короткий период =1 мс.
И tmr0 успевает 3 раза переполнится.Поэтому без предделителя не обойтись.
Немного пепеделанная программа.
Попробуйте разобратся.
Code
@ device pic16F84A, xt_osc, wdt_off, protect_off, pwrt_on
INCLUDE "MODEDEFS.BAS"
DEFINE OSC 4
trisb.0 = 1
time var byte
timp var word 'время вых импульса
pol var byte ' № вх. импульса после
' которого генерится вых. импульс
czet var byte
d var byte 'признак начала отсчета
pol=20
timp=300
time=0
d=0
option_reg=%10000100 'предделитель 1/32
on interrupt goto te
INTCON=%10010000
loop:
if time > 40 then
czet=0
d=1
endif
if (czet =pol and d=1) then
disable
pulsout portb.1,timp
tmr0=0
d=0
enable
endif
goto loop
disable
te:
time=tmr0
czet = czet + 1
tmr0=0
option_reg=%10000100
intcon.1=0
resume
enable
Добавлено (08.09.2009, 00.15.05)
---------------------------------------------
pol=20
timp=300
Эти переменные можно менять.
pol-опережение
timp-длительность впрыска
Осталось "только" рассчитать рабочие карты(трехмерные графики),привязать их
к датчикам и ..........будет вам счастье(впрыск)