Vous êtes sur la page 1sur 22

;=============================================================================== =================== ; ; FIRMWARE DE DEPURACIN DEL PROCESO DE ENUMERACIN ; EN UN PI C 18F4550 ; ;------------------------------------------------------------------------------------------------;NOTAS ENUMERA 64 bytes 1.

0 ; ; ; ; FSR1H = 0x05 (en el banco 5 Endpoints) ; FSR0H = 0x04 (en el banco 4 Buffer Descriptors) ; ; TRONIX ; Csar Gonzlez ; Gero Molina ; tronix.inventos@gmail.com ; ;------------------------------------------------------------------------------------------------; ;=============================================================================== =================== list p=18f4553 #include <p18f4553.inc> ;=============================================================================== =================== ; ;Declaracin de variables ; cblock 0x10 ;RAM para demoras M1 s que carga los valores iniciales de demora M2 cont1 e decrementan n la subrutina demora cont2 cont3 ;RAM USB USB_Estado USB_Estado1 Estado del proceso de enumeracin USBreset USBerror USBtrans USBrequest usb_address tablecer UADDR en un IN Token USBin USBout USBstall USBsof USBrecipiente auxUSTAT ; ; Registro

Contadores que s

;hasta ser 0

Byte de identificacin del

Auxiliar para es

Byte para respal

dar USTAT PID_byte ts PID n_ByteCount e Count IN USB_config dato_h dato_l datoEP1L datoEP1H index_ini index_end ;Endpoits ep00 del Endpoint 0 out ep01 ep02 ep03 ep04 ep05 ep06 ep07 ;Buffer Descriptors bd00 de los Buffer Descriptors 0 In/Out bd01 bd02 bd03 ;RAM para banderas bandera flag endc ;Declaracin de bits ;Bits del registro "bandera" ;Bits del registro "flag"

; ;

Byte para los bi Nmero para el Byt

Bytes de lectura

Bytes de lectura

;=============================================================================== ================== ; ;Descriptores ; ;Device Descriptors org 0x1100 data 0x12,0x01,0x00,0x02,0x00,0x00,0x00,0x40,0x34,0x12,0x01,0x00,0x01,0x 00,0x01,0x02 ;0-30 data 0x00,0x01

;Configuration Descriptors org 0x1200 data 0x09,0x02,0x29,0x00,0x01,0x01,0x00,0xC0,0x32,0x09,0x04,0x00,0x00,0x 01,0x03,0x00 data 0x00,0x00,0x09,0x21,0x01,0x01,0x00,0x01,0x22,0x2F,0x00,0x07,0x05,0x 81,0x03,0x02 ;32-62 data 0x00,0x01,0x07,0x05,0x01,0x03,0x02,0x00,0x01 ;64-94 ;String Descriptors org 0x1300 data 0x04,0x03,0x09,0x04,0x20,0x03,'U',0x00,'D',0x00,'A',0x00,' ',0x00,' ;0-30 data 'l',0x00,'e',0x00,'c',0x00,'t',0x00,'r',0x00,'o',0x00,'n',0x00,'i', 0x00 ;32-62 data 'c',0x00,'a',0x00,' ',0x00,' ',0x00,' ',0x00,' ',0x00,' ',0x00,' ', 0x00 ;64-94 data ' ',0x00,' ',0x00,' ',0x00,' ',0x00,0x10,0x03,'U',0x00,'S',0x00,'B' ,0x00 ;96-126 data ' ',0x00,'D',0x00,'A',0x00,'Q',0x00,' ',0x00,' ',0x00,' ',0x00,' ', 0x00 ;128-158 data ' ',0x00,' ',0x00,' ',0x00,' ',0x00,' ',0x00,' ',0x00,' ',0x00,' ', 0x00 ;160-190 data ' ',0x00,' ',0x00,' ',0x00,' ',0x00,' ',0x00 ;192-222 E',0x00 ;Report Descriptors org 0x1400 data 0x06,0x00,0XFF,0X09,0X01,0XA1,0X01,0X19,0X01,0X29,0X01,0X15,0X00,0X 26,0XFF,0X00 data 0X75,0X08,0X95,0X02,0X81,0X00,0X19,0X01,0X29,0X01,0X75,0X08,0X95,0X 02,0X91,0X00 data 0XC0 ;=============================================================================== ================== ; ;Vectores org 0X00 goto ini org 0x18 goto interrupt ;=============================================================================== ==================== ; ;Subrutinas ; ;_______________________________________________________________________________ ..SUBRUTINAS DE DEMORAS.. ; ;MANEJO DE TABLA enviar_paquete movlw 0x05 movwf FSR0L

movf n_ByteCount,w movwf INDF0 movf index_ini,w movwf TBLPTRL movf n_ByteCount,w mullw 2 movf PRODL,w movwf index_end movlw movwf movlw movwf rd_char movf TBLPTRL,w subwf index_end,w btfsc STATUS,Z goto send call lee_mem movf dato_h,w movwf POSTINC1 goto rd_char send movlw 0x04 movwf FSR0H movlw 0x04 movwf FSR0L movf INDF0,w xorlw 0x40 movwf INDF0 andlw 0x40 iorlw 0x88 movwf INDF0 return volver bsf UEP0,EPSTALL return sendEP1 movlw movwf movlw movwf 0x05 FSR1H 0x4A FSR1L ;datos 0x05 FSR1H 0x08 FSR1L ;fin de envio? ;Primer Descriptor

;fin ;lee prximo

movf datoEP1L,w movwf POSTINC1 movf datoEP1H,w movwf INDF1 movlw movwf movlw movwf movlw movwf 0x04 FSR0H 0x0D FSR0L 0x02 INDF0

;byte count

movlw movwf movlw movwf

0x04 FSR0H 0x0C FSR0L

movf INDF0,w xorlw 0x40 movwf INDF0 andlw 0x40 (tomando en cuenta la sincronizacion) iorlw 0x88 movwf INDF0 return

;mandar el byte

;lee MEMORIA DE PROGRAMAS E INCREMENTA CURSOR lee_mem ;leer el dato TBLRD*+ ; read into TABLAT and increment movf TABLAT,w ; get data movwf dato_h TBLRD*+ ; read into TABLAT and increment movf TABLAT,w ; get data movwf dato_l return ; ;inicia puntero de TABLA en la 0x1100 ini_ptr1 clrf TBLPTRU movlw 11 movwf TBLPTRH clrf TBLPTRL return ;inicia puntero de TABLA en la 0x1200 ini_ptr2 clrf TBLPTRU movlw 12 movwf TBLPTRH clrf TBLPTRL return ;inicia puntero de TABLA2 en la 0x1300 ini_ptr3 clrf TBLPTRU movlw 13 movwf TBLPTRH clrf TBLPTRL return ;inicia puntero de TABLA2 en la 0x1400 ini_ptr4 clrf TBLPTRU movlw 14 movwf TBLPTRH clrf TBLPTRL return ;DEMORA DE 47US.................... dem_40us movlw d'8' movwf M1 movlw d'1' movwf M2

call demora return ;DEMORA DE 1.64ms (1640 US)..... dem_1640us movlw d'46' movwf M1 movlw d'1' movwf M2 call demora return ;DEMORA DE 5.32 m................ dem_5ms movlw d'60' movwf M1 movlw d'5' movwf M2 call demora return ;DEMORA DE 50ms................... dem_50ms movlw d'67' movwf M1 movlw d'14' movwf M2 call demora return ;DEMORA DE 100ms.................. dem_100ms movlw d'100' movwf M1 movlw d'15' movwf M2 call demora return ;DEMORA DE 1s aprox............... dem_1s movlw d'102' movwf M1 movlw d'128' movwf M2 call demora return ; DEMORA general............ demora ;return movf M1,w movwf cont1 movwf cont2 movf M2,w movwf cont3 loop decfsz cont1 goto loop movf M1,w movwf cont1 decfsz cont2 goto loop movf M1,w movwf cont2 decfsz cont3 goto loop return

;_______________________________________________________________________________ ..SUBRUTINAS EEPROM.. ; ;subrutina endpoints ; Ini_endpoint0 ;Endpoint0 bsf UEP0,EPHSHK ; Handshaking para el endp oint 0 habilitado bcf UEP0,EPCONDIS ; SETUP habilitado bsf UEP0,EPOUTEN ; Habilitado como Out bsf UEP0,EPINEN ; Habilitado como In movlw movwf movlw movwf 0x04 FSR0H 0x01 FSR0L ; ; ; ; ; ; ; BD0CNT OUT BD0ADRL OUT BD0ADRH OUT BD0STAT IN BD0CNT IN BD0ADRL IN BD0ADRH IN

movlw 0x08 movwf POSTINC0 movlw 0x00 movwf POSTINC0 movlw 0x05 movwf POSTINC0 movlw 0x08 movwf POSTINC0 movlw d'64' movwf POSTINC0 movlw 0x08 movwf POSTINC0 movlw 0x05 movwf INDF0 movlw movwf movlw movwf movlw movwf return Ini_endpoint1 ;Endpoint1 bsf oint 1 habilitado bsf bsf bsf 0x04 FSR0H 0x00 FSR0L 0x88 INDF0

BD0STAT OUT

UEP1,EPHSHK UEP1,EPCONDIS UEP1,EPOUTEN UEP1,EPINEN

; ; ; ;

Handshaking para el endp SETUP habilitados Habilitado como Out Habilitado como IN

movlw 0x04 movwf FSR0H movlw 0x09

movwf FSR0L movlw 0x02 movwf POSTINC0 movlw 0x48 movwf POSTINC0 movlw 0x05 movwf POSTINC0 movlw 0x00 movwf POSTINC0 movlw 0x02 movwf POSTINC0 movlw 0x4A movwf POSTINC0 movlw 0x05 movwf INDF0 movlw movwf movlw movwf movlw movwf 0x04 FSR0H 0x08 FSR0L 0xC8 POSTINC0

; ; ; ; ; ; ;

BD1CNT OUT BD1ADRL OUT BD1ADRH OUT BD1STAT IN BD1CNT IN BD1ADRL IN BD1ADRH IN

BD1STAT OUT

return ;=============================================================================== ================================ ; ;Programa Principal ; ini ;Condiciones iniciales movlb 0 ; BSR = 00 ;Puertos movlw b'01111111' movwf TRISB clrf LATB clrf PORTB movlw movwf movlw movwf movwf b'11111111' TRISA b'00000000' TRISC PORTC movlw b'00001111' movwf ADCON1 movlw b'00000111' movwf CMCON clrf CCP2CON ;Variables clrf USB_Estado clrf USBreset ; Puertos digitales

clrf clrf clrf clrf clrf clrf clrf clrf clrf movlw movwf movlw movwf

USBerror USBtrans USBin USBout USBstall USBsof dato_h dato_l USB_config 0x05 datoEP1L 0x06 datoEP1H ; ; Registros de ban

;banderas clrf flag deras clrf bandera nzan en 0 ;USB ; REGISTROS GENERALES ; configuracion ;10-bit A/D clrf ADCON0 movlw b'00001110' movwf ADCON1 movlw b'00100001' movwf ADCON2 bcf ADCON2,7 bcf ADCON0,7 bsf ADCON0,0 call dem_40us ;On

Todas las banderas comie

;referido

;PWM movlw b'00111100' movwf CCP1CON ;Timer2 movlw b'01111011' ;8bit Prscaler-16 Postscaler-1 ( formula= PR21usPrescalr )(1ms) movwf T2CON movlw d'255' movwf PR2 ;da un overflow cuando T MR2 es igual a este,asi se puede regular el tiempo con mas exctitud bsf T2CON,2 ;tmr2 ON

clrf UCFG gura este registro bcf UCFG,UTEYE litado bcf UCFG,UOEMON bsf UCFG,UPUEN s habilitados

; ; ; ;

Primero se confi

Eye pattern test deshabi Seal UO(negada) inactiva On chip pull-up resistor

bcf tado (por default) bsf bcf litados bcf

UCFG,UTRDIS UCFG,FSEN UCFG,PPB1

; ; ;

On chip tranciver habili Full Speed Ping Pong Buffers desabi

UCFG,PPB0 ; Int USB clrf UIE bsf UIE,SOFIF bsf UIE,STALLIF bsf UIE,TRNIF bsf UIE,ACTVIF bsf UIE,UERRIF bsf UIE,URSTIF clrf UIR

; ; ; ; ; ;

Start of frame STALL Transaccin completa Actividad Error Reset ; Banderas

; control clrf UCON bcf UCON,PKTDIS s Token habilitado bsf UCON,USBEN habilitado bcf UCON,SUSPND bilitado ; call Ini_endpoint ;Interrupciones clrf INTCON bsf PIE2,5 bcf PIR2,5 bsf INTCON,6 perifericas activadas BEN se prenden al final de la configuracin movlw 0xff movwf CCPR1L call dem_1s call dem_1s call dem_1s movlw 0x00 movwf CCPR1L bsf PORTB,7 call dem_1s bcf PORTB,7 bsf INTCON,7

; ; ;

Procesamiento de paquete Modulo USB y circuiteria Modo en suspension desha

Todos las interrupciones ; GIE y US

;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ inicio btfss PORTC,1 goto inicio call dem_1s call sendEP1 principal btfss bandera,0 goto principal

bcf bandera,0 bcf INTCON,7 bsf ADCON0,1 loopA0 btfsc ADCON0,1; tiempo de conversion (96us) goto loopA0 movff ADRESH,datoEP1H movff ADRESL,datoEP1L call sendEP1 bsf INTCON,7 ;Aqui hay que preguntar por el LED, si esta apagado, goto inicio goto principal ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ;=============================================================================== ================================ ;interrupciones interrupt pcin ; Atencin a interru

btfsc PIR2,5 call interrupcionUSB bcf PIR2,5 retfie ;=============================================================================== ================================ ;----------------------------------------------------------------------;Atencin a Interrupcin USB (1er nivel) ;----------------------------------------------------------------------interrupcionUSB btfsc UIR,UERRIF goto subERROR btfsc UIR,SOFIF goto subSOF btfsc UIR,IDLEIF goto subIDLE btfsc UIR,ACTVIF call subACTV btfsc UIR,STALLIF goto subSTALL btfsc UIR,URSTIF goto subRESET btfsc UIR,TRNIF goto subTRANS return subERROR clrf UEIR bcf UIR,UERRIF return subSOF bcf UIR,SOFIF return

subIDLE bcf UIR,IDLEIF bsf UCON,SUSPND return subACTV bcf UIR,ACTVIF bcf UCON,SUSPND return subSTALL bcf UIR,STALLIF return subRESET bcf bcf bcf bcf UIR,TRNIF UIR,TRNIF UIR,TRNIF UIR,TRNIF

call Ini_endpoint0 clrf UADDR clrf UIR clrf USB_config bsf oint 0 habilitado bcf bsf bsf UEP0,EPHSHK UEP0,EPCONDIS UEP0,EPOUTEN UEP0,EPINEN ; ; ; ; Handshaking para el endp SETUP habilitado Habilitado como Out Habilitado como In

setf UEIE clrf USB_Estado return subTRANS btfsc USTAT,3 goto TRANS_EP1 movlw 0x04 movwf FSR0H btfsc movlw btfss movlw USTAT,DIR 0x04 USTAT,DIR 0x00 ; HACER CON DIR y PID

movwf FSR0L movf POSTINC0,w movwf bd00 movf POSTINC0,w movwf bd01 movf POSTINC0,w

movwf bd02 movf POSTINC0,w movwf bd03 movf USTAT,w movwf auxUSTAT bcf UIR,TRNIF movf bd00,w andlw b'00111100' movwf PID_byte sublw b'00000100' btfsc STATUS,Z call OUT_Token movf PID_byte,w sublw b'00110100' btfsc STATUS,Z call SETUP_Token movf PID_byte,w sublw b'00100100' btfsc STATUS,Z call IN_Token return TRANS_EP1 btfss USTAT,DIR call OUT_Token_EP1 btfsc USTAT,DIR call IN_Token_EP1 bcf UIR,TRNIF bcf UCON,PKTDIS return ; ;----------------------------------------------------------------------;Token (2do nivel) ;----------------------------------------------------------------------IN_Token movf auxUSTAT,w andlw b'00011000' btfss STATUS,Z return movf USB_Estado,w sublw 0x02 btfsc STATUS,Z movff usb_address,UADDR movf USB_Estado,w sublw 0x01 btfsc STATUS,Z goto enviar_paquete bcf UCON,PKTDIS return

OUT_Token movf auxUSTAT,w andlw b'01111000' btfss STATUS,Z return movlw movwf movlw movwf movlw movwf estado default) movlw movwf movlw movwf movlw movwf movlw movwf 0x00 FSR0L 0x88 INDF0 0x05 FSR0L 0x00 INDF0 0x04 FSR0H 0x01 FSR0L 0x08 INDF0

ByteCount=8 (en

movlw 0x04 movwf FSR0L movlw 0xC8 movwf INDF0 return

SETUP_Token ontrol movlw movwf movlw movwf 0x05 FSR1H 0x00 FSR1L

Transaccion de c

movf POSTINC1,w movwf ep00 movf POSTINC1,w movwf ep01 movf POSTINC1,w movwf ep02 movf POSTINC1,w movwf ep03 movf POSTINC1,w movwf ep04 movf POSTINC1,w movwf ep05 movf POSTINC1,w movwf ep06 movf POSTINC1,w movwf ep07

movlw movwf movlw movwf movlw movwf estado default) movlw movwf movlw movwf

0x04 FSR0H 0x01 FSR0L 0x08 INDF0 0x04 FSR0L 0x08 INDF0

ByteCount=8 (en

movlw 0x00 movwf FSR0L movf ep00,w sublw 0x21 btfss STATUS,Z movlw 0x88 btfsc STATUS,Z movlw 0xC8 movwf INDF0 bcf UCON,PKTDIS clrf USB_Estado movf ep00,w andlw 0x60 movwf USBrequest btfsc STATUS,Z goto StandarRqeuest movf USBrequest,w sublw 0x20 btfsc STATUS,Z goto ClassRqeuest movf USBrequest,w sublw 0x40 btfsc STATUS,Z goto VendorRqeuest return IN_Token_EP1 bsf bandera,0 return OUT_Token_EP1 bsf PORTC,0 return ;----------------------------------------------------------------------;Request (3er nivel) ;----------------------------------------------------------------------;+++++++++++++++++++++++++++++++++++++++++++++++++++++++STANDART ; BDown=1 SIE

StandarRqeuest movf ep01,w sublw 0x00 btfsc STATUS,Z goto GET_STATUS movf ep01,w sublw 0x01 btfsc STATUS,Z goto CLEAR_FEATURE movf ep01,w sublw 0x03 btfsc STATUS,Z goto SET_FEATURE movf ep01,w sublw 0x05 btfsc STATUS,Z goto SET_ADDRESS movf ep01,w sublw 0x06 btfsc STATUS,Z goto GET_DESCRIPTOR movf ep01,w sublw 0x07 btfsc STATUS,Z goto SET_DESCRIPTOR movf ep01,w sublw 0x08 btfsc STATUS,Z goto GET_CONFIGURATION movf ep01,w sublw 0x09 btfsc STATUS,Z goto SET_CONFIGURATION movf ep01,w sublw 0x0A btfsc STATUS,Z goto GET_INTERFACE movf ep01,w sublw 0x0B btfsc STATUS,Z goto SET_INTERFACE movf ep01,w sublw 0x0C btfsc STATUS,Z goto SYNCH_FRAME bsf UEP0,EPSTALL return GET_STATUS movf ep00,w andlw 0x0F movwf USBrecipiente sublw 0x00 btfsc STATUS,Z goto Recipiente_Device movwf USBrecipiente sublw 0x01 btfsc STATUS,Z goto Recipiente_Interface movwf USBrecipiente

sublw 0x02 btfsc STATUS,Z goto Recipiente_Ebdpoint bsf UEP0,EPSTALL return Recipiente_Device movlw 0x05 movwf FSR0L movlw 2 movwf INDF0 movlw 0x05 movwf FSR1H movlw 0x08 movwf FSR1L movlw 0x01 movwf POSTINC1 movlw 0x00 movwf INDF1 call send return Recipiente_Interface movf USB_Estado,w sublw 0x03 btfss STATUS,Z goto volver movlw 0x05 movwf FSR0L movlw 2 movwf INDF0 movlw 0x05 movwf FSR1H movlw 0x08 movwf FSR1L movlw 0x00 movwf POSTINC1 movlw 0x00 movwf INDF1 call send return Recipiente_Ebdpoint movf USB_Estado,w sublw 0x02 btfss STATUS,Z call config_state movf ep04,w andlw 0x0F btfss STATUS,Z goto volver movlw 0x08 movwf FSR1L btfsc UEP0,EPSTALL movlw 0x01 btfss UEP0,EPSTALL movlw 0x00 movwf POSTINC1 clrf INDF1 movlw 0x05 movwf FSR0L movlw 2 movwf INDF0

Config_estate

address state

call send return config_state movf USB_Estado,w sublw 0x03 btfss STATUS,Z goto volver return CLEAR_FEATURE return SET_FEATURE return SET_ADDRESS btfsc ep02,7 bsf UEP0,EPSTALL btfsc ep02,7 return movlw 0x02 movwf USB_Estado movff ep02,usb_address movlw 0x04 movwf FSR0H movlw 0x05 movwf FSR0L movlw 0x00 movwf INDF0 movlw 0x04 movwf FSR0L movlw 0xC8 movwf INDF0 return GET_DESCRIPTOR movlw 0x01 criptor movwf USB_Estado movf ep03,w sublw 1 btfsc STATUS,Z goto DeviceDescriptor movf ep03,w sublw 2 btfsc STATUS,Z goto ConfigDescriptor movf ep03,w sublw 3 btfsc STATUS,Z goto StringDescriptor movf ep03,w sublw 6 btfsc STATUS,Z bsf UEP0,EPSTALL movf ep03,w sublw 0x21 btfsc STATUS,Z ;Get des

goto HIDDescriptor movf ep03,w sublw 0x22 btfsc STATUS,Z goto ReportDescriptor return DeviceDescriptor call ini_ptr1 clrf TBLPTRL call lee_mem movf dato_h,w movwf n_ByteCount clrf index_ini movf ep07,w sublw 0 btfss STATUS,Z goto enviar_paquete movf ep06,w subwf n_ByteCount,w btfsc STATUS,N goto enviar_paquete movff ep06,n_ByteCount goto enviar_paquete ConfigDescriptor movf ep02,w sublw 0 btfss STATUS,Z bsf UEP0,EPSTALL movf ep02,w sublw 0 btfss STATUS,Z return call ini_ptr2 movlw d'4' movwf TBLPTRL call lee_mem movf dato_h,w movwf n_ByteCount clrf index_ini movf ep06,w btfsc STATUS,Z bsf UEP0,EPSTALL movf ep06,w sublw 0x09 btfsc STATUS,Z movff ep06,n_ByteCount bsf PORTB,7 goto enviar_paquete StringDescriptor call ini_ptr3 movf ep02,w sublw 0 btfsc STATUS,Z

call string0 movf ep02,w sublw 1 btfsc STATUS,Z call string1 movf ep02,w sublw 2 btfsc STATUS,Z call string2 call lee_mem movf dato_h,w movwf n_ByteCount bsf PORTC,1 goto enviar_paquete string0 movlw 0x00 movwf index_ini movwf TBLPTRL return string1 movlw 0x08 movwf index_ini movwf TBLPTRL return string2 movlw 0x70 movwf index_ini movwf TBLPTRL return HIDDescriptor movf ep02,w sublw 0 btfss STATUS,Z bsf UEP0,EPSTALL movf ep02,w sublw 0 btfss STATUS,Z return call ini_ptr2 movlw 9 movwf n_ByteCount movlw d'32' movwf index_ini goto enviar_paquete return ReportDescriptor movf ep02,w sublw 0

btfss STATUS,Z bsf UEP0,EPSTALL movf ep02,w sublw 0 btfss STATUS,Z return call ini_ptr3 movlw 0x29 movwf n_ByteCount clrf index_ini goto enviar_paquete return SET_DESCRIPTOR return GET_CONFIGURATION movlw 0x05 movwf FSR0L movlw 1 movwf INDF0 movlw 0x05 movwf FSR1H movlw 0x08 movwf FSR1L movf USB_config,w movwf INDF1 call send return SET_CONFIGURATION movf ep02,w sublw 0 btfsc STATUS,Z goto set_config0 movf ep02,w sublw 1 btfss STATUS,Z return movlw 0x03 ado movwf USB_Estado call Ini_endpoint1 movlw 0x05 movwf FSR0L movlw 0 movwf INDF0 call send return set_config0 movlw 0x02 movwf USB_Estado movlw 0x05 movwf FSR0L movlw 0 movwf INDF0 call send

;Estado Configur

; Estado Adress

return GET_INTERFACE return SET_INTERFACE return SYNCH_FRAME return ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++CLASS ClassRqeuest return ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++VENDOR VendorRqeuest return end

Vous aimerez peut-être aussi