TODOPIC
Microcontroladores PIC => - Niple - => Mensaje iniciado por: Scufflee 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 (http://www.todopic.com.ar/foros/imgtiny/20kruhi.jpg)
Error en ISIS (http://www.todopic.com.ar/foros/imgtiny/1zd6nnk.jpg)
-
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!!
-
Ahí está, saludos.
Archivo NPL (http://www.mediafire.com/download/yh5dk87szpi76vc/USB.NPL)
-
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 :-)
-
Lo tenía más arriba.
Diagrama Niple (http://www.todopic.com.ar/foros/imgtiny/20kruhi.jpg)
De todos modos, te adjunto el archivo ASM que genera.
;------------------------------------------------------------
; 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