• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 三種單片機(jī)模擬串口方法介紹

    三種單片機(jī)模擬串口方法介紹

    作者: 時(shí)間:2010-02-28 來(lái)源:網(wǎng)絡(luò) 收藏

    /*定時(shí)器0,100us溢出中斷*/
    SIGNAL(SIG_OVERFLOW0)
    {
    TCNT0=151;//重載數(shù)據(jù),計(jì)時(shí)區(qū)間為151---255,共104uS,一個(gè)位的時(shí)間
    if(TxLength)//
    {
    if(start==0)
    {
    Sbit0();//起始位
    SUDR=*(TxPoint++);
    }
    else
    {
    if((start=8))
    {
    if(SUDR(1(start-1)))Sbit1();//數(shù)據(jù)1
    else Sbit0();//數(shù)據(jù)0
    }
    else Sbit1();//停止位
    }
    if(start10)start++;
    else
    {
    TxLength--;//一字節(jié) 發(fā)送完成,字節(jié)數(shù)減1
    start=0;
    }//
    }
    }

    /*定時(shí)器1,1ms溢出中斷*/
    SIGNAL(SIG_OVERFLOW1)
    {
    eep_ms++;
    }
    /*定時(shí)器2*/
    SIGNAL(SIG_OVERFLOW2)
    {
    sei();
    if(INT0_time)//有數(shù)據(jù)
    {
    INT0_time=0;//中斷次數(shù)清0
    rdata=1;//置有數(shù)據(jù)標(biāo)志
    eep_ms=0;
    if(RxLength10)DispBuff[RxLength++]=RUDR;

    }
    if(rtime4)rtime++;//字節(jié)間隔時(shí)間,間隔3個(gè)字節(jié)重新開(kāi)始一幀
    else RxLength=0;
    }

    SIGNAL(SIG_INTERRUPT0)//INT0,邊沿觸發(fā)中斷
    {
    unsigned char temp,temp2=0;
    static unsigned char pre_TCNT2,j=0;
    if(INT0_time==0)//一個(gè)字節(jié)第一個(gè)下降沿中斷,起始位開(kāi)始
    {
    TCNT2=130;
    pre_TCNT2=130;
    RUDR=0xff;//接收的數(shù)據(jù)初值
    j=0; //位數(shù)清零
    INT0_time++;//中斷次數(shù)加一
    }
    else
    {
    temp=TCNT2;
    if(temp>pre_TCNT2)temp2=temp-pre_TCNT2;//取一個(gè)高/低電平的寬度
    if(temp2>10)//濾過(guò)窄電平(干擾信號(hào))
    {
    pre_TCNT2=temp;//記錄前一次的時(shí)間值
    temp=0;
    while(temp2>13)//計(jì)算位的個(gè)數(shù),約13為一個(gè)位(8*13=104uS)
    {
    temp2-=13;//
    temp++;
    }
    if(temp2>6)temp++;//計(jì)算位的個(gè)數(shù),一般13為一個(gè)位
    if(INT0_time==1)temp-=1;
    if(INT0_time1)//奇數(shù)次中斷
    {
    while(temp)//位0的個(gè)數(shù)
    {
    RUDR=~(1 temp--;
    j++;
    }
    }
    else j+=temp;//偶數(shù),位1的個(gè)數(shù),跳過(guò)
    INT0_time++;//中斷次數(shù)加一
    }
    }
    rtime=0;
    }

    上一頁(yè) 1 2 3 下一頁(yè)

    關(guān)鍵詞: 介紹 方法 串口 模擬 單片機(jī)

    評(píng)論


    相關(guān)推薦

    技術(shù)專區(qū)

    關(guān)閉
    主站蜘蛛池模板: 荥经县| 汉阴县| 城固县| 德清县| 临洮县| 涟源市| 梁山县| 灵川县| 柳林县| 仁布县| 宜君县| 平谷区| 昌黎县| 南江县| 阿拉善右旗| 即墨市| 五常市| 册亨县| 宁陵县| 中西区| 镇原县| 中方县| 东台市| 中方县| 堆龙德庆县| 临澧县| 都江堰市| 广西| 泽库县| 南丰县| 福建省| 桦甸市| 禄劝| 泰和县| 贡山| 渝中区| 葫芦岛市| 获嘉县| 古交市| 武宁县| 大方县|