PICマイコンは入門用とかよく聞きます。
とんでもないです

一貫性の無い設計と、不安定で癖のある開発ツールは、あなたの時間を奪いまくります。
ツール開発も迷走していて、ソースの互換性が突如なくなるなど日常茶飯事。
PICのメリットは開発環境が安く整う。これのみです。
NECの78kなどはアーキテクチャがひどいのでそれよりはマシですが・・
Microchip純正のフリーコンパイラがxc8です。
一応、「plib」というライブラリもありますが、これが使いにくいのなんの。以下、使い方です。
1.xc8の共通ヘッダのインクルード
xc8の共通ヘッダファイルをインクルードします。
#include <xc8.h>
2.使用ペリフェラルヘッダのインクルード
使用するペリフェラルのヘッダファイルをインクルードします。ADCを使うなら
#incluide <plib/adc.h>
plibにパスを通している場合は
#include <adc.h>
でOK。
3.呼ぶべきライブラリ関数の型を調べる
ペリフェラルヘッダで定義しているライブラリ関数のソースは
C:\Program Files (x86)\Microchip\xc8\v1.31\sources
以下にあります(xc8 ver1.31の場合)。
例えば、PIC18シリーズのADCの場合は以下になります。
C:\Program Files (x86)\Microchip\xc8\v1.31\sources\pic18\plib\ADC
4.使用するPICに対応するライブラリ関数を調べる
例えば、ADCを使用開始する際は「OpenADC」という関数を呼ぶ必要があるのですが、関数名は同じでも、PICのタイプによって引数の型や種類が違っています(C言語なのでC++のような多態性などありません。適切なプロトタイプの関数のみリンクさせる必要があります)。
使用予定のPICには、どの型のものを使えばいいかを調べるには
C:\Program Files (x86)\Microchip\xc8\v1.31\sources\pic18\plib\
にあるpconfig.hの中身を調べる必要があります。
例えば、PIC18C252を選択(MPLAB XのNew Projectを作成時に選ぶ)した場合は
#ifdef __18C252
/*############################################################*/
/* Configuration for device = 'PIC18C252' */
/*############################################################*/
/* ADC */
#define ADC_V1
とあるので、PIC18C252のADCライブラリは、「ADC_V1」で囲まれた部分にあるものだと分かります。
5.ライブラリ関数の引数に使うためのdefineがクセモノ
このplib、ADCならレジスタビットのCHやACQTなどを指定すれば良いようなパラメータになっておらず、結局はライブラリのソースを読む必要があります(レジスタの各ビットを一度OFFしてからONしなくてもいいようになってる)。
plib関数のパラメータの多くは、ヘッダに定義がありますが、レジスタ名やビット名でdefineされていないので、結局は読み解く必要があります。
レジスタの設定順序などを参考にしつつ、関数を自作した方が早いです(半分本気。実際そうしました)。