'**************************************************************** '* Name : picpend.BAS * '* Author : Bill Sherman * '* Notice : Copyright (c) 2004 Bill Sherman * '* : All Rights Reserved * '* Date : 6/06/04 * '* Version : 1.0 * '* Notes : * '* : * '**************************************************************** 'single coil design 'move pulse to pin 17, change A0 to output 'adjustable pulse time 'mode button to read pulse lenght in millisec 'up down button for millisec on time 1 to 20 msec @ device pic16f628, hs_osc, wdt_off, mclr_on, protect_off ,pwrt_on, bod_on, lvp_off, cpd_off define osc 20 CMCON=%00100101 VRCON=%11110001 sense var CMCON.7 'pin 18 pulse var porta.0 'pin 17 kick var byte n var byte up var porta.3 dn var porta.5 mode var porta.4 output porta.0 input porta.3 input porta.5 input porta.4 setup: pause 1000 read 0,kick if kick > 20 then kick = 20 endif if kick < 1 then kick = 1 endif main: if up = 0 then kickup if dn = 0 then kickdn if mode = 0 then modedetect if sense = 1 then kickcoil goto main kickup: kick = kick + 1 if kick > 20 then kick = 20 endif output porta.4 low porta.4 pause 200 high porta.4 waitup: if up = 0 then waitup input porta.4 goto main kickdn: kick = kick - 1 if kick < 1 then kick = 1 endif output porta.4 low porta.4 pause 200 high porta.4 waitdn: if dn = 0 then waitdn input porta.4 goto main modedetect: gosub countkick pause 1000 write 0,kick output porta.4 low porta.4 pause 1000 high porta.4 input porta.4 goto main kickcoil: low pulse pause kick high pulse pause 100 goto main countkick: pause 1000 for n= 1 to kick output porta.4 low porta.4 pause 100 high porta.4 pause 300 next n input porta.4 return goto main end