|
|
Если не пожует:
[pre]
;----------------------------------
; инициализация PDI
D12_init:
selA
mov a,#0F4h
movx @R0,A ; команда считать регистр прерываний
selD
movx a,@R0 ; считываем регистр прерываний PDI (DMA)
movx a,@R0 ; считываем регистр прерываний PDI (USB Интерфейс)
mov r1,#5 ; шесть Endpoint
ReadAllLTS:
selA
mov a,r1
orl a,#40h
movx @R0,A ; команда считать состояние последней транзакции
selD
movx a,@R0 ; считали
dec R1
cjne R1,#0FFh,ReadAllLTS ; Все EndPoint?
command 0FBh ; обращения к DMA
seld
mov a,#040h ; разрешить прерывание ENdpoint 4
movx @R0,a
command 0F3h ; обращения к Mode
seld
mov a,#16h ; Non Iso mode (Bulk?) + Подключиться к USB Шине
movx @R0,A ; первый байт
mov a,#MCUclk ;3 - 12МГц, 1- 24МГц
movx @R0,A ; второй байт
Command 04h ; выбрали Main Out
Command 0F0h ; будем читать
Clearbuffer ; очистим MAinIn
Clearbuffer
clr TCON.1 ; прерывания INT0 уровнем
mov IE, #81h ; разрешили прерывания INT0
; проинициализировали интерфейс
КОММЕНТАРИИ
;-------------------------------------------------------------
SelA macro
SETB A0 ; будет запись команды
endm
;-------
SelD macro
CLR A0 ; будет запись/чтение данных
endm
;---------------
Command macro par
sela
MOV A,#PAR
movx @R0,A
endm
;--------------------
ClearBuffer macro ; PDI буфер считан можно принимать следующие данные
command 0F2h
endm
[/pre]
E-mail: info@telesys.ru