softwarový sér. port u AT89C51ED2

koukám sice že je to na pic, ale ta teorie je na 51 určitě stejná. Koukal jsem na ten program:

void _Soft_USART_Write(unsigned short chr) {                     
unsigned short mask=1,i;                                         
unsigned int data;                                               
                                                                 
   data = chr << 1;                                              
   data &= ~0x0001; // START bit (=0).                           
                                                                 
   // 10 output bits                                             
   for (i=0;i<9;i++) { // lsb 1st  8 bits                        
      if (mask & data) {                                         
         asm {CLRW}                                              
         SU_set; // output low for logic 1                       
      } else {                                                   
         SU_res;// output high for logic 0                       
         asm {CLRW}                                              
      }                                                          
      mask <<=1;                                                 
      delay_us(395); // 2400 simulate to calibrate the loop.     
   }

   SU_set; // stop bit
   delay_us(417); // 2400
}

a myslím si že ho celkem chápu. Prostě vezmu data a masku a navzájem to 8x rotuju a pak posílám 1 nebo 0,ale není mě jasné co dělá to asm{CLRW}
a delay_us(395);
myslím že jedno bude ještě něco s tím odesláním na port a druhé nastavení rychlosti přenosu???