03.01.2015 Views

80C186EC/80C188EC Microprocessor User's Manual

80C186EC/80C188EC Microprocessor User's Manual

80C186EC/80C188EC Microprocessor User's Manual

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

DIRECT MEMORY ACCESS UNIT<br />

XOR AX, AX ; HIGH ADDRESS=0<br />

MOV DX, D2DSTH<br />

OUT DX, AX<br />

; THE POINTER ADDRESSES HAVE BEEN SET UP. NOW WE SET UP THE TRANSFER COUNT.<br />

MOV AX, 25 ; THE MESSAGE IS 25 BYTES LONG.<br />

MOV DX, D2TC ; XFER COUNT REG<br />

OUT DX, AX<br />

; SELECT THE SERIAL PORTS AS THE SOURCE OF INTERNAL DMA REQUESTS<br />

; AND SELECT MODULE B AS THE HIGHEST PRIORITY MODULE.<br />

MOV DX, DMAPRI<br />

MOV AX, 0404H ; IDRQB=1, DMAPB=1<br />

OUT DX, AX<br />

; NOW WE NEED TO SET THE PARAMETERS FOR THE CHANNEL AS FOLLOWS:<br />

;<br />

; DESTINATION SOURCE<br />

; ----------- ------<br />

; I/O SPACE MEMORY SPACE<br />

; CONSTANT PTR INCREMENT PTR<br />

;<br />

; TERMINATE ON TC, INTERRUPT, SOURCE-SYNCHRONIZED, LOW PRIORITY RELATIVE<br />

; TO CHANNEL 1, BYTE XFERS. INTERNAL DRQ. ARM CHANNEL.<br />

MOV AX, 0001011101010110B<br />

MOV DX, D0CON<br />

OUT DX, AX<br />

; THE TRANSMIT CHANNEL IS NOW ARMED. IT WILL NOT BEGIN TRANSFERS UNTIL<br />

; IT IS "PRIMED" BY SENDING THE FIRST BYTE MANUALLY.<br />

; NOW SET UP CHANNEL 4 TO HANDLE RECEIVE REQUESTS FROM SERIAL CHANNEL 1.<br />

MOV<br />

AX, SEG RECV_BUFF<br />

ROL AX, 4 ; GET HIGH 4 BITS<br />

MOV BX, AX ; SAVE ROTATED VALUE<br />

AND AX, 0FFF0H ; GET SHIFTED LOW 4 NIBBLES<br />

ADD<br />

AX, OFFSET RECV_BUFF<br />

; NOW LOW BYTES OF POINTER ARE IN AX.<br />

ADC BX, 0 ; ADD IN THE CARRY<br />

; TO THE HIGH NIBBLE<br />

AND BX, 000FH ; GET JUST THE HIGH NIBBLE<br />

MOV DX, D3DSTL<br />

OUT DX, AX ; AX=LOW 4 BYTES<br />

MOV DX, D3DSTH<br />

MOV AX, BX ; GET HIGH NIBBLE<br />

OUT DX, AX<br />

; DESTINATION POINTER DONE. SOURCE IS IN PCB.<br />

MOV DX, D3SRCL<br />

MOV AX, S1RBUF ; RECEIVE BUFFER FOR<br />

OUT DX, AX ; CHANNEL 1 IS DEST<br />

Example 10-2. DMA-Driven Serial Transfers (Continued)<br />

10-35

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!