USB интерфейс на базе FT245R, который можно воткнуть вместо ВВ55.
Со стороны хоста (PC) это выглядит как виртуальный последовательный порт (/dev/tty.usbserial-XXXXXXXX или COMx), а со стороны РК - как два порта, один двунаправленный для данных, второй, только на чтение, содержит два бита статуса очередей чтения/записи. Если воткнуть платку в РК вместо D14, то порт данных будет находиться по всем четным адресам 0xAxxx, а порт статуса - по всем нечетным. Их можно читать/писать даже из Монитора, директивами D или L и M или F, соответственно.
Пример использования из ассемблера:
;===========================================================================
; FT245R use example
; Created by @alexcp on 18 Dec 2018
;
;
FT245R equ 0A000h ; base address of FT245R FIFO
DATA equ 0 ; Data register
STAT equ 1 ; Status register
;
; Define FIFO port
FIFO_DATA equ FT245R+DATA
FIFO_STATUS equ FT245R+STAT
RXEMPTY equ 1 ; MASK FOR RX BUFFER EMPTY
TXFULL equ 2 ; MASK FOR TX BUFFER FULL
;
;===========================================================================
; Get a character to A
;
; Return A=char, CY=0 if data received
; CY=1 if timeout
;
; Uses 4 bytes of stack including return address
;
GETCHAR:
PUSH D
LXI D,8000h ;long timeout
gc10: DCX D
MOV A,D
ORA E
JZ gc90 ;exit if timeout
LDA FIFO_STATUS ;read device status
ANI RXEMPTY
JNZ gc10 ;not ready yet.
;
; Data received: return CY=0. data in A
XRA A ;cy=0
LDA FIFO_DATA ;read data
POP D
RET
;
; Timeout: return CY=1
gc90: STC ;cy=1
POP D
RET
;
;===========================================================================
; Output character in A
;
; Uses 4 bytes of stack including return address
;
PUTCHAR:
PUSH PSW ;save byte to output
pc10: LDA FIFO_STATUS ;read device status
ANI TXFULL ;tx full ?
JNZ pc10
POP PSW
STA FIFO_DATA ;transmit char
RET
К сожалению, в схеме допущена ошибка - вывод 5 U4 подключен к A0, а должен бы к /A0. Из-за этого данных порт на запись/передачу расположен не по четному адресу, а по нечетному, по которому на чтение выдаются биты состояния FIFO. Исправлю в следующей редакции.
Comments (0)
You don't have permission to comment on this page.