CONSTRUCTING

THE

LoPIC
LOGIC PROBE 
with  PULSER
and Burning the Chip

CONSTRUCTING THE LOGIC PROBE
There are two versions of the LOGIC PROBE:
1. The PIC16F84 version - cost: $25.60 (plus post) and the 'F84 chip can be re-programmed if you want to experiment and improve the program.
2. The PIC12c508A version - cost: $22.60 (plus post). The chip is one-time programmable. 
The previous page discusses the advantages of each type and here is the PC board layout for each type:

Click for large 16F84 layout

Click picture to enlarge 

Click for large 12c508A layout 

Click picture to enlarge 

All the components fit on the single-sided PC board with the overlay showing exactly where each component is placed. That's how we design all Talking Electronics projects. The parts can be fitted without any additional diagrams or information however with this project the chip may need to be  programmed, (depending on the version you select).
We will not be going into the fine detail of construction as it is expected you will have built a number of projects and know how to solder components without the fear of damaging them by overheating. However here are a few notes that specifically apply to this project:

SOLDERING  
The fine solder provided in the kit will improve the quality of your soldering by at least 100%. It tends to make a much smaller connection and if you add the solder to the joint, rather than carry it to the joint, the resin (rosin) in the centre of the solder will flow over the bare metal and clean it so that the solder sticks much easier. This means the connection will be made very quickly and the component will not have time to get too hot. The LEDs are the most vulnerable. They can lose their brightness if they are heated up too much.

THE IC SOCKET
Don't forget the put the notch in the IC socket on the board so that it indicates pin 1. This is most important because you may be removing the IC at a later date and the notch is the easiest way to see  how to replace the chip. The PIC16F84 chip is actually up-side-down compared to the rest of the writing on the board and that's why you have to be careful. The 508A chip is fitted with the writing around the same way as the text on the board.

THE BUTTON CELLS
The biggest problem with a "skeleton" project like this one, is fitting the battery. Since no holders are available for button cells, we have had to devise a way to fit them to the board. The only solution is to fit each cell individually under a strap (or two straps) of fine tinned copper wire. The "bottom terminal" is made by soldering two "saddles" of tinned copper wire to the board. These will provide the negative connection to the battery. 
The positive connection is provided by two straps placed over the cell and soldered in position. The fine tinned copper wire is looped through the board to make the two straps and one end is soldered. The battery is fitted under them and the wire is pulled tightly over the cell. The wire is then soldered. Make sure the cell is facing DOWN, otherwise the wire holding it will create a short circuit. The four cells are fitted in position and the project is complete. It is important to note that the wire is not soldered to the batteries as this will cause overheating and damage the seal between the positive and negative terminals and allow the cell to leak. The wiring across each cell is "tightened" by twisting it slightly with a pair of pliers. The project takes about 1.5mA when in the "rest mode" and about 20mA when indicating a signal. It produces a beep after about 2 minutes to remind you to turn it off and if it is used for short periods of time, the 4 cells will last many months or even a year or more. The cells can be replaced by slipping each one out from under the wire strap. They can be obtained from a 12v lighter battery. These 12v batteries contain 8 cells and this will give 2 sets of replacements - enough for many hours of operation. 

THE PROBES
Each end of the PC board has a probe soldered to it. These probes should be as sharp as possible. This gives them a spike so they can touch a component or test-point on a PC board without slipping off. Long pins are ideal for this and you have to cut the end off by filing the shaft with a file and breaking with pliers. Do not cut the pin with side-cutters as the hard steel shaft will damage the cutters. The pins can be easily soldered to the PC board and for added strength, the board allows fine wire to be wrapped around the probe. 

THE EARTH LEAD
The earth clip is connected to the Logic Probe / Pulser via a 30cm lead. This clip must be connected to the project-under-test so that the Logic Probe will detect a signal. Without it, the probe will not detect a HIGH.  When using the Logic Pulser, the earth clip completes the circuit so that a HIGH can be injected into the project or component under test. 

 BURNING THE CHIP 
This is the most complex section of the project and requires construction of our Multi Chip Programmer and putting the IC-Prog.exe software on your computer to perform the burning operation. We call it "burning" rather than "programming" to separate it from our programming section. Firstly you will need to construct our Multi Chip programmer. This is a very simple project containing a programming socket, a few components and a lead to the serial port of a computer. The Multi Chip Programmer will burn '508A chips as well as F84 (and many others) but before you use it to program a '508A, it should be tested for performance. The best way is to burn an F84 and put it in our 5x7 Display Project. As you can see, all our projects are interlinked and you really need the three of them (with more to follow) to get the full benefit of the course.

BURNING A PIC12C508A chip
The program for a PIC12C508A chip is shown below. Don't forget, this is a one-time programmable chip, so you don't get a second go at burning the program. This version of the Logic Probe is for those who want to produce the most compact probe and want to finalise the program in an 8-pin, one-time programmable chip. 

               Logic Probe with Pulser '508A Program
                                      ;PIC12c508A chip 
                                      
 Start       ORG 0x00 
                MOVLW 08         ;Put 08 into W      (GP3 can only be input anyway!)
                TRIS 06               ;to make GP3 input, others output 
                CLRF 06              ;Clear port 6
                CLRF 11h            ;Clear 1 minute alarm file
                GOTO Main

 Alarm     MOVLW 20h          ;Length of the alarm
               MOVWF 12h  
Alarm1    MOVLW 40h          ;The HIGH/LOW time
                MOVWF 13h
Alarm2    DECFSZ 13h,1       ;Time for ON and OFF periods
               GOTO Alarm2 
               MOVLW 20h           ;Toggle the Piezo line
               XORWF 06,1
               DECFSZ 14,1          ;256 loops of ON/OFF
               GOTO Alarm1
               DECFSZ 12h,1
               GOTO Alarm1
               CLRF 11h                 ;Clear the alarm 1-minute timer file
               BCF 06,5                   ;Turn off piezo bit
               RETLW 00

 Delay    MOVLW 05         ;5 loops of routine below
              MOVWF 0E 
 Delay1  MOVLW 0B0h     ;Create the 1/4sec ON period
              MOVWF 0Dh
 Delay2  CALL Input
              CALL TstA
              DECFSZ 0Dh,1    ;Loop for 0B loops to create 1/4 sec
              GOTO Delay2
              DECFSZ 0Eh,1     ;Loop 5 lots of 0B loops
              GOTO Delay1
              RETLW 00


                   ;The "Input" sub-routine will put a 
                   ;value in files 1E and 1F

 Input     CLRF 1E               ;Clear the HIGH count file
              CLRF 1F               ;Clear the LOW count file
              MOVLW 08h        ;8 loops
              MOVWF 0Ch        ;0C is 8 for 8 loops
 Input1   BSF 06,4               ;Make probe Tip HIGH
              NOP
              NOP
              NOP                       ;Allow time for 47p to charge
              NOP
              BTFSS 06,3           ;Test the input line GP3
              GOTO Input2         ;Input is LOW
              INCF 1E,1               ;Increment the HIGH file
              GOTO Input3
 Input2   INCF 1F,1                ;Increment the LOW file
 Input3   BCF 06,4                 ;Make probe tip LOW
              NOP
              NOP
              NOP
              NOP
              NOP                         ;Allow time for 47p to discharge
              NOP
              MOVLW 05
              MOVWF 13h
 Input4   BTFSC 06,3              ;Test the input line GP3
              GOTO Input5
              DECFSZ 13h,1
              GOTO Input4
              INCF 1F,1                  ;Increment the LOW file
              GOTO Input6
 Input5   INCF 1E,1                   ;Increment the HIGH file 
 Input6   DECFSZ 0Ch,1
              GOTO Input1
              BCF 06,0                   ;Turn off LOW LED
              BCF 06,1                   ;Turn off HIGH LED
              RETLW 00

               ;This routine checks to see if file1E is zero 
               ; if not, it does a subtraction with W to 
               ; see if it is 1, 2 or 3. This indicates a pulse!
               ;The routine then checks for a constant HIGH or LOW

 TstA     MOVLW 00h       ;Eliminate file 1E if it is zero,
              XORWF 1E,0       ;XOR file 1E with W
              BTFSC 03,2        ;Test the zero flag to see if file 1E is zero
              GOTO TstA1       ;File 1E is zero
              MOVLW 04         ;Put 04 into W for subtract operation
              SUBWF 1E,0        ;Carry will be set if 1E is = or more than 4
              BTFSS 03,0         ;Test the carry flag 
              GOTO Hi              ;Will go to Hi if 1E is 1, 2, or 3

 TstA1   MOVLW 00h         ;This tests if the waveform is never LOW
              XORWF 1F,0        ; - it must be HIGH
              BTFSC 03,2          ;Test zero bit in Option file
              GOTO Hi
              MOVLW 00h         ;This tests if the waveform is never LOW
              XORWF 1E,0
              BTFSC 03,2           ;Zero flag in Option file will be set
              GOTO Lo               ; if 1E is equal to zero
              RETLW 00 

 Hi          MOVLW 40h       ;Length of Hi tone
              MOVWF 1A
              BSF 06,1              ;Turn on HIGH LED
              GOTO Tone

 Lo         BSF 06,0              ;Turn on LOW LED
              GOTO Tone

 Tone     DECFSZ 1A,1
              GOTO Tone 
              MOVLW 20h 
              XORWF 06,1             ;Toggle the piezo bit 
              CLRF 11h                  ;Clear the 1 minute alarm file
              RETLW 00


 Main      BSF 06,2               ;Set the Pulser output HIGH
              CALL Delay
              BCF 06,2                ;Set the pulser output LOW
              CALL Delay
              MOVLW 05            ;5 loops for file 0E
              MOVWF 0E
 Main1    MOVLW 0B0h        ;B0 loops for file 0D
              MOVWF 0D
 Main2    MOVLW 04h          ;toggle the Logic Pulser output GP2
              XORWF 06,1
              CALL Input
              CALL TstA
              DECFSZ 0Dh,1       ;B0 loops
              GOTO Main2
              DECFSZ 0Eh,1       ;5 lots of B0 loops
              GOTO Main1
              BCF 06,2                ;Set the Pulser output LOW
              CALL Delay
              INCF 11h,1              ;increment the 1 minute alarm file
              MOVLW 40h           ;40h = 64 loops of 1 second = 1 minute
              XORWF 11h,0         ;Is alarm file =zero
              BTFSC 03,2             ;Test the zero flag
              CALL Alarm             ;"turn off Logic Probe" beep
              BSF 03,5                  ;Go to page1 for setting-up the ports 
              BCF 06,5                 ;Set RB5 to output
              BCF 03,5                 ;Go to page0 for programming
              BCF 06,5                 ;Turn off piezo bit
              GOTO Main
            

              END
              


 
The block of numbers below is the HEX file for Logic Probe with Pulser for 12C508A. Copy and paste it into a text program such as TEXTPAD or NOTEPAD and call it: LoPIC08.hex   
:10000000080C0600660071005F0A200C3200400CEC
:100010003300F302090A200CA601F402070AF202D7
:10002000070A7100A6040008050C2E00B00C2D0074
:100030001F094209ED02180AEE02160A00087E00A6
:100040007F00080C2C008605000000000000000066
:1000500066072C0ABE022D0ABF02860400000000BB
:100060000000000000000000050C330066063C0A9A
:10007000F302360ABF023D0ABE02EC02230A06045E
:1000800026040008000C9E0143064A0A040C9E0048
:100090000307530A000C9F014306530A000C9E01FC
:1000A0004306570A0008400C3A002605590A06057F
:1000B000590AFA02590A200CA601710000084605E7
:1000C000140946041409050C2E00B00C2D00040C74
:1000D000A6011F094209ED02670AEE02650A4604FD
:1000E0001409B102400C910143060509A305A604B9
:0600F000A304A6045F0A50
:00000001FF


BURNING A PIC16F84 chip

The program for a PIC16F84 chip is shown below.

               Logic Probe with Pulser F84 Program 
                                      ;PIC16F84 chip 

 Start     ORG 0x00
              BSF 03,5          ;Go to page1 for setting-up the ports 
              MOVLW 08h    ;Put 08 into W 
              MOVWF 06h    ;to make RB3 input, others output
              BCF 03,5          ;Go to page0 for programming
              CLRF 06           ;Clear port 6
              CLRF 11h         ;Clear 1 minute alarm file
              GOTO Main

Alarm      MOVLW 20h          ;Length of the alarm
                MOVWF 12h  
Alarm1    MOVLW 40h          ;The HIGH/LOW time
                MOVWF 13h
Alarm2    DECFSZ 13h,1       ;Time for ON and OFF periods
               GOTO Alarm2 
               MOVLW 20h           ;Toggle the Piezo line
               XORWF 06,1
               DECFSZ 14,1          ;256 loops of ON/OFF
               GOTO Alarm1
               DECFSZ 12h,1
               GOTO Alarm1
               CLRF 11h                 ;Clear the alarm 1-minute timer file
               BCF 06,5                   ;Turn off piezo bit
               RETURN


    
 Delay    MOVLW 05         ;5 loops of routine below
              MOVWF 0E 
 Delay1  MOVLW 0B0h     ;Create the 1/4sec ON period
              MOVWF 0Dh
 Delay2  CALL Input
              CALL TstA
              DECFSZ 0Dh,1    ;Loop for 0B loops to create 1/4 sec
              GOTO Delay2
              DECFSZ 0Eh,1     ;Loop 5 lots of 0B loops
              GOTO Delay1
              RETURN

                   ;The "Input" sub-routine will put a 
                   ;value in files 1E and 1F

 Input     CLRF 1E               ;Clear the HIGH count file
              CLRF 1F               ;Clear the LOW count file
              MOVLW 08h        ;8 loops
              MOVWF 0Ch        ;0C is 8 for 8 loops
 Input1   BSF 06,4               ;Make probe Tip HIGH
              NOP
              NOP
              NOP                       ;Allow time for 47p to charge
              NOP
              BTFSS 06,3           ;Test the input line RB3
              GOTO Input2         ;Input is LOW
              INCF 1E,1               ;Increment the HIGH file
              GOTO Input3
 Input2   INCF 1F,1                ;Increment the LOW file
 Input3   BCF 06,4                 ;Make probe tip LOW
              NOP
              NOP
              NOP
              NOP
              NOP                         ;Allow time for 47p to discharge
              NOP
              MOVLW 05
              MOVWF 13h
 Input4   BTFSC 06,3              ;Test the input line RB3
              GOTO Input5
              DECFSZ 13h
,1
              GOTO Input4
              INCF 1F,1                  ;Increment the LOW file
              GOTO Input6
 Input5   INCF 1E,1                   ;Increment the HIGH file 
 Input6   DECFSZ 0Ch,1
              GOTO Input1
              BCF 06,0                   ;Turn off LOW LED
              BCF 06,1                   ;Turn off HIGH LED
              RETURN

               ;This routine checks to see if file1E is zero 
               ; if not, it does a subtraction with W to 
               ; see if it is 1, 2 or 3. This indicates a pulse!
               ;The routine then checks for a constant HIGH or LOW

 TstA     MOVLW 00h       ;Eliminate file 1E if it is zero,
              XORWF 1E,0       ;XOR file 1E with W
              BTFSC 03,2        ;Test the zero flag to see if file 1E is zero
              GOTO TstA1     ;File 1E is zero
              MOVLW 04         ;Put 04 into W for subtract operation
              SUBWF 1E,0        ;Carry will be set if 1E is = or more than 4
              BTFSS 03,0         ;Test the carry flag 
              GOTO Hi              ;Will go to Hi if 1E is 1, 2, or 3

 TstA1   MOVLW 00h        ;This tests if the waveform is never LOW
              XORWF 1F,0        ; - it must be HIGH
              BTFSC 03,2          ;Test zero bit in Option file
              GOTO Hi
              MOVLW 00h         ;This tests if the waveform is never LOW
              XORWF 1E,0
              BTFSC 03,2           ;Zero flag in Option file will be set
              GOTO Lo               ; if 1E is equal to zero
              RETURN 

 Hi          MOVLW 40h       ;Length of Hi tone
              MOVWF 1A
              BSF 06,1              ;Turn on HIGH LED
              GOTO Tone

 Lo         BSF 06,0              ;Turn on LOW LED
              GOTO Tone

 Tone     DECFSZ 1A,1
              GOTO Tone 
              MOVLW 20h 
              XORWF 06,1             ;Toggle the piezo bit 
              CLRF 11h                  ;Clear the 1 minute alarm file
              RETURN

 Main      BSF 06,2               ;Set the Pulser output HIGH
              CALL Delay
              BCF 06,2                ;Set the pulser output LOW
              CALL Delay
              MOVLW 05            ;5 loops for file 0E
              MOVWF 0E
 Main1    MOVLW 0B0h        ;B0 loops for file 0D
              MOVWF 0D
 Main2    MOVLW 04h          ;toggle the Logic Pulser output RB2
              XORWF 06,1
              CALL Input
              CALL TstA
              DECFSZ 0Dh,1       ;B0 loops
              GOTO Main2
              DECFSZ 0Eh,1       ;5 lots of B0 loops
              GOTO Main1
              BCF 06,2                ;Set the Pulser output LOW
              CALL Delay
              INCF 11h,1              ;increment the 1 minute alarm file
              MOVLW 40h           ;40h = 64 loops of 1 second = 1 minute
              XORWF 11h,0         ;Is alarm file =zero
              BTFSC 03,2             ;Test the zero flag
              CALL Alarm             ;"turn off Logic Probe" beep
              BSF 03,5                 ;Go to Page 1 for setting up the ports
              BCF 06,5                 ;Set RB5 to output
              BCF 03,5                 ;Go to Page0 for programming
              BCF 06,5                 ;Turn off piezo bit            
              GOTO Main

              END
              


 
The block of numbers below is the HEX file for Logic Probe with Pulser for 16F84. Copy and paste it into a text program such as TEXTPAD or NOTEPAD and call it: LoPIC84.hex   
:100000008316083086008312860191016128203012
:10001000920040309300930B0B2820308606940BFF
:100020000928920B092891018612080005308E00DC
:10003000B0308D00212044208D0B1A288E0B1828FB
:1000400008009E019F0108308C0006160000000089
:1000500000000000861D2E289E0A2F289F0A0612E7
:1000600000000000000000000000000005309300C8
:1000700086193E28930B38289F0A3F289E0A8C0B2E
:10008000252806108610080000301E0603194C288B
:1000900004301E02031C552800301F060319552882
:1000A00000301E0603195928080040309A008614B3
:1000B0005B2806145B289A0B5B282030860691018A
:1000C0000800061516200611162005308E00B030E7
:1000D0008D0004308606212044208D0B69288E0B6C
:1000E000672806111620910A4030110603190720CF
:0A00F000831686128312861261281F
:00000001FF

     Go to: Introduction to the Logic Probe with Pulser - discusses how the project works etc
               Construction - Copy and Paste the program (Hex files) for the Probe/Pulser - this page!
     Go to: Using the Logic Probe - Testing circuits with the Logic Probe
     Go to: Using the Logic Pulser - Testing circuits with the Logic Pulser
     Go to: Going Further  - Adding more features to the program such as Sounds and Tones
                                         - downloading the full program for "Probe/Pulser and Sounds/Tones"
     Go to: Multi Chip Programmer - for burning  '508 and F84 chips
     Go to: 5x7 Display - for burning F84 chips ONLY