Цитата(Angelborn @ Feb 6 2015, 11:37)

Наверное всё-таки низкоуровневых )
я имел ввиду, что функции типа USB_Init, Block_Read и пр. являются высокоуровневыми по отношению к оперированию приемопередатчиком USB, пакетами, токенами и пр. Ну, не важно, в самомо деле.
Цитата(Angelborn @ Feb 6 2015, 11:37)

Просто нужно написать простую программу для отправки параметров в/из компа по шине USB. Пишу на асме. Вот как туда вставить эти подпрограммы... Что они расходуют, какие ресурсы - хотя бы понимание...
Отлично! Нет ничего проще, чем сделать это с помощью обсуждаемой библиотеки! Вы работаете в Keil? Ну так подключите библиотеку к проекту. Там в пакете USBXpress должны быть и примеры для популярных сред типа Keil и IAR. И там же была информация в PDF-файле о ресурсах, требуемых для библиотеки.
Затем в Вашем ассемблерном проекте вызывайте внешние функции с помощью lcall (только не забудьте, что передача переменных идет через регистры Rx)
Код
;****************************************************************
; Объявления внешних функций из библиотеки Silabs USB_API
; Не забудьте прицепить файл USBX_F320_1.LIB к проекту!
;****************************************************************
extrn number (Flash_Size_L,Flash_Size_H)
extrn code (USB_Clock_Start)
extrn code (_USB_Init)
extrn xdata (?_USB_Init?BYTE)
extrn code (USB_Int_Enable)
extrn code (USB_Int_Disable)
extrn code (Get_Interrupt_Source)
extrn code (USB_Disable)
extrn code (_Block_Read)
extrn code (_Block_Write)
Вызов _BlockRead() Из обработчика прерывания от USB:
Код
MessageDispatcher:
; Получена структура сообщения от хоста. Диспатчим ее
; Считываем структуру из USB_Buffer
mov r3, #0x01
mov r2, #HIGH(USB_Buffer)
mov r1, #LOW(USB_Buffer)
mov r5, #0x0E
mov r4, #0x00
lcall _Block_Read