Continue to Site

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.

  • 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.

Need help on the programmer PICKIT2

Status
Not open for further replies.

kenny90

New Member
I program my PIC16f877a by using MPLAB IDE v 8.56. When program the PIC16f877a, it show that

Initializing PICkit 2 version 0.0.3.63
Found PICkit 2 - Operating System Version 2.32.0
PICkit 2 Unit ID = OlHoss
Target power not detected - Powering from PICkit 2 ( 5.00V)
PKWarn0003: Unexpected device ID: Please verify that a PIC16F877A is correctly installed in the application. (Expected ID = 0xE20, ID Read = 0x9A0)
PICkit 2 Ready

Reading Target
PKWarn0003: Unexpected device ID: Please verify that a PIC16F877A is correctly installed in the application. (Expected ID = 0xE20, ID Read = 0x9A0)
Reading Program Memory
Reading EEPROM Memory
Reading User ID Memory
Reading Configuration Memory
PICkit 2 Ready



[Target power not detected - Powering from PICkit 2 ( 5.00V)
PKWarn0003: Unexpected device ID: Please verify that a PIC16F877A is correctly installed in the application. (Expected ID = 0xE20, ID Read = 0x9A0)]

how to solve the target power not detected and the unexpected device ID. Hope you guys can help me...
 
The "target power not detected" is not a problem--if you don't already have the pic hooked up to an external power source, it senses it and provides its own power. It's very convenient, if you ask me.

As for the unexpected device ID, it is just a warning, so it should still work. There are many possible causes of this error. I suggest you check and make sure that you have selected the PIC16F877a on MPLAB (not just the PIC16F877, or something like that). It simply means that the chip it sensed was not the one it was expecting.

Der Strom
 
The device with id 0x9A0 is a 16F877 not a 16F877A. It is revision A0 which was the first version issued so it's a very old chip but appears to be working. The config register is different on the two devices and so I don't think you can select the A version.

Mike.
 
For anyone interested, here is a complete list of all 16 series device IDs.
Code:
PIC16C925.dev:    ver (id=0x141 desc="a2")
PIC16C925.dev:    ver (id=0x143 desc="b1")
PIC16C925.dev:    ver (id=0x144 desc="b2")
PIC16C926.dev:    ver (id=0x101 desc="a2")
PIC16C926.dev:    ver (id=0x103 desc="b1")
PIC16C926.dev:    ver (id=0x104 desc="b2")
PIC16CR73.dev:    ver (id=0xc80 desc="Rev A")
PIC16CR74.dev:    ver (id=0xcc0 desc="Rev A")
PIC16CR76.dev:    ver (id=0xc00 desc="Rev A")
PIC16CR77.dev:    ver (id=0xc40 desc="Rev A")
PIC16F1823.dev:    ver (id=0x2720 desc="a0")
PIC16F1826.dev:    ver (id=0x2780 desc="a0")
PIC16F1827.dev:    ver (id=0x27A0 desc="a0")
PIC16F1933.dev:    ver (id=0x2300 desc="a0")
PIC16F1934.dev:    ver (id=0x2340 desc="a0")
PIC16F1936.dev:    ver (id=0x2360 desc="a0")
PIC16F1937.dev:    ver (id=0x2380 desc="a0")
PIC16F1938.dev:    ver (id=0x23A0 desc="a0")
PIC16F1939.dev:    ver (id=0x24C0 desc="a0")
PIC16F1946.dev:    ver (id=0x2500 desc="a0")
PIC16F1947.dev:    ver (id=0x2520 desc="a0")
PIC16F610.dev:    ver (id=0x520 desc="a0")
PIC16F616.dev:    ver (id=0x520 desc="a0")
PIC16F707.dev:    ver (id=0x1AC0 desc="a0")
PIC16F72.dev:    ver (id=0xa0 desc="a0")
PIC16F72.dev:    ver (id=0xa1 desc="a1")
PIC16F72.dev:    ver (id=0xa2 desc="a2")
PIC16F73.dev:    ver (id=0x600 desc="Rev B")
PIC16F73.dev:    ver (id=0x601 desc="Rev C")
PIC16F737.dev:    ver (id=0xba0 desc="a0")
PIC16F74.dev:    ver (id=0x620 desc="Rev B")
PIC16F74.dev:    ver (id=0x621 desc="Rev C")
PIC16F747.dev:    ver (id=0xbe0 desc="a0")
PIC16F76.dev:    ver (id=0x640 desc="Rev B")
PIC16F76.dev:    ver (id=0x641 desc="Rev C")
PIC16F767.dev:    ver (id=0xea0 desc="a0")
PIC16F77.dev:    ver (id=0x660 desc="Rev B")
PIC16F77.dev:    ver (id=0x661 desc="Rev C")
PIC16F777.dev:    ver (id=0xde0 desc="a0")
PIC16F777.dev:    ver (id=0xde1 desc="a1")
PIC16F818.dev:    ver (id=0x4c0 desc="a0")
PIC16F818.dev:    ver (id=0x4c1 desc="a1")
PIC16F818.dev:    ver (id=0x4c2 desc="a2")
PIC16F818.dev:    ver (id=0x4c3 desc="a3")
PIC16F818.dev:    ver (id=0x4c4 desc="a4")
PIC16F819.dev:    ver (id=0x4e0 desc="a0")
PIC16F819.dev:    ver (id=0x4e1 desc="a1")
PIC16F819.dev:    ver (id=0x4e2 desc="a2")
PIC16F819.dev:    ver (id=0x4e3 desc="a3")
PIC16F819.dev:    ver (id=0x4e4 desc="a4")
PIC16F87.dev:    ver (id=0x720 desc="a0")
PIC16F87.dev:    ver (id=0x721 desc="a1")
PIC16F87.dev:    ver (id=0x722 desc="a2")
PIC16F87.dev:    ver (id=0x723 desc="a3")
PIC16F87.dev:    ver (id=0x724 desc="b0")
PIC16F87.dev:    ver (id=0x725 desc="b1")
PIC16F870.dev:    ver (id=0xd00 desc="a0")
PIC16F870.dev:    ver (id=0xd01 desc="a1,a2")
PIC16F870.dev:    ver (id=0xd02 desc="a3")
PIC16F871.dev:    ver (id=0xd20 desc="a0")
PIC16F871.dev:    ver (id=0xd21 desc="a1,a2")
PIC16F871.dev:    ver (id=0xd22 desc="a3")
PIC16F872.dev:    ver (id=0x8e0 desc="a1")
PIC16F872.dev:    ver (id=0x8e1 desc="a2")
PIC16F873.dev:    ver (id=0x960 desc="a0")
PIC16F873.dev:    ver (id=0x961 desc="a1")
PIC16F873.dev:    ver (id=0x962 desc="b0,b1")
PIC16F873.dev:    ver (id=0x963 desc="b2,b3")
PIC16F873.dev:    ver (id=0x964 desc="b4,b5,b6")
PIC16F873.dev:    ver (id=0x965 desc="b7")
PIC16F873.dev:    ver (id=0x966 desc="b8")
PIC16F873A.dev:    ver (id=0xe40 desc="a0,a1")
PIC16F873A.dev:    ver (id=0xe41 desc="b0")
PIC16F873A.dev:    ver (id=0xe42 desc="b1")
PIC16F873A.dev:    ver (id=0xe43 desc="b2")
PIC16F873A.dev:    ver (id=0xe46 desc="b3")
PIC16F873A.dev:    ver (id=0xe47 desc="b4")
PIC16F874.dev:    ver (id=0x920 desc="a0")
PIC16F874.dev:    ver (id=0x921 desc="a1")
PIC16F874.dev:    ver (id=0x922 desc="b0,b1")
PIC16F874.dev:    ver (id=0x923 desc="b2,b3")
PIC16F874.dev:    ver (id=0x924 desc="b4,b5,b6")
PIC16F874.dev:    ver (id=0x925 desc="b7")
PIC16F874.dev:    ver (id=0x926 desc="b8")
PIC16F874A.dev:    ver (id=0xe60 desc="a0,a1")
PIC16F874A.dev:    ver (id=0xe61 desc="b0")
PIC16F874A.dev:    ver (id=0xe62 desc="b1")
PIC16F874A.dev:    ver (id=0xe63 desc="b2")
PIC16F874A.dev:    ver (id=0xe66 desc="b3")
PIC16F874A.dev:    ver (id=0xe67 desc="b4")
PIC16F876.dev:    ver (id=0x9e0 desc="a0")
PIC16F876.dev:    ver (id=0x9e1 desc="a1")
PIC16F876.dev:    ver (id=0x9e2 desc="b0,b1")
PIC16F876.dev:    ver (id=0x9e3 desc="b2,b3")
PIC16F876.dev:    ver (id=0x9e4 desc="b4,b5,b6")
PIC16F876.dev:    ver (id=0x9e5 desc="b7")
PIC16F876.dev:    ver (id=0x9e6 desc="b8")
PIC16F876A.dev:    ver (id=0xe00 desc="a0,a1")
PIC16F876A.dev:    ver (id=0xe01 desc="b0")
PIC16F876A.dev:    ver (id=0xe02 desc="b1")
PIC16F876A.dev:    ver (id=0xe03 desc="b2")
PIC16F876A.dev:    ver (id=0xe06 desc="b3")
PIC16F876A.dev:    ver (id=0xe07 desc="b4")
PIC16F877.dev:    ver (id=0x9a0 desc="a0")
PIC16F877.dev:    ver (id=0x9a1 desc="a1")
PIC16F877.dev:    ver (id=0x9a2 desc="b0,b1")
PIC16F877.dev:    ver (id=0x9a3 desc="b2,b3")
PIC16F877.dev:    ver (id=0x9a4 desc="b4,b5,b6")
PIC16F877.dev:    ver (id=0x9a5 desc="b7")
PIC16F877.dev:    ver (id=0x9a6 desc="b8")
PIC16F877A.dev:    ver (id=0xe20 desc="a0,a1")
PIC16F877A.dev:    ver (id=0xe21 desc="b0")
PIC16F877A.dev:    ver (id=0xe22 desc="b1")
PIC16F877A.dev:    ver (id=0xe23 desc="b2")
PIC16F877A.dev:    ver (id=0xe26 desc="b3")
PIC16F877A.dev:    ver (id=0xe27 desc="b4")
PIC16F88.dev:    ver (id=0x760 desc="a0")
PIC16F88.dev:    ver (id=0x761 desc="a1")
PIC16F88.dev:    ver (id=0x762 desc="a2")
PIC16F88.dev:    ver (id=0x763 desc="a3")
PIC16F88.dev:    ver (id=0x764 desc="b0")
PIC16F88.dev:    ver (id=0x765 desc="b1")
PIC16F916.dev:    ver (id=0x13a0 desc="a1")
PIC16F917.dev:    ver (id=0x1380 desc="a1")
PIC16F946.dev:    ver (id=0x1460 desc="a0")
PIC16HV610.dev:    ver (id=0x520 desc="a0")
PIC16HV616.dev:    ver (id=0x520 desc="a0")
PIC16LF1823.dev:    ver (id=0x2820 desc="a0")
PIC16LF1826.dev:    ver (id=0x2880 desc="a0")
PIC16LF1827.dev:    ver (id=0x28A0 desc="a0")
PIC16LF1933.dev:    ver (id=0x2400 desc="a0")
PIC16LF1934.dev:    ver (id=0x2440 desc="a0")
PIC16LF1936.dev:    ver (id=0x2460 desc="a0")
PIC16LF1937.dev:    ver (id=0x2480 desc="a0")
PIC16LF1938.dev:    ver (id=0x24A0 desc="a0")
PIC16LF1939.dev:    ver (id=0x23C0 desc="a0")
PIC16LF1946.dev:    ver (id=0x2580 desc="a0")
PIC16LF1947.dev:    ver (id=0x25A0 desc="a0")
PIC16LF707.dev:    ver (id=0x1AE0 desc="a0")

Generated using grep for windows. Very useful program.

Mike.
 
For anyone interested, here is a complete list of all 16 series device IDs.
Code:
PIC16C925.dev:    ver (id=0x141 desc="a2")
PIC16C925.dev:    ver (id=0x143 desc="b1")
PIC16C925.dev:    ver (id=0x144 desc="b2")
PIC16C926.dev:    ver (id=0x101 desc="a2")
PIC16C926.dev:    ver (id=0x103 desc="b1")
PIC16C926.dev:    ver (id=0x104 desc="b2")
PIC16CR73.dev:    ver (id=0xc80 desc="Rev A")
PIC16CR74.dev:    ver (id=0xcc0 desc="Rev A")
PIC16CR76.dev:    ver (id=0xc00 desc="Rev A")
PIC16CR77.dev:    ver (id=0xc40 desc="Rev A")
PIC16F1823.dev:    ver (id=0x2720 desc="a0")
PIC16F1826.dev:    ver (id=0x2780 desc="a0")
PIC16F1827.dev:    ver (id=0x27A0 desc="a0")
PIC16F1933.dev:    ver (id=0x2300 desc="a0")
PIC16F1934.dev:    ver (id=0x2340 desc="a0")
PIC16F1936.dev:    ver (id=0x2360 desc="a0")
PIC16F1937.dev:    ver (id=0x2380 desc="a0")
PIC16F1938.dev:    ver (id=0x23A0 desc="a0")
PIC16F1939.dev:    ver (id=0x24C0 desc="a0")
PIC16F1946.dev:    ver (id=0x2500 desc="a0")
PIC16F1947.dev:    ver (id=0x2520 desc="a0")
PIC16F610.dev:    ver (id=0x520 desc="a0")
PIC16F616.dev:    ver (id=0x520 desc="a0")
PIC16F707.dev:    ver (id=0x1AC0 desc="a0")
PIC16F72.dev:    ver (id=0xa0 desc="a0")
PIC16F72.dev:    ver (id=0xa1 desc="a1")
PIC16F72.dev:    ver (id=0xa2 desc="a2")
PIC16F73.dev:    ver (id=0x600 desc="Rev B")
PIC16F73.dev:    ver (id=0x601 desc="Rev C")
PIC16F737.dev:    ver (id=0xba0 desc="a0")
PIC16F74.dev:    ver (id=0x620 desc="Rev B")
PIC16F74.dev:    ver (id=0x621 desc="Rev C")
PIC16F747.dev:    ver (id=0xbe0 desc="a0")
PIC16F76.dev:    ver (id=0x640 desc="Rev B")
PIC16F76.dev:    ver (id=0x641 desc="Rev C")
PIC16F767.dev:    ver (id=0xea0 desc="a0")
PIC16F77.dev:    ver (id=0x660 desc="Rev B")
PIC16F77.dev:    ver (id=0x661 desc="Rev C")
PIC16F777.dev:    ver (id=0xde0 desc="a0")
PIC16F777.dev:    ver (id=0xde1 desc="a1")
PIC16F818.dev:    ver (id=0x4c0 desc="a0")
PIC16F818.dev:    ver (id=0x4c1 desc="a1")
PIC16F818.dev:    ver (id=0x4c2 desc="a2")
PIC16F818.dev:    ver (id=0x4c3 desc="a3")
PIC16F818.dev:    ver (id=0x4c4 desc="a4")
PIC16F819.dev:    ver (id=0x4e0 desc="a0")
PIC16F819.dev:    ver (id=0x4e1 desc="a1")
PIC16F819.dev:    ver (id=0x4e2 desc="a2")
PIC16F819.dev:    ver (id=0x4e3 desc="a3")
PIC16F819.dev:    ver (id=0x4e4 desc="a4")
PIC16F87.dev:    ver (id=0x720 desc="a0")
PIC16F87.dev:    ver (id=0x721 desc="a1")
PIC16F87.dev:    ver (id=0x722 desc="a2")
PIC16F87.dev:    ver (id=0x723 desc="a3")
PIC16F87.dev:    ver (id=0x724 desc="b0")
PIC16F87.dev:    ver (id=0x725 desc="b1")
PIC16F870.dev:    ver (id=0xd00 desc="a0")
PIC16F870.dev:    ver (id=0xd01 desc="a1,a2")
PIC16F870.dev:    ver (id=0xd02 desc="a3")
PIC16F871.dev:    ver (id=0xd20 desc="a0")
PIC16F871.dev:    ver (id=0xd21 desc="a1,a2")
PIC16F871.dev:    ver (id=0xd22 desc="a3")
PIC16F872.dev:    ver (id=0x8e0 desc="a1")
PIC16F872.dev:    ver (id=0x8e1 desc="a2")
PIC16F873.dev:    ver (id=0x960 desc="a0")
PIC16F873.dev:    ver (id=0x961 desc="a1")
PIC16F873.dev:    ver (id=0x962 desc="b0,b1")
PIC16F873.dev:    ver (id=0x963 desc="b2,b3")
PIC16F873.dev:    ver (id=0x964 desc="b4,b5,b6")
PIC16F873.dev:    ver (id=0x965 desc="b7")
PIC16F873.dev:    ver (id=0x966 desc="b8")
PIC16F873A.dev:    ver (id=0xe40 desc="a0,a1")
PIC16F873A.dev:    ver (id=0xe41 desc="b0")
PIC16F873A.dev:    ver (id=0xe42 desc="b1")
PIC16F873A.dev:    ver (id=0xe43 desc="b2")
PIC16F873A.dev:    ver (id=0xe46 desc="b3")
PIC16F873A.dev:    ver (id=0xe47 desc="b4")
PIC16F874.dev:    ver (id=0x920 desc="a0")
PIC16F874.dev:    ver (id=0x921 desc="a1")
PIC16F874.dev:    ver (id=0x922 desc="b0,b1")
PIC16F874.dev:    ver (id=0x923 desc="b2,b3")
PIC16F874.dev:    ver (id=0x924 desc="b4,b5,b6")
PIC16F874.dev:    ver (id=0x925 desc="b7")
PIC16F874.dev:    ver (id=0x926 desc="b8")
PIC16F874A.dev:    ver (id=0xe60 desc="a0,a1")
PIC16F874A.dev:    ver (id=0xe61 desc="b0")
PIC16F874A.dev:    ver (id=0xe62 desc="b1")
PIC16F874A.dev:    ver (id=0xe63 desc="b2")
PIC16F874A.dev:    ver (id=0xe66 desc="b3")
PIC16F874A.dev:    ver (id=0xe67 desc="b4")
PIC16F876.dev:    ver (id=0x9e0 desc="a0")
PIC16F876.dev:    ver (id=0x9e1 desc="a1")
PIC16F876.dev:    ver (id=0x9e2 desc="b0,b1")
PIC16F876.dev:    ver (id=0x9e3 desc="b2,b3")
PIC16F876.dev:    ver (id=0x9e4 desc="b4,b5,b6")
PIC16F876.dev:    ver (id=0x9e5 desc="b7")
PIC16F876.dev:    ver (id=0x9e6 desc="b8")
PIC16F876A.dev:    ver (id=0xe00 desc="a0,a1")
PIC16F876A.dev:    ver (id=0xe01 desc="b0")
PIC16F876A.dev:    ver (id=0xe02 desc="b1")
PIC16F876A.dev:    ver (id=0xe03 desc="b2")
PIC16F876A.dev:    ver (id=0xe06 desc="b3")
PIC16F876A.dev:    ver (id=0xe07 desc="b4")
PIC16F877.dev:    ver (id=0x9a0 desc="a0")
PIC16F877.dev:    ver (id=0x9a1 desc="a1")
PIC16F877.dev:    ver (id=0x9a2 desc="b0,b1")
PIC16F877.dev:    ver (id=0x9a3 desc="b2,b3")
PIC16F877.dev:    ver (id=0x9a4 desc="b4,b5,b6")
PIC16F877.dev:    ver (id=0x9a5 desc="b7")
PIC16F877.dev:    ver (id=0x9a6 desc="b8")
PIC16F877A.dev:    ver (id=0xe20 desc="a0,a1")
PIC16F877A.dev:    ver (id=0xe21 desc="b0")
PIC16F877A.dev:    ver (id=0xe22 desc="b1")
PIC16F877A.dev:    ver (id=0xe23 desc="b2")
PIC16F877A.dev:    ver (id=0xe26 desc="b3")
PIC16F877A.dev:    ver (id=0xe27 desc="b4")
PIC16F88.dev:    ver (id=0x760 desc="a0")
PIC16F88.dev:    ver (id=0x761 desc="a1")
PIC16F88.dev:    ver (id=0x762 desc="a2")
PIC16F88.dev:    ver (id=0x763 desc="a3")
PIC16F88.dev:    ver (id=0x764 desc="b0")
PIC16F88.dev:    ver (id=0x765 desc="b1")
PIC16F916.dev:    ver (id=0x13a0 desc="a1")
PIC16F917.dev:    ver (id=0x1380 desc="a1")
PIC16F946.dev:    ver (id=0x1460 desc="a0")
PIC16HV610.dev:    ver (id=0x520 desc="a0")
PIC16HV616.dev:    ver (id=0x520 desc="a0")
PIC16LF1823.dev:    ver (id=0x2820 desc="a0")
PIC16LF1826.dev:    ver (id=0x2880 desc="a0")
PIC16LF1827.dev:    ver (id=0x28A0 desc="a0")
PIC16LF1933.dev:    ver (id=0x2400 desc="a0")
PIC16LF1934.dev:    ver (id=0x2440 desc="a0")
PIC16LF1936.dev:    ver (id=0x2460 desc="a0")
PIC16LF1937.dev:    ver (id=0x2480 desc="a0")
PIC16LF1938.dev:    ver (id=0x24A0 desc="a0")
PIC16LF1939.dev:    ver (id=0x23C0 desc="a0")
PIC16LF1946.dev:    ver (id=0x2580 desc="a0")
PIC16LF1947.dev:    ver (id=0x25A0 desc="a0")
PIC16LF707.dev:    ver (id=0x1AE0 desc="a0")

Generated using grep for windows. Very useful program.

Mike.

Thanks Mike! Very helpful! I was looking for a table just like that earlier.
 
Here's the same thing sorted by device ID,

Code:
ver (id=0x101 desc="a2") PIC16C926.dev:    
ver (id=0x103 desc="b1") PIC16C926.dev:    
ver (id=0x104 desc="b2") PIC16C926.dev:    
ver (id=0x1380 desc="a1") PIC16F917.dev:    
ver (id=0x13a0 desc="a1") PIC16F916.dev:    
ver (id=0x141 desc="a2") PIC16C925.dev:    
ver (id=0x143 desc="b1") PIC16C925.dev:    
ver (id=0x144 desc="b2") PIC16C925.dev:    
ver (id=0x1460 desc="a0") PIC16F946.dev:    
ver (id=0x1AC0 desc="a0") PIC16F707.dev:    
ver (id=0x1AE0 desc="a0") PIC16LF707.dev:    
ver (id=0x2300 desc="a0") PIC16F1933.dev:    
ver (id=0x2340 desc="a0") PIC16F1934.dev:    
ver (id=0x2360 desc="a0") PIC16F1936.dev:    
ver (id=0x2380 desc="a0") PIC16F1937.dev:    
ver (id=0x23A0 desc="a0") PIC16F1938.dev:    
ver (id=0x23C0 desc="a0") PIC16LF1939.dev:    
ver (id=0x2400 desc="a0") PIC16LF1933.dev:    
ver (id=0x2440 desc="a0") PIC16LF1934.dev:    
ver (id=0x2460 desc="a0") PIC16LF1936.dev:    
ver (id=0x2480 desc="a0") PIC16LF1937.dev:    
ver (id=0x24A0 desc="a0") PIC16LF1938.dev:    
ver (id=0x24C0 desc="a0") PIC16F1939.dev:    
ver (id=0x2500 desc="a0") PIC16F1946.dev:    
ver (id=0x2520 desc="a0") PIC16F1947.dev:    
ver (id=0x2580 desc="a0") PIC16LF1946.dev:    
ver (id=0x25A0 desc="a0") PIC16LF1947.dev:    
ver (id=0x2720 desc="a0") PIC16F1823.dev:    
ver (id=0x2780 desc="a0") PIC16F1826.dev:    
ver (id=0x27A0 desc="a0") PIC16F1827.dev:    
ver (id=0x2820 desc="a0") PIC16LF1823.dev:    
ver (id=0x2880 desc="a0") PIC16LF1826.dev:    
ver (id=0x28A0 desc="a0") PIC16LF1827.dev:    
ver (id=0x4c0 desc="a0") PIC16F818.dev:    
ver (id=0x4c1 desc="a1") PIC16F818.dev:    
ver (id=0x4c2 desc="a2") PIC16F818.dev:    
ver (id=0x4c3 desc="a3") PIC16F818.dev:    
ver (id=0x4c4 desc="a4") PIC16F818.dev:    
ver (id=0x4e0 desc="a0") PIC16F819.dev:    
ver (id=0x4e1 desc="a1") PIC16F819.dev:    
ver (id=0x4e2 desc="a2") PIC16F819.dev:    
ver (id=0x4e3 desc="a3") PIC16F819.dev:    
ver (id=0x4e4 desc="a4") PIC16F819.dev:    
ver (id=0x520 desc="a0") PIC16F610.dev:    
ver (id=0x520 desc="a0") PIC16F616.dev:    
ver (id=0x520 desc="a0") PIC16HV610.dev:    
ver (id=0x520 desc="a0") PIC16HV616.dev:    
ver (id=0x600 desc="Rev B") PIC16F73.dev:    
ver (id=0x601 desc="Rev C") PIC16F73.dev:    
ver (id=0x620 desc="Rev B") PIC16F74.dev:    
ver (id=0x621 desc="Rev C") PIC16F74.dev:    
ver (id=0x640 desc="Rev B") PIC16F76.dev:    
ver (id=0x641 desc="Rev C") PIC16F76.dev:    
ver (id=0x660 desc="Rev B") PIC16F77.dev:    
ver (id=0x661 desc="Rev C") PIC16F77.dev:    
ver (id=0x720 desc="a0") PIC16F87.dev:    
ver (id=0x721 desc="a1") PIC16F87.dev:    
ver (id=0x722 desc="a2") PIC16F87.dev:    
ver (id=0x723 desc="a3") PIC16F87.dev:    
ver (id=0x724 desc="b0") PIC16F87.dev:    
ver (id=0x725 desc="b1") PIC16F87.dev:    
ver (id=0x760 desc="a0") PIC16F88.dev:    
ver (id=0x761 desc="a1") PIC16F88.dev:    
ver (id=0x762 desc="a2") PIC16F88.dev:    
ver (id=0x763 desc="a3") PIC16F88.dev:    
ver (id=0x764 desc="b0") PIC16F88.dev:    
ver (id=0x765 desc="b1") PIC16F88.dev:    
ver (id=0x8e0 desc="a1") PIC16F872.dev:    
ver (id=0x8e1 desc="a2") PIC16F872.dev:    
ver (id=0x920 desc="a0") PIC16F874.dev:    
ver (id=0x921 desc="a1") PIC16F874.dev:    
ver (id=0x922 desc="b0,b1") PIC16F874.dev:    
ver (id=0x923 desc="b2,b3") PIC16F874.dev:    
ver (id=0x924 desc="b4,b5,b6") PIC16F874.dev:    
ver (id=0x925 desc="b7") PIC16F874.dev:    
ver (id=0x926 desc="b8") PIC16F874.dev:    
ver (id=0x960 desc="a0") PIC16F873.dev:    
ver (id=0x961 desc="a1") PIC16F873.dev:    
ver (id=0x962 desc="b0,b1") PIC16F873.dev:    
ver (id=0x963 desc="b2,b3") PIC16F873.dev:    
ver (id=0x964 desc="b4,b5,b6") PIC16F873.dev:    
ver (id=0x965 desc="b7") PIC16F873.dev:    
ver (id=0x966 desc="b8") PIC16F873.dev:    
ver (id=0x9a0 desc="a0") PIC16F877.dev:    
ver (id=0x9a1 desc="a1") PIC16F877.dev:    
ver (id=0x9a2 desc="b0,b1") PIC16F877.dev:    
ver (id=0x9a3 desc="b2,b3") PIC16F877.dev:    
ver (id=0x9a4 desc="b4,b5,b6") PIC16F877.dev:    
ver (id=0x9a5 desc="b7") PIC16F877.dev:    
ver (id=0x9a6 desc="b8") PIC16F877.dev:    
ver (id=0x9e0 desc="a0") PIC16F876.dev:    
ver (id=0x9e1 desc="a1") PIC16F876.dev:    
ver (id=0x9e2 desc="b0,b1") PIC16F876.dev:    
ver (id=0x9e3 desc="b2,b3") PIC16F876.dev:    
ver (id=0x9e4 desc="b4,b5,b6") PIC16F876.dev:    
ver (id=0x9e5 desc="b7") PIC16F876.dev:    
ver (id=0x9e6 desc="b8") PIC16F876.dev:    
ver (id=0xa0 desc="a0") PIC16F72.dev:    
ver (id=0xa1 desc="a1") PIC16F72.dev:    
ver (id=0xa2 desc="a2") PIC16F72.dev:    
ver (id=0xba0 desc="a0") PIC16F737.dev:    
ver (id=0xbe0 desc="a0") PIC16F747.dev:    
ver (id=0xc00 desc="Rev A") PIC16CR76.dev:    
ver (id=0xc40 desc="Rev A") PIC16CR77.dev:    
ver (id=0xc80 desc="Rev A") PIC16CR73.dev:    
ver (id=0xcc0 desc="Rev A") PIC16CR74.dev:    
ver (id=0xd00 desc="a0") PIC16F870.dev:    
ver (id=0xd01 desc="a1,a2") PIC16F870.dev:    
ver (id=0xd02 desc="a3") PIC16F870.dev:    
ver (id=0xd20 desc="a0") PIC16F871.dev:    
ver (id=0xd21 desc="a1,a2") PIC16F871.dev:    
ver (id=0xd22 desc="a3") PIC16F871.dev:    
ver (id=0xde0 desc="a0") PIC16F777.dev:    
ver (id=0xde1 desc="a1") PIC16F777.dev:    
ver (id=0xe00 desc="a0,a1") PIC16F876A.dev:    
ver (id=0xe01 desc="b0") PIC16F876A.dev:    
ver (id=0xe02 desc="b1") PIC16F876A.dev:    
ver (id=0xe03 desc="b2") PIC16F876A.dev:    
ver (id=0xe06 desc="b3") PIC16F876A.dev:    
ver (id=0xe07 desc="b4") PIC16F876A.dev:    
ver (id=0xe20 desc="a0,a1") PIC16F877A.dev:    
ver (id=0xe21 desc="b0") PIC16F877A.dev:    
ver (id=0xe22 desc="b1") PIC16F877A.dev:    
ver (id=0xe23 desc="b2") PIC16F877A.dev:    
ver (id=0xe26 desc="b3") PIC16F877A.dev:    
ver (id=0xe27 desc="b4") PIC16F877A.dev:    
ver (id=0xe40 desc="a0,a1") PIC16F873A.dev:    
ver (id=0xe41 desc="b0") PIC16F873A.dev:    
ver (id=0xe42 desc="b1") PIC16F873A.dev:    
ver (id=0xe43 desc="b2") PIC16F873A.dev:    
ver (id=0xe46 desc="b3") PIC16F873A.dev:    
ver (id=0xe47 desc="b4") PIC16F873A.dev:    
ver (id=0xe60 desc="a0,a1") PIC16F874A.dev:    
ver (id=0xe61 desc="b0") PIC16F874A.dev:    
ver (id=0xe62 desc="b1") PIC16F874A.dev:    
ver (id=0xe63 desc="b2") PIC16F874A.dev:    
ver (id=0xe66 desc="b3") PIC16F874A.dev:    
ver (id=0xe67 desc="b4") PIC16F874A.dev:    
ver (id=0xea0 desc="a0") PIC16F767.dev:

Mike.
 
The device with id 0x9A0 is a 16F877 not a 16F877A. It is revision A0 which was the first version issued so it's a very old chip but appears to be working. The config register is different on the two devices and so I don't think you can select the A version.

Mike.

Thanks Pommie, so when i create a project on MPLAB IDE v8.56 that time, i must choose PIC16f877, not the PIC16f877A right?
Thanks for the 16 series device IDs very much.
 
Yes, select the chip you have.

It sounds like you are ready to write your own routines.

Good luck and have fun. If you get stuck then just ask here.

Mike.
 
The "target power not detected" is not a problem--if you don't already have the pic hooked up to an external power source, it senses it and provides its own power. It's very convenient, if you ask me.

As for the unexpected device ID, it is just a warning, so it should still work. There are many possible causes of this error. I suggest you check and make sure that you have selected the PIC16F877a on MPLAB (not just the PIC16F877, or something like that). It simply means that the chip it sensed was not the one it was expecting.

Der Strom

Thanks DerStrom8, so the Target power not detected and the unexpected deivice ID is just a warning and still can program the PIC16f877a right. and i have select the PIC16f877A on MPLAB when i program into it. and i have try a simple coding like blinking LED but than the LED did not blink .
so i have question:
1) did the coding program into the PIC16f877a? ( Although it show that program successfully)
2) how can i check whether the coding is program into it or not?
 
Post your complete code and we should be able to get it working.

Mike.

LIST P=16F877
PROCESSOR 16f877
#include <P16F877.INC> ; Include header file
__CONFIG _CP_OFF & _DEBUG_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC

CBLOCK 0x20 ; Declare variable addresses starting at 0x20
dataL
ENDC

org 0x0000
goto START
org 0x0010
START
bsf STATUS, RP0 ;select bank 1
movlw b'00000000' ;set PortB all outputs
movwf TRISB
movlw b'11000000' ; set up TRISC
movwf TRISC

;Boot Baud Rate = 9600, No Parity, 1 Stop Bit

movlw d'129' ; 9600bps
movwf SPBRG
movlw b'00100100' ; brgh = high
movwf TXSTA ; enable Async Transmission, set brgh

bcf STATUS,RP0 ; RAM PAGE 0

movlw b'10010000' ; enable Async Reception
movwf RCSTA

; PROVIDE A SETTLING TIME FOR START UP
; ------------------------------------
;
clrf dataL
settle decfsz dataL,F
goto settle

movf RCREG,W
movf RCREG,W
movf RCREG,W ; flush receive buffer
;
; ---------
; MAIN LOOP
; ---------
;
call message ; send "16F877a working"
loop call receive ; wait for a char
call send ; send the char
goto loop
;
; -------------------------------------------
; RECEIVE CHARACTER FROM RS232 AND STORE IN W
; -------------------------------------------
; This routine does not return until a character is received.
;
receive btfss PIR1,RCIF ; (5) check for received data
goto receive

movf RCREG,W ; save received data in W
return
;
; -------------------------------------------------------------
; SEND CHARACTER IN W VIA RS232 AND WAIT UNTIL FINISHED SENDING
; -------------------------------------------------------------
;
send movwf TXREG ; send data in W

TransWt bsf STATUS,RP0 ; RAM PAGE 1
WtHere btfss TXSTA,TRMT ; (1) transmission is complete if hi
goto WtHere

bcf STATUS,RP0 ; RAM PAGE 0
return
;
; -------
; MESSAGE
; -------
;
message movlw '1'
call send
call Blink
movlw '6'
call send
call Blink
movlw 'F'
call send
call Blink
movlw '8'
call send
call Blink
movlw '7'
call send
call Blink
movlw '7'
call send
call Blink
movlw 'a'
call send
call Blink
movlw ' '
call send
call Blink
movlw 'w'
call send
call Blink
movlw 'o'
call send
call Blink
movlw 'r'
call send
call Blink
movlw 'k'
call send
call Blink
movlw 'i'
call send
call Blink
movlw 'n'
call send
call Blink
movlw 'g'
call send
call Blink
movlw 0x0D ; CR
call send
movlw 0x0A ; LF
call send
return
Blink ;LED blinking
movlw 0xff

movwf PORTB
nop ;the nop's make up the time taken by the goto
nop ;giving a square wave output
movlw 0x00

movwf PORTB ;set all bits off
goto Blink ;go back and do it again
return
END
 
Thanks DerStrom8, so the Target power not detected and the unexpected deivice ID is just a warning and still can program the PIC16f877a right. and i have select the PIC16f877A on MPLAB when i program into it. and i have try a simple coding like blinking LED but than the LED did not blink .
so i have question:
1) did the coding program into the PIC16f877a? ( Although it show that program successfully)
2) how can i check whether the coding is program into it or not?

Well, as Pommie said, it looks like some of the configurations for the 877a are different from the 877, so it may or may not work. Make sure you select the chip you have in MPLAB and it should work.

1) It would help to see the code--It could be as simple as a test function that says something like if(x=y) instead of if(x==y).
2) You can read what is programmed into the chip using the PK2. Check that out and make sure it's right.

EDIT: Just found your latest post. Unfortunately i do not code in asm, so I cannot easily tell you if it's right or not. Try running the PK2 in debugger mode and see where it goes wrong.
 
Last edited:
formatted and re posted code
Code:
    LIST P=16F877a
    #include <P16F877a.INC> ; Include header file
    __CONFIG _CP_OFF & _DEBUG_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC
    errorlevel    -302
    CBLOCK 0x20 ; Declare variable addresses starting at 0x20
dataL
    ENDC

    org 0x0000
    goto START
    org 0x0010
START
    bsf STATUS, RP0 ;select bank 1
    movlw b'00000000' ;set PortB all outputs
    movwf TRISB
    movlw b'11000000' ; set up TRISC
    movwf TRISC

;Boot Baud Rate = 9600, No Parity, 1 Stop Bit

    movlw d'129' ; 9600bps
    movwf SPBRG
    movlw b'00100100' ; brgh = high
    movwf TXSTA ; enable Async Transmission, set brgh

    bcf STATUS,RP0 ; RAM PAGE 0

    movlw b'10010000' ; enable Async Reception
    movwf RCSTA

; PROVIDE A SETTLING TIME FOR START UP
; ------------------------------------
;
    clrf dataL
settle decfsz dataL,F
    goto settle

    movf RCREG,W
    movf RCREG,W
    movf RCREG,W         ; flush receive buffer
;
; ---------
; MAIN LOOP
; ---------
;
    call message         ; send "16F877a working"
loop call receive     ; wait for a char
    call send             ; send the char
    goto loop
;
; -------------------------------------------
; RECEIVE CHARACTER FROM RS232 AND STORE IN W
; -------------------------------------------
; This routine does not return until a character is received.
;
receive     btfss PIR1,RCIF     ; (5) check for received data
            goto  receive

            movf RCREG,W         ; save received data in W
    return
;
; -------------------------------------------------------------
; SEND CHARACTER IN W VIA RS232 AND WAIT UNTIL FINISHED SENDING
; -------------------------------------------------------------
;
send     movwf TXREG ; send data in W

TransWt bsf STATUS,RP0 ; RAM PAGE 1
WtHere     btfss TXSTA,TRMT ; (1) transmission is complete if hi
        goto WtHere

        bcf STATUS,RP0 ; RAM PAGE 0
        return
;
; -------
; MESSAGE
; -------
;
message movlw '1'
        call send
        call Blink
        movlw '6'
        call send
        call Blink
        movlw 'F'
        call send
        call Blink
        movlw '8'
        call send
        call Blink
        movlw '7'
        call send
        call Blink
        movlw '7'
        call send
        call Blink
        movlw 'a'
        call send
        call Blink
        movlw ' '
        call send
        call Blink
        movlw 'w'
        call send
        call Blink
        movlw 'o'
        call send
        call Blink
        movlw 'r'
        call send
        call Blink
        movlw 'k'
        call send
        call Blink
        movlw 'i'
        call send
        call Blink
        movlw 'n'
        call send
        call Blink
        movlw 'g'
        call send
        call Blink
        movlw 0x0D ; CR
        call send
        movlw 0x0A ; LF
        call send
    return
Blink             ;LED blinking
        movlw 0xff

        movwf PORTB
        nop     ;the nop's make up the time taken by the goto
        nop     ;giving a square wave output
        movlw 0x00

        movwf PORTB ;set all bits off
        goto Blink ;go back and do it again
        return
    END
 

Attachments

  • kenny90.asm
    2.7 KB · Views: 162
Last edited:
hi mvs sarma,

Blink ;LED blinking
movlw 0xff

movwf PORTB
nop ;the nop's make up the time taken by the goto
nop ;giving a square wave output
movlw 0x00

movwf PORTB ;set all bits off
goto Blink ;go back and do it again
return
END

the goto Blink is keep on blinking the LED and did not return back to the previous routine to perform call send.
am I right?
 
Hi, House0Fwax. in order to go to the 'return' routine, i must cancel off the 'goto Blink' right?
Blink ;LED blinking
movlw 0xff

movwf PORTB
nop ;the nop's make up the time taken by the goto
nop ;giving a square wave output
movlw 0x00

movwf PORTB ;set all bits off
return
END
 
your observation is correct.
you can define a counter to limit number of blinks, and if the number is reduced to zero, you should program , instead of go to blink it should skip and go to next line
ie RETURN.
 
Last edited:
Status
Not open for further replies.

Latest threads

New Articles From Microcontroller Tips

Back
Top