}.
'                                            }.                          |
'                                             |                          ^
'                                             /\                        /  \
'             \\\\\\                         /  \                      / .[ \
'             (-O-O-)                       / -  \                    / .;   \
'              \(-)/                       /      \                  /=----- "\
'*---------00o0--W----0o00-------*        /    ]   \       ^         |   / \  |
'@ project name: counter-propic  @       / .  |__   \     / \        |   | |  |
'@ programmed by : HATEM         @      /   __   '   \   /   \      _|   | |  |_
'@ DATE         :                @     /J^..| | 4_|_||\  |=  |    <<==-=-=-=-===>> 
'@ COUNTRY LEBANON               @    /   .     [  ,.  \ |[ ]|      \___ ___  _/       help??
'@ language name: propic         @   /::::::::::::::::: \_;__|__     |        |      p
'@ EMAIL: STAMPIC@YAHOO.COM      @  ({{{{{{{{{{ }}}}}}}}})=-=-=->    |  #  [] |     /|\
'@ VOLTS = 5 DC                  @   |     ]   ^    [    |  .|/      |        |      /\
'@ you may use this pro only for @   |        / \   l    |   |       |[*] |   |
'@study purpose and hobby you may@   |   '   /   \     _ | ; |       |   ;    |
'@copy it but as it with no      @   |  ,   /     \  _   |.  |       | __     |
'@change to its contents         @   |  __ /       \    _| []|       |    -   |
'@copy right                     @   |   ;(         )    |   |       |     |- |
'@                               @   |00000|~~~~~~~|00000| - |       |     _  |
'@                               @   |  -- |   |   |     |---|;\     |   __   |   
'@                               @   |     |  {|}  |.    | -__   \   |   '    |                        
'@                               @   | .   |   |   |.    | _-_ -- -\ |  __    |                            
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@---|_____|___|___|_____|____--- ___/ ....    \____                             
'------------------------------------------------------------------------------------------------

 

'this is a pro pic compiler pro 

'the function of this counter is to get a pulse from a proximity sensor the pulse is sended to 

'opto isolator the opto send the pulse to the counter pin.1 if power is failed the counter will 

'use the stored charge in the capacitor to save the word number in two consecutive memory cells

'using alises variabel counter(counter   var word)(cat         VAR COUNTER.BYTE0 )+(tiger        'VAR COUNTER.BYTE)

' and the the pic will sense the power frailer by sensing the power line by looping to a comand

'line (if memory   = 0 then save  ) don't be mislead .memory = pin5 (memory    var portb.5)

'the capacitor charge will be holded thank to the  diode acting as one way valve so no current will

'came back from the capacitor to the supply line 

'when re powered it will regain the last number from the eeprom and display it on lcd and will be in 'stand by mode for counting from the last number unless you want to reset the counter pressing pin 'porb,2  

' if you count more then 50hz the lcd will blear       
'2000-7-17     11 at night 
' my next plan is to use at the binging the comand 
'count for one second to determine the speed of the counter so i can 
'determine the speed of display so the lcd will be
'up dated only once a second that is by placing a 
'counter so that the display will be updated according 
'to the counted number for one  second 
'this counter is perfect it has been working on a tap edge
' machine for about 4manth with no frailer 
'2000-8-17    
        memory    var portb.5    
        tango     var word
        counter   var word
        cat         VAR COUNTER.BYTE0 'to save a word number in eeprom as two byts
        tiger       VAR COUNTER.BYTE1 'to save a word number in eeprom as two byts
        setpoint VAR WORD
        input     portb.1    ' counting pin"proximty"
        input     memory     ' saving pin  portb.5
        input     portb.2    ' reset pin 
        OUTPUT    PORTB.4    ' RELAY_STOP
        OUTPUT    portb.6    ' HART BEATING   a led conected to pin6+7 
        OUTPUT    portb.7    ' HART BEATING
        PORTB.4   = 0    ' TO MAKE SURE THAT PIN 4 = 0 AT START
        portb.6   = 0
        portb.7   = 0
        clear 
HART_BEATING:     'this sub is to verify that the proseser is functioning ok 
              'it is a must tactic with lcd's in case a problem with lcd
        portb.7 = 0
        portb.6 = 1
        pause 70
        portb.7 = 1
        portb.6 = 0
        pause 50
        tango = tango + 1
        if tango = 20 then   loop
        goto   HART_BEATING    
loop:   Lcdout $fe, 1    'well com message  
        Lcdout "hi hello"  
        Pause  1500       
        Lcdout $fe, 1   
        Lcdout "TAPE EDG COUNTER"
        PAUSE   1500
        Lcdout  $fe, 1   
        Lcdout  "COUNTER READY"
        PAUSE   1500
RECOLL: read  10,cat   'remember the last saved number 
        read  11,tiger    
        write 10,0     ' and reset the memory to zero 
        write 11,0
START_AGAIN:
        setpoint = counter / 125     'operating alarm or stoping the machine( using  relay)
        lcdout $fe, 1 ,#counter,"  meter=",#setpoint
go_on:  if portb.2  = 1 then zeero   'to zero the counter
        if memory   = 0 then save    'if the supling power is of the remained  
        if portb.1  = 1 then go_on   'charged  in the capacitor will save the counted nuber
        counter = counter + 1 
         setpoint = counter / 125
        lcdout $fe, 1 ,#counter,"  meter=",#setpoint'    dec (counter/125)
hold:   if portb.2  = 1 then zeero
        if memory   = 0 then save
        if portb.1  = 0 then hold 
        IF COUNTER >12500 THEN ALARM   ' set point in the counter as alarm 
        goto go_on 
save:   write 10,cat    'saving sub is to save the counter (word) as two byte's  
        write 11,tiger  'in two consecutive locations
        end             'don't let the counter go to wonder lands stop her!!!!!  
zeero:  write 10,0   'the title say it all
        write 11,0
        counter = 0
        Lcdout $fe, 1 
        lcdout #counter 
        goto go_on
ALARM:                 'the title say it all
          COUNTER = 0
          Lcdout $fe, 1 
          lcdout #counter 
          PORTB.4 = 1
          PAUSE 2000
          PORTB.4 = 0
          GOTO START_AGAIN
          
          'this is the circuit connections diagram

http://www.oocities.org/stampic/