There are two versions of the LOGIC PROBE:

Click for large 12c508A layout
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:
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.
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 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.
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 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.
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.
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.
;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
The program for a PIC16F84 chip is shown below.
;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
Quick Links
Legal Stuff
Social Media