Read analog values without an ADC using PIC12F675 microcontroller

Digital electronics and Analog electronics doesn’t mix easily. A Microcontroller can’t get analog values unless an Analog-to-Digital converter is used, however, you may find a little complicated the use of an ADC and it need lots of Input/Output ports.


Some Microcontrollers, like the small 8-pin Microchip PIC 12F675, do have an ADC integrated, but it is expensier than a PIC without ADC. A simple solution is to use a RC circuit to measure the resistance or capacitance.


Basically, a RC circuit is just a capacitor and a resistor. The circuit labeled A shows the most common RC circuit used. I like to use the B circuit, I get better results.

RC Circuit

You can replace the resistor and use a thermistor to measure temperature (PTC or NTC), also a photoresistor can be used to measure light. Any kind of resistive sensor can replace the resistor. If you are using a capacitive sensor, just replace the capacitor instead of the resistor.


How it works:

Just connect the RC circuit directly to an I/O pin of the microcontroller. You can use a 33pf capacitor and 1k resistor.


  • First, make the I/O pin as OUTPUT.
  • Second, make the pin POSITIVE (+) for one milisecond. (Using a PIC at 4mhz, a 255-cycles loop will be enough).
  • Third, Make the I/O pin as INPUT and measure how long stays as POSITIVE (+).An good application of this technique is my “One wire keypad”:

The PIC will measure the RC value of the I/O pin. If the time measured is too long, that means; there is no key pressed. Precision resistors and Mylar capacitor is required to get exact values.

You can see my ” Security Keypad ” uses a similar technique.

For more detail: Read analog values without an ADC using PIC12F675 microcontroller

Current Project / Post can also be found using:

  • 12f675; adc convert
  • adc using pic 12f675
  • A/D-Input Range PIC 12F675
  • how to get ADC PIC 12F675 ADC values on GPIO1

Leave a Comment

= 5 + 3

Read previous post:
Tiny Remote for iRobot Roomba
Tiny Remote for iRobot Roomba using PIC12F629

Description The Tiny Remoteis a very compact infrared remote control with only two buttons to control an iRobot Roomba. It...

Scroll to top