You will be presented with the full text of a science research paper. Please write an abstract for this paper. Your response should include the abstract and no additional text.

Paper text:
led board is a printed circuit board ( pcb ) that connects to pc via standard serial cable .
led board has 8 leds , each led can be individually turned on / off from windows application ( led board control console ) .
fig.1 shows simplified schematic of led board .
microchip pic16f84 is responsible for receiving data from pc and controlling 8 leds .
@figureh        since rs-232 and pic16f84 use different voltage levels , max232 is required for logic level conversion : rs-232 @xmath0 ttl . the null modem cable configuration without handshaking is used between pc and led board .
as we can see from the schematic max232 is connected to microchip pic 16f84 and db9 serial connector . to provide + 5v for pic16f84 and max232 , we use 9v battery together with l7805 voltage regulator .
leds are directly connected to the pic16f84 s portb i / o pins which have up to 25 ma sink / source current , this feature makes them ideal for direct led drive .
4mhz crystal resonator and two 20pf capacitors ( c7 , c8 ) are used to provide external clocking ( xt mode ) .
the null modem configuration uses txd and rxd lines for data interchange between pc and external device . led board uses txd to receive data , rxd is wired - up , but not used .
txd is connected to max232 s r1 in ( pin 13 ) , while r1out ( pin 12 ) is directly connected to pic16f84 s ra1 ( pin 18 ) , thus ra1 is used as an input pin which receives data from pc .
please see datasheets of microchip pic16f84 , max232 , l7805 for detailed specifications .
+   +   + above program receives bytes and depending on bit pattern of each byte switches corresponding leds on / off . for example , if received byte is 00010100 , led # 3 and led # 5 will be switched on , while remaining leds will be off ( 1 = led on , 0= led off ) . obviously , to light up all 8 leds , pic16f84 should receive 11111111 .
after serin receives a byte , it stores received byte in b0 . once byte has been received , it is written into portb with poke command , thus switching leds on / off according to above mentioned bit pattern . since we have exactly 8 leds connected to portb ( 8 pins ) , it is easy to control them all with just one byte .
led board control console ( lbcc ) is a small windows application designed to control led board from pc .
to switch led(s ) on / off , lbcc sends a byte with specified bit pattern into com port .
fig.2 shows sample application developed with microsoft s visual c++ .
( dialog based mfc application ) [ fig : graph ]      before sending data , we should setup and configure corresponding com port .
winapi function _ createfile (  ) _ creates serial port , it returns handle which is later used to access serial port .
the following code shows how to successfully setup com port .    `
handle   comport ;      //
com port handle ` + ` dcb dcb ;              //
control structure for a serial device ` ` bool fsuccess ; ` +    .... comport = createfile("com1",generic_read | generic_write ,                        0 ,             //
comm devices must be                                      // opened w / exclusive - access                       null ,           //
no security attributes                       open_existing , //
comm devices                                      // must use open_existing                       0 ,              // not overlapped i / o                       null            //
htemplate must be null                                      //for comm devices                       ) ;    if ( comport = = invalid_handle_value )    {        // handle the error .
messagebox ( " createfile failed","error",mb_ok ) ;        return ( 1 ) ;    }      fsuccess = getcommstate(comport , & dcb ) ;      if ( !
fsuccess )    {        // handle the error .        messagebox ( " getcommstate failed","error",mb_ok ) ;        return ( 2 ) ;    }      // filling in dcb structure    //    //
important note :    // serial device configuration ( e.g. speed , parity ) should be matched with    //
the corresponding serin mode ( see section 4 for picbasic code )      dcb.baudrate = cbr_2400 ;       // set the baud rate    dcb.bytesize = 8 ;              // data size , xmit , and rcv    dcb.parity = noparity ;         // no parity bit    dcb.stopbits = onestopbit ;     //
one stop bit      fsuccess = setcommstate(comport , & dcb ) ;      if ( ! fsuccess )    {        // handle the error .        messagebox ( " setcommstate failed","error",mb_ok ) ;        return ( 3 ) ;      }      messagebox ( " com port initialized",null , mb_ok ) ; ....    com port is now initialized and ready for use .
to transmit data to led board , we use winapi function _ writefile (  ) _ which writes a byte into com port . as an example , let s consider the following , suppose we want to switch on led # 3 and led # 5 while keeping remaining leds off , this can be done by sending the byte 00010100 into com port .    .... _ _ int8 combyte ;    dword nnumberofbytestowrite = 1 ; dword numberofbyteswritten ;    combyte = 20 ;   //
binary 00010100 corresponds to 20 ( decimal )    writefile(comport,&combyte , nnumberofbytestowrite,&numberofbyteswritten , null ) ; ....    the first parameter in _ writefile (  ) _ is com port handle ( section 5.1 ) .
suppose we need to switch on specified led without affecting other leds ( if some of them were on ( off ) , they should remain on ( off ) ) .
let s also assume that the led we want to switch on was previously off . to solve this task we will use successive bitwise operations .
assume that we have the following bit pattern 00010010 ( led # 2 is on , led # 5 is on ; remaining leds are off ) and we want to switch on led # 7 .
let s use or mask with the original bit pattern ( 00010010 )    .... _ _ int8 ormask = 1 ; _ _ int8 combyte = 18 ;   //
00010010 ....    ` ormask = ormask < < 6 ; // 00000001 ` @xmath1 ` 01000000 ` + ` combyte = combyte | ormask ; // 00010010 | 01000000 = 01010010 `    combyte can now be written to com port with _ writefile (  ) _ as we can see from bit pattern led # 7 is switched on , while other leds are not affected . please note that to switch on / off @xmath2 led , left shift should be applied @xmath3 times . in our case @xmath4
, therefore we have ormask = ormask @xmath5 6 .
analogously , to switch off led # 7 , xor mask should be used    .... _ _ int8 xormask = 1 ; _ _ int8 combyte = 82 ;   //
01010010 ....    ` xormask = xormask < < 6 ; // 00000001 ` @xmath1 ` 01000000 ` + ` combyte = combyte ^ xormask ; //01010010 ^ 01000000 = 00010010 `
pcb size ( approx . ) : + length : _ 112.5 mm ( 4.43 in ) _ + width : _ 57 mm ( 2.24 in ) _ +
[ cols="^,^ " , ]
rs-232 led board project discussed in this article shows the basics of serial communications .
this project was the partial requirement for advanced digital electronics course taken at the university of oregon , eugene , usa .
this article demonstrates how to develop a microchip pic16f84 based device that supports rs-232 interface with pc . 
 circuit ( led board ) design and software development will be discussed . 
 picbasic pro compiler from microengineering labs , inc . is used for pic programming . 
 development of led board control console using c / c++ is also briefly discussed . 
 the project requires basic work experience with microchip pics , serial communication and programming . 
 +   +   +