Troubles with PIC 16F88

Dec 01, 2005 3 Replies

I have been trying to program an 18pin 16F88 for a project, my first attempt at using PIC chips. So far I haven't been able to get an LED to blink. I have this PIC-PG2C programmer:

formatting link
and am using the ICProg program the manufacturer said is compatible. I am currently using CCS C compiler that I received from a friend who has worked with PICs before, but haven't figured how to use CCS from within MPLAB and currently just double click the executable in its directory and it asks for the location of the source code and spits out a hex file. I have the 16F88.h file in the same directory, and CCS C reports no errors.



I am just powering the PIC with +5V and Ground, someone also told me I might need to feed pin 4 high, or low, to keep the device from continuously resetting. Is that correct? I don't have an external RC attached and wish to use the internal clock, I set the ICProg configuration to "IntRC". The programmer programs and then verifies the programming, yet when I put the chip into a circuit with +5 on pin 14, ground on pin 5, and an LED between pin 17 and ground; the LED has a barely detectable blink to it, but when I connect pin 4 to +5 the LED remains on solid, and when I connect pin 4 to ground the LED turns off completely. Here is a link to the



16F88 data sheet:
formatting link

I assume CCS C is a good compiler, but is there another one anyone would suggest?



Here is my source code: #include #fuses HS,NOWDT,NOPROTECT,NOLVP #use delay(clock=4000000) // Wait for one second void wait() { int count = 0; while(count < 100000) { delay_us(10); count = count + 1; } } // Blink the PIN void blink() { output_high(PIN_A0); wait(); output_low(PIN_A0); wait(); } void main() { while(TRUE) { blink(); } }



I have also read about PIC simulators, has anyone used one and can recommend it? My project involves gathering data from two to three voltage imputs (carbon di/monoxide detectors) and converting those voltages to ppm and outputing the values to an LCD display. Then calculating and storing or displaying the average over certain time spans. One step at a time though.



See below.

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

This stuff is real important. You need to set the fuses correctly for your circuit. In the program, you've presumably asked for the 'HS' oscillator option, which requires an external crystal and capacitor or resonator etc. You probably want to enable the INTRC oscillator with no output on RA6.

What you have to do with RA5 also depends on the CONFIG1 settings, but tying it to Vdd is safe in any case (it's input only even if the /MCLR function is disabled).

Maybe you're overriding the configuration fuse settings with your programmer, I don't know, this is a 3rd party programmer.

BTW, you should have a resistor in series with the LED, probably you just didn't mention it.

You probably need to set up the TRIS register for port A *and* to disable analog inputs before you can get any output unless CCS does something really strange by default(since you're seeing output from the pin, maybe it does!). Also, check to make sure CCS has 16 bit integers.. there is one of the compilers that defaults to 8 bits, believe it or not. 8-(

You should be able to use the simulator in MPLAB. It will show you all the SFR values (including port pins) and so on-- and you can set breakpoints and measure time intervals. You need to understand most of the low-level stuff even if you are using C (or CCS 'C').

Best regards, Spehro Pefhany

"it\'s the network..." "The Journey is the reward" speff@interlog.com Info for manufacturers: http://www.trexon.com Embedded software/hardware/analog Info for designers: http://www.speff.com

You appear to have set the oscillator to external xtal and not internal RC, you appear to have not set port A to output mode. I'm not familiar with this compiler but you might want to consider useing assembler for a little chip like this or you may run out of program space as your project gets going.

"Brian KP" schreef in bericht news: snipped-for-privacy@g43g2000cwa.googlegroups.com...

Hmm... according to your source the oscillator is set to HS instead of INTOSC. I see no trace of configuring pin 17 for output. When using a common red LED I'd advise to use a series resistor of let's say 330 Ohm. Can't you tell the compiler to output assembler code so you can see what it has done? (And show us as well.) Once you have the code in assembler you can also use the MPLABs simulator to see your program execute.

petrus bitbyter

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required