• Welcome to our site! Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

JDM Programmer not detecting after Nigel Tutorial 1.2??

Not open for further replies.


New Member
Well, after 5 months of telling myself I would get started, I finally did. I build the "MAIN" board from Nigels tutorial, installed MPLAB 8 (again), and went through the MPLAB tutorial to understand how the HEX file is created using the ASM file.

Finally got 1.1 done...the LED lit up (after I remembered to cut the tracks between the pins on the PIC socket....). I was elated, feeling like I was getting somewhere. I then modified the code and wrote in the Delays so I could actually SEE the LED blinking. I put my chip back in my JDM programmer (cheap one, but that is what I need at this point until I know I like this and won't get burned out trying to learn).

The programmer found the chip just fine, and I was able to erase the chip and program it with the new HEX file for 1.2. I transferred the chip to the MAIN board, but the LED still just shined....very strange. I then transferred it back to the JDM and the blasted thing couldn't be found.

I picked up a second chip, programmer finds it, I burn 1.2 on the chip, and I get the same results. Now the really odd thing is sometimes the programmer PWR led blinks at about the rate I expected the MAIN board to blink...but I can never detect the chip.

Here is the code for 1.2:
;Tutorial 1.1 - Nigel Goodwin 2002
	LIST	p=16F648A		;tell assembler what chip we are using
	include "P16F648A.inc"		;include the defaults for the chip
	__config 0x3D18			;sets the configuration settings (oscillator type etc.)

	cblock	0x20		;start of general purpose registers
			count1		;used in delay
			counta		;used in delay
			countb		;used in delay

	org	0x0000			;org sets the origin, 0x0000 for the 16F628,
					;this is where the program starts running	
	movlw	0x07
	movwf	CMCON			;turn comparators off (make it like a 16F84)

   	bsf 	STATUS,		RP0	;select bank 1
   	movlw 	b'00000000'		;set PortB all outputs
   	movwf 	TRISB
	movwf	TRISA			;set PortA all outputs
	bcf	STATUS,		RP0	;select bank 0

	movlw	0xff
	movwf	PORTA			;set all bits on
	movwf	PORTB
	nop				;the nop's make up the time taken by the goto
	nop				;giving a square wave output
	call	Delay		; this starts the wait
	movlw	0x00
	movwf	PORTA
	movwf	PORTB			;set all bits off
	call	Delay		; again with the waiting
	goto	Loop			;go back and do it again

Delay	movlw	d'250'		;delay 250 ms (4mhz clock0
		movwf	count1
d1		movlw	0xC7
		movwf	counta
		movlw	0x01
		movwf	countb
		decfsz	counta, f
		goto	$+2
		decfsz	countb, f
		goto Delay_0

		decfsz	count1, f
		goto	d1
		retlw	0x00


Any ideas what I am doing wrong? Anyone giving away another Junebug?

On a side note I quickly realized transferring the chip back and forth would be a pain, so I assembled a piggy-back module to utilize a ZIF 40 pin socket. Too bad I didn't realize my ZIF sockets were for a wide chip until I was finished.


New Member
Where do I measure that voltage? If I can get the chip to blink the PWR button, I get a fluctuating voltage of 1.5-4.5 on pin 1. Otherwise the PWR button is either off, or on steady.

I read on the winpic800 FAQ that the JDM programmer can get into trouble because "Vpp (the programming voltage) is not raised to say 12 Volts fast enough"

Is this my problem maybe? Is there a way to get around it?


New Member

I had my jumper settings on the main board wrong...the Chip was programmed correctly. I still can't change it now, which is unfortunate.


New Member
PICPgm doesn't detect the chip at all. I haven't learned how to use any other programmer software, I tried WinPic800, and it claims it erases the chip, but then it also says it needs more information for some file....I am not sure what exactly it needs.

This is the error I get:

"Couldn't find "devices\PIC16F648A.dev", please borrow/copy from MPLAB !"

*Edit* I read more on the WInPIc800 and learned where to direct the path to the dev files. I still can't get it to erase the chip such that PICPgm will see it, but WINPIC800 seems to...not sure how to verify.
Last edited:


Coop Build Coordinator
Forum Supporter
When you install MPLAB (Free from Microchip)
you will find it under

C:\Program Files\Microchip\MPLAB IDE\Device

JDM programmers often do not work well with laptops or new PCs.
The main problem is the RS232 ports often do not provide enough
voltage for programming.


New Member
Here is what happens when I try to program the chip using WinPic800:

Reading PIC ok.
Erasing ("bulk" or "chip") ...
Programming CODE, 0x000000..0x000801
Verifying 0x000000..0x000801
Verify Error: 00000C: read 002012, wanted 002013
Verify Error: 00000D: read 002000, wanted 002013
Verify Error: 00000E: read 000000, wanted 003000
Verify Error: 00000F: read 000084, wanted 000085
More Verify Errors, unable to list all (total=19)
Programming CONFIG, 0x002000..0x002007
Verifying 0x002000..0x002007
ERROR: Programming FAILED !


Well-Known Member
JDM needs an old PC with serial port.

Here is my JDM circuit with some improvements:

The 8v2 has 2 diodes to increase the voltage by 1.2v

Pin 9 is conected to pin 10 via a 10k (for PIC16F628) and pin 10 does not go anywhere else.

My cirucit has 3 LEDs to show when the varous lines are operating. Make sure the 13v LED has 13.5v for guaranteed programming.
Last edited:


New Member

I am not sure I follow. I programmed the device twice now, then it got stuck with the second program loaded onboard. The program works as written, I just can't change it anymore.


Well-Known Member
Yes, that's right. The chip won't program.

I had the same problem with PIC16F628's.
They are basically faulty PIC chips.

Try completely discharging the chip by shorting the pins.

I have had lots of problems like this with PIC chips. Even to the extent that one or more of the instructons will not work. I thought was my program until I found other chips would work.

Nigel Goodwin

Super Moderator
Most Helpful Member
PIC's are incredibly sturdy devices, it's VERY rare to either get a duff one, or damage one.

Far more likely is that you've set the internal oscillator (as all my 16F628 tutorials do), and your programmer is unable to cope with that - as some poor programmers can't do so.


It is a common issue with enabling the internal oscillator combined with disabling MCLR for using it as an input.
The basic jdm programmer cannot recover chips once they have been programmed in this way because it can't control both the vpp and VDD needed in order to get the chip back into program mode.

There have been various mods to the jdm programmer created to allow VDD control.
eg. Reprogramming becomes impossible to small PIC !

A better long term solution is to upgrade to a microchip pickit2 (or clone) programmer which does not suffer from that issue.


Coop Build Coordinator
Forum Supporter
Last I recall RS232 is the standard that lays out the voltage translation between TTL levels and plus and minus 12 volts. The older serial ports were better at following the RS232 standard then newer PCs and laptop.

Even if you are Tightwad you will be money ahead if you do what gramo suggests. At the very least build a IC2 rs232 clone for about $10. It is old and slow but way better then the JDR junk. My two cents is that the only valid use for a JDR is programing a chip for a better programmer. :)
JDM does not work on RS232 at all.

It needs an old PC with serial port.


New Member
What would a suggested board be then? PICKIT2 is USB, will that programmer work with Nigels Tutorial? Is there a better option? I am a "Tightwad" but in this case I am already invested I guess....better to do it at least somewhat right.

Knowing what programmer to buy is incredibly tough...I didn't realize this would be an issue.


Well-Known Member
IMO best option on the ultra cheap is a PICkit2 clone like the old SE version I published ages ago (it became part of the Junebug kit). You can use your JDM to program a 18F2550 and a handful of parts you and you'll have a decent USB programmer & debugger.


Since the JDM isn't a high voltage programmer couldn't you just provide the target with power from another source and only use the RS232 for data? That should work.
Not open for further replies.

Latest threads

EE World Online Articles