Some have suggested that PIC's are not the place to start. Historically, they have been and are where I started. In 1998, I was making a controller for launching my sailplanes using only hardware logic. It was getting complicated, and I stumbled on PIC's as they were considered simple. There were many tutorials for using Assembly and PICList was active.
Here's a partial list of the tutorials (some may no longer be available):
http://www.amqrp.org/elmer160/lessons/ (seems to be gone)
http://winpicprog.co.uk/pic_tutorial.htmhttp://www.gooligum.com.au/PIC-Tutorials (gone -- probably relocated)
http://www.gooligum.com.au/tut_enhanced.html (gone)
http://www.microchip.com/forums/m778472.aspx (links to updated enhanced mid-range)
This link mirrors one of the older tutorials that I used:
https://groups.csail.mit.edu/lbr/stack/pic/pic-prog-assembly.pdfThere were/are so many tutorials that my advice is to pick one and stick with it. Gooligum is often recommended (it's not what I used at the time). I have referred to his set occasionally since. Winpicprog was also used, but the author (Nigel) gave an example of some code and used the symbol "$" without defining what it meant. Aside from that, his tutorial seems pretty easy to follow. The tutorial I used most was "elmer" (first link) and referred to the mstracey one in the MIT link for help.
I started with the PIC12F509 (12-bit core). It had a couple of fewer instructions than the 14-bit cores had and no interrupts. In short order, I got the launch gadget done and working. That hooked me. I then went to the 12F6xx (14-bit core and interrupts) but still didn't see the need for or use interrupts. Then slowly advanced to the enhanced mid-range (16F1xxx and later) and started using interrupts when I needed to and not just as a crutch. I have considered going to the 18F and 24F, but just haven't seen the need to them; although, they do have obvious advantages.
Why did I pick Assembly instead of C? I am goal oriented and saw Assembly not much different from flowcharting and laboratory porcedure manuals that I had been writing for years. Simply put, I wanted to get the project done, not waste time learning a higher level language. In almost no time and without a lot of blog questions, I was able to do that. I am still stuck in that rut. If you are serious about doing programming and not just making gadgets, the arguments for C are persuasive. However, some of the best C-programmers I know have a good basis in Assembly.
The TS has some experience with Arduino. That may change his direction, but for the time being, he has some
PIC12F675's. They are perfect for learning Assembly and getting to know the hardware.
EDIT: I checked the above links. As feared, several are missing or relocated. Comments have been added. There are still many more on the internet.