音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

求助:哪位大哥有51串口發(fā)送和中斷接受程序

作者:stephenwzy 欄目:單片機
求助:哪位大哥有51串口發(fā)送和中斷接受程序
小弟最近兩個51串口通信程序,串口中斷進不去,請教哪位大哥有范例.小弟在此有禮啦


2樓: >>參與討論
qiang620
google一搜就能找到!
 
3樓: >>參與討論
isoar
注意寄存器名稱定義,可能和你的不同
//-------------------Include File Define---------------------------------------
#include <REG66x.h>            //The Registers Define of the PHILIPS p89c664
//-----------------------------------------------------------------------------

//-------------------Constant Define-------------------------------------------
#define                    ucSerialBufferLong    3
//-----------------------------------------------------------------------------

//-------------------Variable Define-------------------------------------------
unsigned CHAR                ucSInputQueueCtr;
unsigned CHAR idata            ucSInputQueue        [ucSerialBufferLong];
//-----------------------------------------------------------------------------

//-------------------Serial PORT Communication---------------------------------
void                     intSerial            (void) interrupt 4
{
    if (ucSInputQueueCtr<ucSerialBufferLong)
        ucSInputQueue[ucSInputQueueCtr++]=S0BUF;
    RI=0;
}
//Queue Function
unsigned CHAR                 ucSQueue            (void)
{
    unsigned CHAR ucTmp;
    unsigned CHAR i;
    ucTmp=ucSInputQueue[0];
    for (i=0;i<ucSInputQueueCtr;i++) ucSInputQueue[i]=ucSInputQueue[i+1];
    ucSInputQueueCtr--;
    return(ucTmp);
}
//Transfer Function
void                    vSTransfer(unsigned CHAR ucOutput)
{
    ES0=0;    //Stop Receive Interrupt
    S0BUF=ucOutput;
    while(!TI);
    TI=0;
    ES0=1;    //Restart Receive Interrupt
}
//-----------------------------------------------------------------------------

//-------------------SYSTEM Initialization Function----------------------------
void                    vInitialization        (void)
{
    //Serial PORT Initialization
        //CRYSTAL Frequency 12MHZ PHILIPS 6 clock mode
        TMOD=0x20;    //T1 Mode 2(Baud)
        PCON|=0x80;   //SMOD=1
        TH1=0xF3;     //Baud:9600bps
        TL1=0xF3;
        SM0=0;        //Serial PORT Mode
        SM1=1;
        TR1=1;        //Start Timer
        REN=1;        //Receive Enable
        EA=1;         //Interrupt Enable
        ES0=1;        //Serial PORT Interrupt Enable
        TI=0;         //Transfer Sign
        ucSInputQueueCtr=0x00;
    //End of the Serial PORT Initialization
}
//-----------------------------------------------------------------------------

//-------------------SYSTEM Main Function--------------------------------------
void                     main                (void)
{
    vInitialization();
    while(1)
    {
        if (ucSInputQueueCtr)
        {
            unsigned CHAR ucTmp;
            ucTmp=ucSQueue();
            vSTransfer(ucTmp);
        }
    }
}
//-----------------------------------------------------------------------------

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
請教一個關(guān)于中斷程序中 數(shù)據(jù)保護的問題
上電后總是經(jīng)常不能起振,晶振不能起振(有時行),為什么?
數(shù)據(jù)作假問題請教
請教復(fù)位IC MAX811的腳位問題! (如圖)
向各位高手請教一個2051的波特率轉(zhuǎn)換問題
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號