1) No.
2) Hay que programarlo.
Esta es la lista de PICs que tienen controlador USB integrado:
http://www.microchip.com/stellent/idcpl ... odeId=2654Todo lo relacionado con USB de Microchip lo encuentras en:
http://www.microchip.com/usb/Si tienes otro microcontrolador (PIC o cualquier otro), puedes usar un controlador USB externo como el USBN9603 de National o el FT232.
Para programar los PICs, no he visto hasta ahora código en ensamblador, gralmente. encuentras ejemplos y documentación en lenguaje C o Basic, el manejo del controlador USB se encapsula mediante el uso de librerías en estos lenguajes. Yo he probado con el compilador C de CCS:
http://www.ccsinfo.comPor el lado de la aplicación en la PC, Microchip provee documentación y ejemplos para distintos modos de comunicación, incluyendo clases HID (dispositivos de interfaz humana); CDC, dispositivo de comunicación, esta clase permite trabajar el puerto USB como un puerto serie virtual (COM), y una librería para transferencias bulk.
El protocolo USB define varios tipos de transferencia (comunicación) de datos, debes checar cuál es el que se adecua a tus necesidades
. Para esto te recomiendo el libro "USB Complete" de Jan Axelson:
http://www.lvr.com/Por último, te dejo un ejemplo de aplicación con un PIC18f2550 en modo de transferencias bulk, firmware compilado con CCS y la aplicación de la PC desarrollada en C# utilizando la librería de Microchip:
http://www.hobbypic.com/index.php?optio ... &Itemid=27