Bulova Precisionist Champlain 96B132 Watch Review (new)
150v to 300v voltage indicator

Designed and built during October 2000, this was my first ever microcontroller based project. This one was inspired by an Edmund Scientific instruments catalog. I didn't see anything like this in that catalog but there were a lot of nice, year 2000 modern multipole cable testers, that made me think and imagine what would be the simplest possible network cable tester that I could quickly build.
I've posted its schematic and firmware source code.
Originally I planned to build a second remote unit, to test installed cables, but never did it, and as super cheap and reasonably good cable testers inundated the market the idea was totally abandoned. Some friends who performed computer maintenance borrowed this thing to test some cables a few times. They always liked to use it.
It works for network, telephone an other cables that use RJ11 and RJ45 ”Registered Jack” plugs instantly indicating if a network cable is crossover or straight, blinking a yellow or green LED. If something is broken or if you push the button, the tester enters into wire by wire test.
How it works
The top RJ45 jack sends signals by each of its 8 pins. The bottom RJ45 jack receives the signals sent from the top RJ45 jack as conducted by the attached wire. When the top red LED is lit the orange LED bar shows which pin of the top RJ45 jack is sending a test signal and when the bottom red LED is lit, the orange LED bar shows which of the 8 pins of the bottom RJ45 jack is receiving a signal, in this state if the corresponding wire is broken or not connected, none of the LEDs of the the orange LED bar will lit. If there is a short circuit between two or more wires, more than one orange LED will be lit when the bottom red LED is on. Each press of the button cycles the active output pin.
The following video illustrates the operation explanation:
The locking tab of the bottom RJ45 plug is broken, that's why I have to hold it with my finger.
Casing
The front is a wall plate with two RJ45 jacks, it has no category markings anywhere. The back is an standard wall box for electrical plates. I was lucky to get a good quality one.

Firmware
The MCS51 assembly firmware code is shown below and as other of my old projects it has no comments. A bit bothersome to get to understand it but is simple enough to get the basic idea of it by making it work in your imagination.
The following loop loads the resulting bytes from the pin by pin port scanning to the buffer area pointed by R0. The line "PROP: DJNZ R1,PROP" waits for the propagation delay before reading the input.
BUCLE:
MOV P0,A
MOV R1,#0FFH
PROP: DJNZ R1,PROP
MOV @R0,P1
RL A
INC R0
CJNE R0,#0BH,BUCLE
If the receiving port (P1) is read too soon, the signals will not be there on time and the tester will simply not detect anything. The longest cable that was tested with this tester was 30m long. Once the scanning is completed, the data in the buffer is compared to the patterns that correspond to the different types of cables and the corresponding led is lit or the device enters to the manual pole by pole scanning.
$MOD51
$TITLE(DISPOSITIVO PARA PROBAR CABLES DE RED)
;RCZ 2/10/2000
;Copyright Rolando Calla Zalles
ORG 0
MOV P3,#0FFH
CLR P2.0 ;straight
CLR P2.1 ;xover
CLR P2.3 ;urj
CLR P2.4 ;drj
MOV R0,#7FH
MOV A,#7FH
INICIO1:
ACALL IDELAY
ANL A,P3
MOV P3,A
MOV A,R0
RR A
MOV R0,A
CJNE A,#07FH,INICIO1
MOV R0,#80H
MOV A,#80H
INICIO2:
ACALL IDELAY
ORL A,P3
MOV P3,A
MOV A,R0
RR A
MOV R0,A
CJNE A,#80H,INICIO2
ACALL IDELAY
SETB P2.0
SETB P2.1
SETB P2.3
SETB P2.4
MOV P1,#0FFH
MOV A,#0
MOV SP,#06FH
ESPERA:
MOV R0,#0FFH
MOV P0,A
ACALL SDELAY
MOV R0,P1
SETB C
ANL C,P2.2
JNC GOOTRO
CJNE R0,#0FFH,GOANA
CLR P2.3
ACALL SDELAY
SETB P2.3
ACALL DELAY
AJMP ESPERA
GOANA:
ACALL LDELAY
ACALL ANA
MOV P1,#0FFH
MOV A,#0
AJMP ESPERA
GOOTRO:
ACALL OTRO
MOV P1,#0FFH
MOV A,#0
AJMP ESPERA
ANA:
;OBTENER DATOS
MOV P1,#0FFH
MOV P2,#0FFH
MOV R0,#3
MOV A,#1
BUCLE:
MOV P0,A
MOV R1,#0FFH
PROP: DJNZ R1,PROP
MOV @R0,P1
RL A
INC R0
CJNE R0,#0BH,BUCLE
;ANALIZAR
MOV R0,#3
MOV A,#1
STRAIGHT:
MOV 1,@R0
CJNE A,1,XOVERI
INC R0
RL A
CJNE R0,#0BH,STRAIGHT
CLR P2.0
ACALL LDELAY
SETB P2.0
RET
XOVERI:
MOV DPTR,#XOVERDATA2
MOV R0,#3
MOV R2,#0
XOVER:
MOV 1,@R0
MOV A,R2
MOVC A,@A+DPTR
CJNE A,1,OTRO
INC R2
INC R0
CJNE R0,#0BH,XOVER
MOV R1,#0FFH
CLR P2.1
ACALL LDELAY
SETB P2.1
RET
XOVERI2:
MOV DPTR,#XOVERDATA
MOV R0,#3
MOV R2,#0
XOVER2:
MOV 1,@R0
MOV A,R2
MOVC A,@A+DPTR
MOV P3,1 ;CJNE A,1,OTRO
ACALL LDELAY
ACALL LDELAY
INC R2
INC R0
CJNE R0,#0AH,XOVER2
MOV R1,#0FFH
CLR P2.1
ACALL LDELAY
SETB P2.1
RET
OTRO:
MOV R0,#0FEH
SHOWDATA:
MOV A,R0
MOV P0,A
MOV P3,A
CLR P2.3
ACALL LDELAY
SETB P2.3
SETB C
ANL C,P2.2
JNC ROTAR
MOV A,P1
MOV P3,A
CLR P2.4
ACALL LDELAY
SETB P2.4
SETB C
ANL C,P2.2
JNC ROTAR
MOV P0,#0
PUSH 0E0H
MOV A,P1
CJNE A,#0FFH,CONT
POP 0E0H
MOV P3,#0FFH
RET
CONT:
POP 0E0H
AJMP SHOWDATA
ROTAR:
MOV A,R0
RL A
MOV R0,A
AJMP SHOWDATA
DELAY:
MOV 60H,#0FFH
MOV 61H,#0FFH
WAITD:
DJNZ 60H,WAITD
DJNZ 61H,WAITD
RET
LDELAY:
MOV 60H,#0FFH
MOV 61H,#0FFH
MOV 62H,#4
WAITL:
DJNZ 60H,WAITL
DJNZ 61H,WAITL
DJNZ 62H,WAITL
RET
SDELAY:
MOV 60H,#0FFH
MOV 61H,#066H
WAITS:
DJNZ 60H,WAITS
DJNZ 61H,WAITS
RET
IDELAY:
MOV 60H,#0FFH
MOV 61H,#033H
WAITI:
DJNZ 60H,WAITI
DJNZ 61H,WAITI
RET
XOVERDATA:
DB 00000100B
DB 00100000B
DB 00000001B
DB 00001000B
DB 00010000B
DB 00000010B
DB 01000000B
DB 10000000B
XOVERDATA2:
DB 00000001B
DB 00000010B
DB 01000000B
DB 00001000B
DB 00010000B
DB 10000000B
DB 00000100B
DB 00100000B
END
Schematic
This circuit was directly built on a perforated board by simply following the datasheet of the microcontroller and an schematic was never drawn, so I used KiCAD's EESCHEMA to draw it for the first time.
Clic the image for a larger version:
Based on Atmel's now obsolete AT89C52, using a 7805 voltage regulator and 12 LEDs it's a bit heavy on the 9V battery but as it's used only for a few seconds each time it isn't necessary to replace it often.

This circuit is real simple, but building it without a PCB makes things a real mess as I experienced before with my serial port controlled AC power strip.

All the parts fit well and the battery does not move inside, (possibly) supported by the mess of wires.

Conclusion
This is a visually attractive and fun to use project and can still be useful today to quickly tell if a network or telephone cable is probably all right (this tester only test for continuity and short circuits) and its configuration.
