Autor Tema: Comunicación USB con 18F4550  (Leído 3079 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Scufflee

  • PIC10
  • *
  • Mensajes: 26
Comunicación USB con 18F4550
« en: 14 de Octubre de 2014, 11:35:56 »
Buenas, he estado probando hace un tiempo la comunicación a través de USB con el 18F4550 y la programación de Niple.

Lo emulé en ISIS, pero no me dio resultado. Me da errores en al intentar iniciar el USB. Les adjunto fotos del circuito en ISIS y el diagrama de Niple.

Espero su ayuda, muchas gracias y saludos.

Diagrama Niple

Error en ISIS

Desconectado juanpi2908

  • PIC12
  • **
  • Mensajes: 54
Re: Comunicación USB con 18F4550
« Respuesta #1 en: 14 de Octubre de 2014, 11:59:53 »
Hola, si puedes sube el archivo .npl y te lo pruebo en estos días, tengo hardware montado con 4550, estoy
realizando pruebas, a veces isis da errores pero cuando montas el circuito funciona bien  :shock:
saludos!!
"La gran sabiduría esta en sentirse satisfecho con poca cosa; quien aumenta sus riquezas aumenta sus cuidados; pero una mente contenta es un tesoro oculto a quien no alcanzan las calamidades"

Desconectado Scufflee

  • PIC10
  • *
  • Mensajes: 26
Re: Comunicación USB con 18F4550
« Respuesta #2 en: 14 de Octubre de 2014, 12:06:18 »
Ahí está, saludos.

Archivo NPL

Desconectado juanpi2908

  • PIC12
  • **
  • Mensajes: 54
Re: Comunicación USB con 18F4550
« Respuesta #3 en: 21 de Octubre de 2014, 15:14:47 »
Hola, Niple no me deja abrir el archivo npl, yo tengo la versión 6.0.3 y me dice que tu archivo esta en la version 5.7.2 plus
si puedes envía el archivo a la gente Niple y pídeles que lo pasen a la ultima versión, o adjunta captura de pantallas que se
puedan entender, no es lo mejor pero quizás te pueda dar una mano
saludos  :-)
"La gran sabiduría esta en sentirse satisfecho con poca cosa; quien aumenta sus riquezas aumenta sus cuidados; pero una mente contenta es un tesoro oculto a quien no alcanzan las calamidades"

Desconectado Scufflee

  • PIC10
  • *
  • Mensajes: 26
Re: Comunicación USB con 18F4550
« Respuesta #4 en: 22 de Octubre de 2014, 10:22:12 »
Lo tenía más arriba.

Diagrama Niple

De todos modos, te adjunto el archivo ASM que genera.

Código: [Seleccionar]
;------------------------------------------------------------
; Código assembler generado por Niple V5.7.2
; Proyecto: USB
; Autor: CRISTOBAL VALENCIA
; Fecha: 14-10-2014
; PIC: 18F4550
; Velocidad de reloj: 20 Mhz
; Descripcion:
;------------------------------------------------------------


 LIST    P=PIC18F4550


_PLLDIV_5_1L          equ  0xFC
_CPUDIV_OSC1_PLL2     equ  0xE7
_USBDIV_2             equ  0xFF
_FOSC_HS              equ  0xFC
_FCMEN_OFF            equ  0xBF
_IESO_OFF             equ  0x7F
_PWRT_ON              equ  0xFE
_BOR_OFF              equ  0xF9
_BORV_0               equ  0xE7
_VREGEN_ON            equ  0xFF
_WDT_OFF              equ  0xFE
_WDTPS_1              equ  0xE1
_MCLRE_ON             equ  0xFF
_LPT1OSC_OFF          equ  0xFB
_PBADEN_OFF           equ  0xFD
_CCP2MX_OFF           equ  0xFF
_LPT1OSC_OFF          equ  0xFB
_STVREN_OFF           equ  0xFE
_LVP_OFF              equ  0xFB
_ICPRT_OFF            equ  0xDF
_XINST_OFF            equ  0xBF
_DEBUG_OFF            equ  0xFF
_CP0_OFF              equ  0xFF
_CP1_OFF              equ  0xFF
_CP2_OFF              equ  0xFF
_CP3_OFF              equ  0xFF
_CPB_OFF              equ  0xFF
_CPD_OFF              equ  0xFF
_WRT0_OFF             equ  0xFF
_WRT1_OFF             equ  0xFF
_WRT2_OFF             equ  0xFF
_WRT3_OFF             equ  0xFF
_WRTB_OFF             equ  0xFF
_WRTC_OFF             equ  0xFF
_WRTD_OFF             equ  0xFF
_EBTR0_OFF            equ  0xFF
_EBTR1_OFF            equ  0xFF
_EBTR2_OFF            equ  0xFF
_EBTR3_OFF            equ  0xFF
_EBTRB_OFF            equ  0xFF
_config1l             equ  0x300000
_config1h             equ  0x300001
_config2l             equ  0x300002
_config2h             equ  0x300003
_config3h             equ  0x300005
_config4l             equ  0x300006
_config5l             equ  0x300008
_config5h             equ  0x300009
_config6l             equ  0x30000a
_config6h             equ  0x30000b
_config7l             equ  0x30000c
_config7h             equ  0x30000d

 __config _config1l, _PLLDIV_5_1L & _CPUDIV_OSC1_PLL2 & _USBDIV_2
 __config _config1h, _FOSC_HS & _FCMEN_OFF & _IESO_OFF
 __config _config2l, _PWRT_ON & _BOR_OFF & _BORV_0 & _VREGEN_ON
 __config _config2h, _WDT_OFF & _WDTPS_1
 __config _config3h, _MCLRE_ON & _LPT1OSC_OFF & _PBADEN_OFF & _CCP2MX_OFF
 __config _config4l, _STVREN_OFF & _LVP_OFF & _ICPRT_OFF & _XINST_OFF & _DEBUG_OFF
 __config _config5l, _CP0_OFF & _CP1_OFF & _CP2_OFF & _CP3_OFF
 __config _config5h, _CPB_OFF & _CPD_OFF
 __config _config6l, _WRT0_OFF & _WRT1_OFF & _WRT2_OFF & _WRT3_OFF
 __config _config6h, _WRTB_OFF & _WRTC_OFF & _WRTD_OFF
 __config _config7l, _EBTR0_OFF & _EBTR1_OFF & _EBTR2_OFF & _EBTR3_OFF
 __config _config7h, _EBTRB_OFF


;------------------------------------------------------------
;                  Declaración de Registros
;------------------------------------------------------------
w                     equ  0x0000
_np_tiempo            equ  0x0001
_np_tiempo1           equ  0x0003
_np_tiempo2           equ  0x0004
_np_tiempo3           equ  0x0005
recibir               equ  0x0008
_np_banderas          equ  0x0009
contador              equ  0x000a
uir                   equ  0x0f68
uie                   equ  0x0f69
ueir                  equ  0x0f6a
ueie                  equ  0x0f6b
ustat                 equ  0x0f6c
ucon                  equ  0x0f6d
uaddr                 equ  0x0f6e
ucfg                  equ  0x0f6f
uep0                  equ  0x0f70
uep1                  equ  0x0f71
uep2                  equ  0x0f72
uep3                  equ  0x0f73
uep4                  equ  0x0f74
uep5                  equ  0x0f75
uep6                  equ  0x0f76
uep7                  equ  0x0f77
porta                 equ  0x0f80
portb                 equ  0x0f81
portc                 equ  0x0f82
portd                 equ  0x0f83
porte                 equ  0x0f84
lata                  equ  0x0f89
latb                  equ  0x0f8a
latc                  equ  0x0f8b
latd                  equ  0x0f8c
late                  equ  0x0f8d
trisa                 equ  0x0f92
trisb                 equ  0x0f93
trisc                 equ  0x0f94
trisd                 equ  0x0f95
trise                 equ  0x0f96
adcon2                equ  0x0fc0
adcon1                equ  0x0fc1
adcon0                equ  0x0fc2
status                equ  0x0fd8
fsr2l                 equ  0x0fd9
fsr2h                 equ  0x0fda
plusw2                equ  0x0fdb
postdec2              equ  0x0fdd
postinc2              equ  0x0fde
indf2                 equ  0x0fdf
bsr                   equ  0x0fe0
fsr1l                 equ  0x0fe1
fsr1h                 equ  0x0fe2
postdec1              equ  0x0fe5
postinc1              equ  0x0fe6
indf1                 equ  0x0fe7
wreg                  equ  0x0fe8
fsr0l                 equ  0x0fe9
fsr0h                 equ  0x0fea
postdec0              equ  0x0fed
postinc0              equ  0x0fee
indf0                 equ  0x0fef
tablat                equ  0x0ff5
tblptrl               equ  0x0ff6
tblptrh               equ  0x0ff7
tblptru               equ  0x0ff8
pclath                equ  0x0ffa
stkptr                equ  0x0ffc
tosl                  equ  0x0ffd
tosh                  equ  0x0ffe
_np_uram_01           equ  0x0301
_np_uram_02           equ  0x0400
_np_uram_02a          equ  0x0401
_np_uram_02b          equ  0x0402
_np_uram_02c          equ  0x0403
_np_uram_03           equ  0x0404
_np_uram_03a          equ  0x0405
_np_uram_03b          equ  0x0406
_np_uram_03c          equ  0x0407
_np_uram_04           equ  0x0408
_np_uram_04a          equ  0x0409
_np_uram_04b          equ  0x040a
_np_uram_04c          equ  0x040b
_np_uram_05           equ  0x040c
_np_uram_05a          equ  0x040d
_np_uram_05b          equ  0x040e
_np_uram_05c          equ  0x040f
_np_uram_06           equ  0x0410
_np_uram_06b          equ  0x041b
_np_uram_06c          equ  0x041c
_np_uram_06d          equ  0x041d
_np_uram_07           equ  0x0411
_np_uram_08           equ  0x0412
_np_uram_09           equ  0x0413
_np_uram_10           equ  0x0414
_np_uram_11           equ  0x0416
_np_uram_11a          equ  0x0417
_np_uram_12           equ  0x0420
_np_uram_13           equ  0x0460
_np_uram_14           equ  0x04a0
_np_uram_14a          equ  0x04a1
_np_uram_15           equ  0x04a2
_np_uram_15a          equ  0x04a3
_np_uram_16           equ  0x04a4
_np_uram_16a          equ  0x04a5
_np_uram_17           equ  0x04b0
_np_uram_18           equ  0x04b1
_np_uram_19           equ  0x04b2
_np_uram_20           equ  0x04b3
_np_uram_21           equ  0x04b4
_np_uram_22           equ  0x04b5
_np_uram_23           equ  0x04b6
_np_uram_24           equ  0x04b7
_np_uram_25           equ  0x04b8
_np_uram_26           equ  0x04b9
_np_uram_27           equ  0x04ba
_np_uram_31           equ  0x04bb
_np_uram_28           equ  0x04bd
_np_uram_29           equ  0x04be
_np_uram_30           equ  0x04bf


;------------------------------------------------------------
;                  Declaración de Bits
;------------------------------------------------------------
actvie                equ  2   ;
actvif                equ  2   ;
adon                  equ  0   ;
c                     equ  0   ;
idleie                equ  4   ;
idleif                equ  4   ;
pktdis                equ  4   ;
ra0                   equ  0   ;
ra1                   equ  1   ;
se0                   equ  5   ;
sofie                 equ  6   ;
sofif                 equ  6   ;
stallie               equ  5   ;
stallif               equ  5   ;
suspnd                equ  1   ;
trnie                 equ  3   ;
trnif                 equ  3   ;
uerrie                equ  1   ;
uerrif                equ  1   ;
urstie                equ  0   ;
urstif                equ  0   ;
usben                 equ  3   ;
uteye                 equ  7   ;
vcfg0                 equ  4   ;
vcfg1                 equ  5   ;
z                     equ  2   ;
rx_ok                 equ  0   ;bandera de recepción de dato ok


;------------------------------------------------------------
;               Declaración de Registros EEPROM
;------------------------------------------------------------


;------------------------------------------------------------
;                        Inicio
;------------------------------------------------------------

   org 0x00
   goto paso2
   org 0x20

descriptor
   db 0x12,0x01
   db 0x00,0x02
   db 0x00,0x00
   db 0x00,0x08
   db 0xd8,0x04
   db 0x0a,0x00
   db 0x02,0x00
   db 0x01,0x02
   db 0x00,0x01
configuracion
   db 0x09,0x02
   db 0x29,0x00
   db 0x01,0x01
   db 0x00,0xc0
   db 0x32,0x09
   db 0x04,0x00
   db 0x00,0x02
   db 0x03,0x00
   db 0x00,0x00
class_hid
   db 0x09,0x21
   db 0x11,0x01
   db 0x00,0x01
   db 0x22,0x1d
   db 0x00,0x07
   db 0x05,0x81
   db 0x03,0x40
   db 0x00,0x0a
   db 0x07,0x05
   db 0x01,0x03
   db 0x40,0x00
   db 0x01,0x04
string0
   db 0x03,0x09
   db 0x04,0x04
string1
   db 0x03,0x30
   db 0x00,0x18
string2
   db 0x03,.85
   db 0x00,.83
   db 0x00,.66
   db 0x00,.32
   db 0x00,.32
   db 0x00,.32
   db 0x00,.32
   db 0x00,.32
   db 0x00,.32
   db 0x00,.32
   db 0x00,.32
report
   db 0x00,0x06
   db 0x00,0xff
   db 0x09,0x01
   db 0xa1,0x01
   db 0x19,0x01
   db 0x29,0x40
   db 0x15,0x00
   db 0x26,0xff
   db 0x00,0x75
   db 0x08,0x95
   db 0x40,0x81
   db 0x00,0x19
   db 0x01,0x29
   db 0x40,0x91
   db 0x00,0xc0
   db 0x32,0x00
   db 0x32,0x00
   db 0x5b,0x00
   db 0x5f,0x00
   db 0x63,0x00



;------------------------------------------------------------
;                      programa principal
;------------------------------------------------------------
paso2
   movlb .0                         ;cambiar al banco 0
   clrf _np_tiempo,1
   clrf _np_tiempo1,1
   clrf _np_tiempo2,1
   clrf _np_tiempo3,1
   clrf recibir,1
   clrf _np_banderas,1
   clrf contador,1
   clrf porta,0
   clrf porte,0
   movlw b'00000000'                ;configurar el puerto e como xxxxxsss
   movwf trise,0
   movlw b'00000000'                ;configurar el puerto a como xxssssss
   movwf trisa,0
   movlw b'00001111'                ;puerto a/e = e/s digital
   movwf adcon1,0
   clrf portb,0
   movlw b'00000000'                ;configurar el puerto b como ssssssss
   movwf trisb,0
   movlw b'00110000'                ;configurar el puerto c como sseexsss
   movwf trisc,0
   movlw b'00000010'                ;configurar el puerto d como sssssses
   movwf trisd,0
   bsf porta,ra0,0
   movlw .50                        ;temporizador 100 ms
   call tmp_100_mc                  ;llamada a rutina tmp_100_mc
   btfss ucfg,4,0
   call usb_ini                     ;llamada a rutina usb_ini
paso7_a
   movlb .0
   call usb_a                       ;llamada a rutina usb_a
   movlb .4
   movf _np_uram_20,w,1
   xorlw .6
   btfss status,z,0
   goto paso7_a
   movlb .0
   bsf porta,ra1,0
inicio
paso10
   movlb 0x00
   bcf _np_banderas,rx_ok,1
   call usb_rx                      ;llamada a rutina usb_rx
   movlb 0x04
   movf _np_uram_26,w,1
   btfsc status,z,0
   goto paso10_no
   movlb 0x00
   movlw 0x03
   movwf fsr0h,0
   movlw 0x01
   movwf fsr0l,0
   movf postinc0,w,0
   movwf recibir,1
   bsf _np_banderas,rx_ok,1
paso10_no
   movlb 0x00
   btfss _np_banderas,rx_ok,1       ;si el -bit, rx_ok = 0
   goto paso10
   ;escribir en el puerto b
   movf recibir,w,1
   movwf portb,0

   movlw d'1'                       ;sumar a 8 bits (contador = contador + d'1')
   addwf contador,1,1

   movf contador,w,1                ;si el -reg(08), contador  = d'10',
   xorlw d'10'
   btfss status,z,0
   goto inicio
   call usb_a                       ;llamada a rutina usb_a
   goto inicio
   goto inicio


;------------------------------------------------------------
;                  Declaración de Subrutinas
;------------------------------------------------------------

usb
usb_ini
   movlw 0x01
   movwf fsr0h,0
   clrf fsr0l,0
   clrf fsr1h,0
   clrf fsr1l,0
   clrf fsr2h,0
   clrf fsr2l,0
   clrf tblptru,0
usb_ini_a
   clrf postinc0,0
   btfss fsr0h,3,0
   goto usb_ini_a
   movlb 0x04
   movlw b'00010100'
   movwf ucfg,0
   clrf _np_uram_20,1
   clrf _np_uram_21,1
   clrf _np_uram_22,1
   movlb .0                         ;cambiar al banco 0
   return
usb_tx
   movlb 0x04
   btfsc _np_uram_05,7,1
   goto usb_tx
   movlw 0x40
   movwf _np_uram_05a,1
   clrf _np_uram_27,1
usb_tx_a
   movlw 0x40
   cpfslt _np_uram_27,1
   goto usb_tx_b
   movf _np_uram_27,w,1
   addlw low _np_uram_01
   movwf fsr0l,0
   movlw high _np_uram_01
   movwf fsr0h,0
   movf indf0,w,0
   movwf postinc1,0
   movf _np_uram_27,w,1
   addlw low _np_uram_13
   movwf fsr0l,0
   movlw high _np_uram_13
   movwf fsr0h,0
   movf postdec1,1,0
   movf indf1,w,0
   movwf indf0,0
   incf _np_uram_27,1,1
   goto usb_tx_a
usb_tx_b
   movlw 0x40
   andwf _np_uram_05,1,1
   btg _np_uram_05,6,1
   movlw 0x88
   iorwf _np_uram_05,1,1
   movlb 0x00
   return
usb_rx
   movlb 0x04
   clrf _np_uram_26,1
   movlw 0x40
   movwf _np_uram_27,1
   btfsc _np_uram_04,7,1
   goto usb_rx_d
   movf _np_uram_27,w,1
   cpfsgt _np_uram_05a,1
   goto usb_rx_a
   movff _np_uram_04a,_np_uram_27
usb_rx_a
   clrf _np_uram_26,1
usb_rx_b
   movf _np_uram_27,w,1
   cpfslt _np_uram_26,1
   goto usb_rx_c
   movf _np_uram_26,w,1
   addlw low _np_uram_12
   movwf fsr0l,0
   movlw high _np_uram_12
   movwf fsr0h,0
   movf indf0,w,0
   movwf postinc1,0
   movf _np_uram_26,w,1
   addlw low _np_uram_01
   movwf fsr0l,0
   movlw high _np_uram_01
   movwf fsr0h,0
   movf postdec1,1,0
   movf indf1,w,0
   movwf indf0,0
   incf _np_uram_26,1,1
   goto usb_rx_b
usb_rx_c
   movlw 0x40
   movwf _np_uram_04a,1
   andwf _np_uram_04,1,1
   btg _np_uram_04,6,1
   movlw 0x88
   iorwf _np_uram_04,1,1
usb_rx_d
   movf _np_uram_26,w,1
usb_rx_s
   movlb 0x00
   return
usb_a
   call usb_b                       ;llamada a rutina usb_b
   btfss ucfg,uteye,0
   call usb_e                       ;llamada a rutina usb_e
   movlb 0x00
   return
usb_b
   movlb 0x04
   btfss ucon,usben,0
   call usb_c                       ;llamada a rutina usb_c
   goto usb_b_a
   btfsc ucon,usben,0
   call usb_e_d                     ;llamada a rutina usb_e_d
usb_b_a
   decf _np_uram_20,w,1
   bnz usb_b_s
   btfsc ucon,se0,0
   goto usb_b_s
   clrf uir,0
   clrf uie,0
   bsf uie,urstie,0
   bsf uie,idleie,0
   movlw 0x02
   movwf _np_uram_20,1
usb_b_s
   return
usb_c
   movlb 0x04
   clrf ucon,0
   clrf uie,0
   bsf ucon,usben,0
   movlw 0x01
   movwf _np_uram_20,1
   return
usb_d
   movlb 0x04
   clrf ucon,0
   clrf uie,0
   clrf _np_uram_20,1
   return
usb_e
   movlb 0x04
   movlw 0x00
   subwf _np_uram_20,w,1
   bz usb_e_s
   btfss uir,actvif,0
   goto usb_e_a
   btfsc uie,actvie,0
   call usb_g                       ;llamada a rutina usb_g
usb_e_a
   btfsc ucon,suspnd,0
   return
   btfss uir,urstif,0
   goto usb_e_b
   btfsc uie,urstie,0
   call usb_l                       ;llamada a rutina usb_l
usb_e_b
   btfss uir,idleif,0
   goto usb_e_c
   btfsc uie,idleie,0
   call usb_f                       ;llamada a rutina usb_f
usb_e_c
   btfss uir,sofif,0
   goto usb_e_d
   btfsc uie,sofie,0
   call usb_i                       ;llamada a rutina usb_i
usb_e_d
   btfss uir,stallif,0
   goto usb_e_e
   btfsc uie,stallie,0
   call usb_j                       ;llamada a rutina usb_j
usb_e_e
   btfss uir,uerrif,0
   goto usb_e_f
   btfsc uie,uerrie,0
   call usb_k                       ;llamada a rutina usb_k
usb_e_f
   movlw 0x03
   subwf _np_uram_20,w,1
   bnc usb_e_s
usb_e_g
   clrf _np_uram_31,1
   movlw 0x04
   subwf _np_uram_31,w,1
   bc usb_e_s
   btfss uir,trnif,0
   goto usb_e_s
   btfss uie,trnie,0
   goto usb_e_s
   call usb_n                       ;llamada a rutina usb_n
   nop
   iorlw .00
   bnz usb_e_h
   bcf uir,trnif,0
usb_e_h
   incf _np_uram_31,1,1
   goto usb_e_g
usb_e_s
   return
usb_f
   bsf uie,actvie,0
   bcf uir,idleif,0
   bsf ucon,suspnd,0
   return
usb_g
   bcf ucon,suspnd,0
   bcf uie,actvie,0
usb_g_a
   btfss uir,actvif,0
   goto usb_g_s
   bcf uir,actvif,0
   goto usb_g_a
usb_g_s
   return
usb_i
   bcf uir,sofif,0
   return
usb_j
   movlb 0x0f
   btfss uep0,0,0
   goto usb_j_b
   movlb 0x04
   movlw 0x80
   subwf _np_uram_02,w,1
   bnz usb_j_a
   movlw 0x84
   subwf _np_uram_03,w,1
   bnz usb_j_a
   movlw 0x8c
   movwf _np_uram_02,1
usb_j_a
   movlb 0x0f
   bcf uep0,0,0
usb_j_b
   bcf uir,stallif,0
usb_j_s
   return
usb_k
   movlb 0x0f
   clrf ueir,0
   return
usb_l
   movlb 0x0f
   movlw b'10011111'
   movwf ueie,0
   movlw b'01111011'
   movwf uie,0
   clrf ueir,0
   clrf uir,0
   clrf uaddr,0
   clrf uep1,0
   clrf uep2,0
   clrf uep3,0
   clrf uep4,0
   clrf uep5,0
   clrf uep6,0
   clrf uep7,0
   movlw 0x16
   movwf uep0,0
usb_l_a
   btfss uir,trnif,0
   goto usb_l_b
   bcf uir,trnif,0
   nop
   nop
   nop
   nop
   nop
   nop
   goto usb_l_a
usb_l_b
   bcf ucon,pktdis,0
   call usb_m                       ;llamada a rutina usb_m
   movlb 0x04
   bcf _np_uram_21,0,1
   clrf _np_uram_22,1
   movlw 0x03
   movwf _np_uram_20,1
   return
usb_m
   movlb 0x04
   clrf _np_uram_17,1
   movlw 0x08
   movwf _np_uram_02a,1
   movlw low _np_uram_06
   movwf _np_uram_02b,1
   movlw high _np_uram_06
   movwf _np_uram_02c,1
   movlw 0x8c
   movwf _np_uram_02,1
   clrf _np_uram_03,1
   return
usb_n
   movlb 0x04
   movlw 0x00
   cpfseq ustat,0
   goto usb_n_c
   bcf uir,trnif,0
   movf _np_uram_02,w,1
   andlw b'00111100'
   rrncf wreg,1,0
   rrncf wreg,1,0
   sublw b'00001101'
   bnz usb_n_a
   call usb_o                       ;llamada a rutina usb_o
   goto usb_n_b
usb_n_a
   call usb_p                       ;llamada a rutina usb_p
usb_n_b
   goto usb_n_e
usb_n_c
   movlw 0x04
   cpfseq ustat,0
   goto usb_n_d
   bcf uir,trnif,0
   call usb_q                       ;llamada a rutina usb_q
   goto usb_n_e
usb_n_d
   retlw 0x00
usb_n_e
   retlw 0x01
usb_o
   movlb 0x04
   btfsc _np_uram_03,7,1
   clrf _np_uram_03,1
   clrf _np_uram_16,1
   clrf _np_uram_16a,1
   clrf _np_uram_17,1
   clrf _np_uram_18,1
   clrf _np_uram_19,1
   call usb_v                       ;llamada a rutina usb_v
   movlw 0x00
   cpfseq _np_uram_18,1
   goto usb_o_a
   call usb_u                       ;llamada a rutina usb_u
usb_o_a
   call usb_t                       ;llamada a rutina usb_t
   return
usb_p
   movlb 0x04
   movlw 0x02
   cpfseq _np_uram_17,1
   goto usb_p_a
   call usb_r                       ;llamada a rutina usb_r
   movlw 0xc8
   btfsc _np_uram_02,6,1
   movlw 0x88
   movwf _np_uram_02,1
   goto usb_p_s
usb_p_a
   call usb_m                       ;llamada a rutina usb_m
usb_p_s
   return
usb_q
   movlb 0x04
   movlw 0x04
   cpfseq _np_uram_20,1
   goto usb_q_a
   movf _np_uram_08,w,1
   movlb 0x0f
   movwf uaddr,0
   movlw 0x05
   btfsc status,z,0
   movlw 0x03
   movlb 0x04
   movwf _np_uram_20,1
usb_q_a
   movlw 0x01
   cpfseq _np_uram_17,1
   goto usb_q_c
   call usb_s                       ;llamada a rutina usb_s
   movlw 0x02
   cpfseq _np_uram_17,1
   goto usb_q_b
   movlw 0x84
   movwf _np_uram_03,1
   goto usb_q_s
usb_q_b
   movlw 0xc8
   btfsc _np_uram_03,6,1
   movlw 0x88
   movwf _np_uram_03,1
   goto usb_q_s
usb_q_c
   call usb_m                       ;llamada a rutina usb_m
usb_q_s
   return
usb_r
   movlb high 0x04
   movf _np_uram_02a,w,1
   movwf _np_uram_28,1
   addwf _np_uram_16,1,1
   movf _np_uram_02,w,1
   andlw 0x03
   movwf _np_uram_29,1
   addwfc _np_uram_16a,1,1
   lfsr 1,_np_uram_29
   movff _np_uram_15,fsr2l
   movff _np_uram_15a,fsr2h
   movf _np_uram_29,w,1
   bnz usb_r_a
   movf _np_uram_28,w,1
   bnz usb_r_s
usb_r_a
   movff postinc1,postinc2
   decf _np_uram_28,1,1
   bnz usb_r_a
   decf _np_uram_29,1,1
   bc usb_r_a
   movff fsr2l,_np_uram_15
   movff fsr2h,_np_uram_15a
usb_r_s
   return
usb_s
   movff fsr2l,postinc1
   movff fsr1l,fsr2l
   movlw 0x02
   addwf fsr1l,1,0
   movlb 0x04
   movlw low 0x08
   subwf _np_uram_16,w,1
   movlw high 0x08
   subwfb _np_uram_16a,w,1
   bc usb_s_b
   movff _np_uram_16,postinc2
   movff _np_uram_16a,postdec2
   movf _np_uram_19,w,1
   bnz usb_s_a
   movlw 0x01
   movwf _np_uram_19,1
   goto usb_s_c
usb_s_a
   decf _np_uram_19,w,1
   bnz usb_s_c
   movlw 0x02
   movwf _np_uram_19,1
   goto usb_s_c
usb_s_b
   movlw 0x08
   movwf postinc2,0
   clrf postdec2,0
usb_s_c
   bcf _np_uram_03,1,1
   bcf _np_uram_03,0,1
   movlw 0x01
   movf plusw2,w,0
   iorwf _np_uram_03,1,1
   movff indf2,_np_uram_03a
   movf plusw2,w,0
   subwf _np_uram_16,1,1
   movlw 0x01
   movf plusw2,w,0
   subwfb _np_uram_16a,1,1
   movlw low _np_uram_29
   movwf _np_uram_15,1
   movlw high _np_uram_29
   movwf _np_uram_15a,1
   btfss _np_uram_21,1,1
   goto usb_s_e
usb_s_d
   movff fsr2l,fsr0l
   movff fsr2h,fsr0h
   movf postinc0,w,0
   iorwf postdec0,w,0
   bz usb_s_f
   movff _np_uram_14,tblptrl
   movff _np_uram_14a,tblptrh
   tblrd*
   movf tablat,w,0
   movff _np_uram_15,fsr0l
   movff _np_uram_15a,fsr0h
   movwf indf0,0
   incf _np_uram_15,1,1
   movlw 0x00
   addwfc _np_uram_15a,1,1
   incf _np_uram_14,1,1
   addwfc _np_uram_14a,1,1
   decf indf2,1,0
   movlw 0x01
   bc usb_s_d
   decf plusw2,1,0
   goto usb_s_d
usb_s_e
   movff fsr2l,fsr0l
   movff fsr2h,fsr0h
   movf postinc0,w,0
   iorwf postdec0,w,0
   bz usb_s_f
   movff _np_uram_14,fsr0l
   movff _np_uram_14a,fsr0h
   movf indf0,w,0
   movff _np_uram_15,fsr0l
   movff _np_uram_15a,fsr0h
   movwf indf0,0
   incf _np_uram_15,1,1
   movlw 0x00
   addwfc _np_uram_15a,1,1
   incf _np_uram_14,1,1
   addwfc _np_uram_14a,1,1
   decf indf2,1,0
   movlw 0x01
   bc usb_s_e
   decf plusw2,1,0
   goto usb_s_e
usb_s_f
   movlw 0x02
   subwf fsr1l,w,0
   bc usb_s_g
   clrf fsr1l,0
   movf postdec1,1,0
usb_s_g
   movwf fsr1l,0
   movf postdec1,1,0
   movff indf1,fsr2l
   nop
   return
usb_t
   movlb 0x04
   bcf ucon,pktdis,0
   movlw 0x00
   cpfseq _np_uram_18,1
   goto usb_t_a
   movlw 0x08
   movwf _np_uram_02a,1
   movlw low _np_uram_06
   movwf _np_uram_02b,1
   movlw high _np_uram_06
   movwf _np_uram_02c,1
   movlw 0x84
   movwf _np_uram_02,1
   movwf _np_uram_03,1
   goto usb_t_s
usb_t_a
   btfss _np_uram_06,7,1
   goto usb_t_c
   movf _np_uram_16,w,1
   subwf _np_uram_11,w,1
   movf _np_uram_16a,w,1
   subwfb _np_uram_11a,w,1
   bc usb_t_b
   movff _np_uram_11,_np_uram_16
   movff _np_uram_11a,_np_uram_16a
usb_t_b
   call usb_s                       ;llamada a rutina usb_s
   movlw 0x01
   movwf _np_uram_17,1
   movlw 0x08
   movwf _np_uram_02a,1
   movlw low _np_uram_06
   movwf _np_uram_02b,1
   movlw high _np_uram_06
   movwf _np_uram_02c,1
   movlw 0x80
   movwf _np_uram_02,1
   movlw low _np_uram_29
   movwf _np_uram_03b,1
   movlw high _np_uram_29
   movwf _np_uram_03c,1
   movlw 0xc8
   movwf _np_uram_03,1
   goto usb_t_s
usb_t_c
   movlw 0x02
   movwf _np_uram_17,1
   clrf _np_uram_03a,1
   movlw 0xc8
   movwf _np_uram_03,1
   movlw 0x08
   movwf _np_uram_02a,1
   movlw low _np_uram_29
   movwf _np_uram_02b,1
   movlw high _np_uram_29
   movwf _np_uram_02c,1
   movlw 0xc8
   movwf _np_uram_02,1
usb_t_s
   return
usb_u
   movlb 0x04
   movf _np_uram_06,w,1
   andlw 0x1f
   sublw 0x01
   bnz usb_u_s
   movlw 0x00
   cpfseq _np_uram_10,1
   goto usb_u_s
   movlw 0x06
   cpfseq _np_uram_07,1
   goto usb_u_e
   movlw 0x21
   cpfseq _np_uram_09,1
   goto usb_u_b
   movlw 0x02
   movwf _np_uram_18,1
   movlw 0x01
   cpfseq _np_uram_22,1
   goto usb_u_a
   movlw 0x44
   movwf _np_uram_14,1
   clrf _np_uram_14a,1
usb_u_a
   movlw 0x09
   movwf _np_uram_16,1
   clrf _np_uram_16a,1
   goto usb_u_d
usb_u_b
   movlw 0x22
   cpfseq _np_uram_09,1
   goto usb_u_d
   movlw 0x02
   movwf _np_uram_18,1
   movlw 0x01
   cpfseq _np_uram_22,1
   goto usb_u_c
   movlw 0x7b
   movwf _np_uram_14,1
   clrf _np_uram_14a,1
usb_u_c
   movlw 0x01
   cpfseq _np_uram_22,1
   goto usb_u_d
   movlw 0x1d
   movwf _np_uram_16,1
   clrf _np_uram_16a,1
usb_u_d
   bsf _np_uram_21,1,1
usb_u_e
   movf _np_uram_06,1
   andlw b'01100000'
   rrncf wreg,1,0
   rrncf wreg,1,0
   rrncf wreg,1,0
   rrncf wreg,1,0
   rrncf wreg,1,0
   sublw 0x01
   bnz usb_u_s
   movlw 0x02
   cpfseq _np_uram_07,1
   goto usb_u_f
   movlw 0x02
   movwf _np_uram_18,1
   movlw low _np_uram_24
   movwf _np_uram_14,1
   movlw high _np_uram_24
   movwf _np_uram_14a,1
   bcf _np_uram_21,1,1
   movlw 0x01
   movwf _np_uram_16,1
   goto usb_u_s
usb_u_f
   movlw 0x0a
   cpfseq _np_uram_07,1
   goto usb_u_g
   movlw 0x02
   movwf _np_uram_18,1
   movff _np_uram_06c,_np_uram_24
   goto usb_u_s
usb_u_g
   movlw 0x03
   cpfseq _np_uram_07,1
   goto usb_u_h
   movlw 0x02
   movwf _np_uram_18,1
   movlw low _np_uram_25
   movwf _np_uram_14,1
   movlw high _np_uram_25
   movwf _np_uram_14a,1
   bcf _np_uram_21,1,1
   movlw 0x01
   movwf _np_uram_16,1
   goto usb_u_s
usb_u_h
   movlb 0x0b
   cpfseq _np_uram_07,1
   goto usb_u_s
   movlw 0x02
   movwf _np_uram_18,1
   movff _np_uram_06b,_np_uram_25
usb_u_s
   return
usb_v
   movlb 0x04
   movf _np_uram_06,w,1
   andlw b'01100000'
   rrncf wreg,1,0
   rrncf wreg,1,0
   rrncf wreg,1,0
   rrncf wreg,1,0
   rrncf wreg,1,0
   iorlw 0x00
   bz usb_v_a
   goto usb_v_s
usb_v_a
   movlw 0x05
   cpfseq _np_uram_07,1
   goto usb_v_b
   movlw 0x01
   movwf _np_uram_18,1
   movlw 0x04
   movwf _np_uram_20,1
   goto usb_v_s
usb_v_b
   movlw 0x06
   cpfseq _np_uram_07,1
   goto usb_v_c
   call usb_w                       ;llamada a rutina usb_w
   goto usb_v_s
usb_v_c
   movlw 0x09
   cpfseq _np_uram_07,1
   goto usb_v_d
   call usb_x                       ;llamada a rutina usb_x
   goto usb_v_s
usb_v_d
   movlw 0x08
   cpfseq _np_uram_07,1
   goto usb_v_e
   movlw 0x01
   movwf _np_uram_18,1
   movlw low _np_uram_22
   movwf _np_uram_14,1
   movlw high _np_uram_22
   movwf _np_uram_14a,1
   bcf _np_uram_21,1,1
   movlw 0x01
   movwf _np_uram_16,1
   clrf _np_uram_16a,1
   goto usb_v_s
usb_v_e
   movlw 0x00
   cpfseq _np_uram_07,1
   goto usb_v_f
   call usb_z                       ;llamada a rutina usb_z
   goto usb_v_s
usb_v_f
   movlw 0x01
   cpfseq _np_uram_07,1
   goto usb_v_g
   call usb_aa                      ;llamada a rutina usb_aa
   goto usb_v_s
usb_v_g
   movlw 0x03
   cpfseq _np_uram_07,1
   goto usb_v_h
   call usb_aa                      ;llamada a rutina usb_aa
   call usb_v_s                     ;llamada a rutina usb_v_s
usb_v_h
   movlw 0x0a
   cpfseq _np_uram_07,1
   goto usb_v_i
   movlw 0x01
   movwf _np_uram_18,1
   movf _np_uram_10,w,1
   movwf _np_uram_14,1
   clrf _np_uram_14a,1
   movlw low _np_uram_23
   addwf _np_uram_14,1,1
   movlw high _np_uram_23
   addwfc _np_uram_14a,1,1
   bcf _np_uram_21,1,1
   movlw 0x01
   movwf _np_uram_16,1
   clrf _np_uram_16a,1
   goto usb_v_s
usb_v_i
   movlw 0x0b
   cpfseq _np_uram_07,1
   goto usb_v_j
   movlw 0x01
   movwf _np_uram_18,1
   movf _np_uram_10,w,1
   clrf fsr0h,0
   addlw low _np_uram_23
   movwf fsr0l,0
   movlw high _np_uram_23
   addwfc fsr0h,1,0
   movff _np_uram_08,indf0
   goto usb_v_s
usb_v_j
   movlw 0x07
   cpfseq _np_uram_07,1
   goto usb_v_k
   goto usb_v_s
usb_v_k
   movlw 0x0c
   cpfseq _np_uram_07,1
usb_v_s
   return
usb_w
   movlb 0x04
   movlw 0x80
   subwf _np_uram_06,w,1
   bnz usb_w_s
usb_w_a
   movlw 0x01
   cpfseq _np_uram_09,1
   goto usb_w_b
   movlw 0x01
   movwf _np_uram_18,1
   movlw low descriptor
   movwf _np_uram_14,1
   movlw high descriptor
   movwf _np_uram_14a,1
   movlw 0x12
   movwf _np_uram_16,1
   clrf _np_uram_16a,1
   goto usb_w_d
usb_w_b
   movlw 0x02
   cpfseq _np_uram_09,1
   goto usb_w_c
   movlw 0x01
   movwf _np_uram_18,1
   movlw low configuracion
   movwf _np_uram_14,1
   movlw high configuracion
   movwf _np_uram_14a,1
   movff _np_uram_14,tblptrl
   movff _np_uram_14a,tblptrh
   clrf tblptru,0
   tblrd*+
   movff tablat,_np_uram_16
   tblrd*-
   movff tablat,_np_uram_16a
   goto usb_w_d
usb_w_c
   movlw 0x03
   cpfseq _np_uram_09,1
   goto usb_w_s
   movlw 0x01
   movwf _np_uram_18,1
   rlncf _np_uram_08,w,1
   addlw 0x9c
   movwf tblptrl,0
   clrf tblptrh,0
   tblrd*+
   movff tablat,_np_uram_14
   tblrd*-
   movff tablat,_np_uram_14a
   movff _np_uram_14,tblptrl
   movff _np_uram_14a,tblptrh
   tblrd*
   movf tablat,w,0
   movwf _np_uram_16,1
   clrf _np_uram_16a,1
usb_w_d
   bsf _np_uram_21,1,1
usb_w_s
   return
usb_x
   movlb 0x04
   movlw 0x01
   movwf _np_uram_18,1
   movlw 0x0f
   movwf postinc1,0
   movlw low uep1
   movwf postinc1,0
   movlw high uep1
   movwf postinc1,0
   call usb_y                       ;llamada a rutina usb_y
   movf postdec1,1,0
   movf postdec1,1,0
   movf postdec1,1,0
   movlw 0x01
   movwf postinc1,0
   movlw low _np_uram_23
   movwf postinc1,0
   movlw high _np_uram_23
   movwf postinc1,0
   call usb_y                       ;llamada a rutina usb_y
   movf postdec1,1,0
   movf postdec1,1,0
   movf postdec1,1,0
   movff _np_uram_08,_np_uram_22
   movf _np_uram_08,w,1
   goto usb_x_a
   movlw 0x05
   movwf _np_uram_20,1
   goto usb_x_s
usb_x_a
   movlw 0x06
   movwf _np_uram_20,1
   call usb_ab                      ;llamada a rutina usb_ab
usb_x_s
   return
usb_y
   movff fsr2l,postinc1
   movff 0x01,fsr2l
   movlw low tosl
   movff plusw2,fsr0l
   movlw low tosh
   movff plusw2,fsr0h
usb_y_a
   movlw low stkptr
   movf plusw2,w,0
   bz usb_y_s
   clrf postinc0,0
   movlw low stkptr
   decf plusw2,1,0
   goto usb_y_a
usb_y_s
   movf postdec1,1,0
   movff indf1,fsr2l
   return
usb_z
   movlb 0x04
   clrf _np_uram_29,1
   clrf _np_uram_30,1
   movf _np_uram_06,w,1
   andlw 0x1f
   bz usb_z_a
   movlw 0x01
   movwf _np_uram_18,1
   bsf _np_uram_29,0,1
   btfss _np_uram_21,0,1
   bsf _np_uram_29,1,1
   bz usb_z_c
usb_z_a
   movf _np_uram_06,w,1
   andlw 0x1f
   sublw 0x01
   bnz usb_z_b
   movlw 0x01
   movwf _np_uram_18,1
   goto usb_z_c
usb_z_b
   movf _np_uram_06,w,1
   andlw 0x1f
   sublw 0x02
   bnz usb_z_c
   movlw 0x01
   movf _np_uram_18,w,1
   movlw 0x02
   movwf fsr0h,0
   movwf _np_uram_15a,1
   movf _np_uram_06d,w,1
   andlw 0x0f
   movwf _np_uram_15,1
   swapf _np_uram_15,1,1
   rrncf _np_uram_15,w,1
   btfsc _np_uram_06d,7,1
   andlw 0x04
   movwf fsr0l,0
   movwf _np_uram_15,1
   movf indf0,w,0
   andlw 0x04
   bz usb_z_c
   movlw 0x01
   movwf _np_uram_29,1
usb_z_c
   movlw 0x01
   cpfseq _np_uram_18,1
   goto usb_z_s
   movlw low _np_uram_29
   movwf _np_uram_14,1
   movlw high _np_uram_29
   movwf _np_uram_14a,1
   bcf _np_uram_21,1,1
   movlw 0x02
   movwf _np_uram_16,1
   clrf _np_uram_16a,1
usb_z_s
   return
usb_aa
   movlb 0x04
   decf _np_uram_08,w,1
   bnz usb_aa_b
   movf _np_uram_06,w,1
   andlw 0x1f
   iorlw 0x00
   bnz usb_aa_b
   movlw 0x01
   movwf _np_uram_18,1
   movlw 0x03
   subwf _np_uram_07,w,1
   bnz usb_aa_a
   bsf _np_uram_21,0,1
   goto usb_aa_b
usb_aa_a
   bcf _np_uram_21,0,1
usb_aa_b
   movf _np_uram_08,w,1
   bnz usb_aa_s
   movf _np_uram_06,w,1
   andlw 0x1f
   sublw 0x02
   bnz usb_aa_s
   movf _np_uram_06d,w,1
   andlw 0x0f
   iorlw 0x00
   bz usb_aa_s
   movlw 0x01
   movwf _np_uram_18,1
   movlw 0x02
   movwf fsr0h,0
   movwf _np_uram_15a,1
   movf _np_uram_06d,w,1
   andlw 0x0f
   movwf _np_uram_15,1
   swapf _np_uram_15,1,1
   rrncf _np_uram_15,w,1
   btfsc _np_uram_06d,7,1
   addlw 0x04
   movwf fsr0l,0
   movwf _np_uram_15,1
   movlw 0x03
   subwf _np_uram_07,w,1
   bnz usb_aa_c
   movlw 0x84
   movwf indf0,0
   goto usb_aa_s
usb_aa_c
   btfss _np_uram_06,7,1
   goto usb_aa_d
   movlw 0x40
   movff _np_uram_15,fsr0l
   movff _np_uram_15a,fsr0h
   movwf indf0,0
   goto usb_aa_s
usb_aa_d
   movlw 0x88
   movff _np_uram_15,fsr0l
   movff _np_uram_15a,fsr0h
   movwf indf0,0
usb_aa_s
   return
usb_ab
   movlb 0x04
   clrf _np_uram_26,1
   movlb 0x0f
   movlw 0x1e
   movwf uep1,0
   movlb 0x04
   movlw 0x40
   movwf _np_uram_04a,1
   movlw low _np_uram_12
   movwf _np_uram_04b,1
   movlw high _np_uram_12
   movwf _np_uram_04c,1
   movlw 0x88
   movwf _np_uram_04,1
   movlw low _np_uram_13
   movwf _np_uram_05b,1
   movlw high _np_uram_13
   movwf _np_uram_05c,1
   movlw 0x40
   movwf _np_uram_05,1
   return

tmp_100_mc
   movwf _np_tiempo,1
   goto tmp_100_mc_1
tmp_100_mc_bucle2
   nop
   nop
   nop
   nop
   nop
   nop
   nop
tmp_100_mc_1
   movlw .22
   movwf _np_tiempo1,1
tmp_100_mc_bucle1
   movlw .150
   movwf _np_tiempo2,1
tmp_100_mc_bucle
   decfsz _np_tiempo2,1,1
   goto tmp_100_mc_bucle
   decfsz _np_tiempo1,1,1
   goto tmp_100_mc_bucle1
   nop
   decfsz _np_tiempo,1,1
   goto tmp_100_mc_bucle2
   return

 End
« Última modificación: 22 de Octubre de 2014, 14:20:19 por Scufflee »