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  */ 
} 
} 
}