The 16F628 an older device but is still a very capable little device (18pin - the same number as the venerable 16F84). Importantly it has its own internal clock running at a rate of 4MHz.
The 16F628A version is (still in production as of Apr2018) and is an enhanced version of the 16F628 (mainly its nano Watt power down capability - and it is also capable of operating from 2V (or above), whereas the 16F628 operates from 3V (or above) ) in all other respects the 16F628A is identical to the 16F628 - pinout, internal peripherals and mempry architecture.
When you use the internal oscillator you don't need an external crystal so that frees up two pins in most projects. In addition you can also use the internal reset circuit so that frees up the reset pin for use (MCLRn pin) - but note that this pin can only be used as an input (due to internal circuitry in the 16F628).
The 16F84 has 1 peripheral (Timer 0) whereas the 628 has three timers, a USART, a CCP (for Pulse Width Modulation, capture and compare), and two analogue comparators. One other useful feature is that you can switch it from internal 4MHz to slow speed internal 37kHz on the fly so you can used it in power sensitive applications (but the 16F628A is a better choice if you need ultra low power operation).The two most important features are that there is 2k of program memory and 224 Bytes of RAM. This last one is nearly four times as much as the 16F84 and for high level language use this makes it much easier to use as it is the resource the you run out of most quickly.
Jump to the 628 bubble diagram.
The only difference is the available program memory (Flash programming area).
|Device (16F)||Flash program words||Ram||EEPROM|
Jump to bubble diagram device list.
For a summary of each peripheral block click here.
Note: To compare bubble diagrams open each device page in a separate window (a tabbed browser is useful for this) and hit the 'Jump to device' link above then alternately select each view to see the differences between the devices.
There is less memory for the 16F627 (se table above).
The 16F628 pic microcontroller is quite a capable little device having enough memory for useful applications and the only features it lacks are an ADC and I2C capability.
Note: You can get round the lack of I2C by bit-banging programming i.e. controlling a programmable pin without requiring an internal hardware module (see this project for source code) and you could use an external ADC. A better choice may be the 16F88 that has a built in 10 bit ADC if you need an ADC.
The 16F628 has fairly good low power operation 1uA @3V but if you really want to have a battery operated system that lasts longer then the 16F628A has a standby current of 100nA @2V i.e. an order of magnitude better.
Jump from 16f628 resources to
Best Microcontroller Projects Home Page.
Arduino Interrupt Tutorial: Find out how many external there are on an Arduino Uno - The answer is more than two!
Switch debounce: Three different ways to debounce input push switches with one amazing method that you can't miss.
A tutorial on using the ADS1115 precision 16 bit ADC for low power use.
With the ADXL345 acellerometer you can detect up to 16g! You can also find out how to use it for tap detection and more.
ESP8266 Webserver: This code shows you how to use lua to create a webserver using html button inputs to contrtol an LED on the ESP module.
How to flash nodemcu firmware into a ESP8266 so you can use the LUA scripting language.