#include <reg52.h>
sbit P10 = P1 ^ 0;
sbit P32 = P3 ^ 2;
char n = 0;
void main( void ) {
    TMOD = 0x00;  //設計時器0為模式0; 
    EA = 1;       //
    EX0 = 1;      //允許P3.2中斷 
    IT0 = 1;      //設P3.2為負緣觸發 
    ET0 = 0;      //關閉計時器中斷 
    TR0 = 0;      //停止計時 
    while ( 1 )
        ;
}
//-------------------------------------------------------------------------
//
//-------------------------------------------------------------------------
void ISR_Key( void )interrupt 0 {
    TH0 = ( 8192-104 ) / 32;  //鮑率設定 
    TL0 = ( 8192-104 ) % 32;
    EX0 = 0;      //關閉P3.2中斷 
    ET0 = 1;      //開啟計時器中斷 
    TR0 = 1;      //開始計時 
}
//-------------------------------------------------------------------------
//
//-------------------------------------------------------------------------
void Timer0_isr( void )interrupt 1 {
    TH0 = ( 8192-208 ) / 32;
    TL0 = ( 8192-208 ) % 32;
    P10 = P32;
    n ++;
    //若接收/傳送10bit後則等待下次的 start bit 觸發P3.2 
    if ( n == 10 ) {
        EX0 = 1;    //允許P3.2中斷 
        ET0 = 0;    //關閉計時器中斷 
        TR0 = 0;    //停止計時 
        n = 0;
    }
}