ASDA-B2
Chapter 8 Communications
Revision May, 2018
8-17
void main() {
int I;
outportb(PORT+MCR,0x08);
/* interrupt enable */
outportb(PORT+IER,0x01);
/*
interrupt as data in */
outportb(PORT+LCR,( inportb(PORT+LCR) | 0x80 ) );
/* the BRDL/BRDH can be access as LCR.b7 == 1 */
outportb(PORT+BRDL,12);
outportb(PORT+BRDH,0x00);
outportb(PORT+LCR,0x06);
/* set prorocol
<7,E,1>
=
1AH,
<7,O,1>
=
0AH
<8,N,2>
=
07H <8,E,1>
=
1BH
<8,O,1>
=
0BH
*/
for( I = 0; I<=16; I++ ) {
while( !(inportb(PORT+LSR) & 0x20) ); /* wait until THR empty */
outportb(PORT+THR,tdat[I]);
/* send data to THR */
}
I = 0;
while( !kbhit() ) {
if( inportb(PORT+LSR)&0x01 ) { /* b0==1, read data ready */
rdat[I++] = inportb(PORT+RDR); /* read data from RDR */
}
}
}