3/29/2013

Software UART


UART 算是個很古老的東西
目前的MCU也都包含了
其本上只要看看SPEC
設定一下MCU的REG
就沒什麼問題了

但這樣真的了解UART嗎?
如果有不夠用的時後怎麼半?
如果沒有ICE時如何debug?

如何用I/O模擬 UART
假設 baud rate = 9600
one bit time = 1/9600 = 104uS
8bit/none parity/one start/one stop
Time = 10us interrupt


void SUART(unsigned char UD)
{
    unsigned char j;
 
    j=0;
    SU_Time=0;
    while(j != 10)
    {
        while(SU_Time>=10)       //15=7 10=10 12=9 13=8 8=13
        {
            switch(j)
            {
                case 0:
                    PB &= 0xE0;
                    j++;
                    break;

                case 9:
                    PB |= 0x10;
                    j=10;
                    break;

                default:
                    if(UD & 0x01)
                        PB |= 0x10;
                    else
                        PB &= 0xE0;
                    UD >>=1;
                    j++;
                    break;
            }
            SU_Time=0;
        }
    }
}

傳送端比較簡單
接收的話就必需考慮的比較多了

有些東西,看懂了不代長真正了解
還是自已做一次看看
才知道到底了解多少

沒有留言: