音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 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

調(diào)試Keil和使用UART碰到的幾個問題,一時想不通

作者:kevin27 欄目:單片機
調(diào)試Keil和使用UART碰到的幾個問題,一時想不通
剛開始寫我的Hello World,各位見笑了。
我的問題以3個問號(???)打頭。

#include <reg51.h>
#define uCHAR unsigned CHAR
#define unit unsigned int
uCHAR idata trdata[12] = {'H','e','l','l','o',' ','M','C','U','!',' ',0x00};
unsigned CHAR a;
main()
{
    uCHAR i;
    unit j;
    TMOD = 0x20; /* 定時器1:M1:M0=10:自動重裝 */
    TL1 = 0xfd;        
    TH1 = 0xfd;

    SCON = 0xd8;    /* 串口工作方式:3 */
    PCON = 0x80;    /* 加倍 */
    TR1 = 1;
    
    while(1)
    {
        i = 0;
        while(trdata[i] != 0x00)
        {
           SBUF = trdata[i];
            while(TI == 0);TI = 0;
            i++;            
            for(j=0;j<12500;j++);
            /* ???
        上一句不過是簡單的delay,但在Keil的Debug中,看Peripherals-Serial的TI總是突然被置1;
        但通過下面方式,在板子上驗證的時候,輸出確實0,難道Keil的bug?
        */
        /*
        if(TI==0)
            SBUF='0';
        else
            SBUF='1';
        
        if(TI != 0) TI=0;
        */            
        }                
    }
}
???為什么輸出:Hello MCU! Hello MCU[停頓]Hello MCU! Hello MCU[停頓]Hello MCU! Hello MCU[停頓]......
第二個MCU后面總是少了個感嘆號??

2樓: >>參與討論
kevin27
續(xù)上
while(1)
    {
        i = 0;
        while(trdata[i] != 0x00)
        {
           SBUF = trdata[i];
            while(TI == 0);TI = 0;
            i++;            
            for(j=0;j<12500;j++);                 
        }        
        for(j=0;j<37500;j++);         
    }
???貌似正常的輸出:Hello MCU! [停頓10s左右]......

3樓: >>參與討論
kevin27
續(xù)上
while(1)
    {
        i = 0;
        while(trdata[i] != 0x00)
        {
           SBUF = trdata[i];
            while(TI == 0);TI = 0;
            i++;            
            for(j=0;j<12500;j++);                 
        }        
        for(j=0;j<18500;j++);         
    }

本來我想應(yīng)該兩句之間停頓減半,但并沒有.
???為什么輸出:Hello MCU! Hello MC[停頓10s左右]......


    while(1)
    {
        i = 0;
        while(trdata[i] != 0x00)
        {
           SBUF = trdata[i];
            while(TI == 0);TI = 0;
            i++;            
            for(j=0;j<12500;j++);
            
            if(TI != 0) TI=0; /*僅僅多加了這么一句*/
        }        
        for(j=0;j<37500;j++);         
    }

???為什么輸出:Hello MCU! Hello MCU![停頓10s左右]......


while(1)
    {
        i = 0;
        while(trdata[i] != 0x00)
        {
           SBUF = trdata[i];
            while(TI == 0);TI = 0;
            i++;            
            for(j=0;j<12500;j++);                 
        }        
        while(RI==0);
        RI=0;
        a=SBUF;
        SBUF=a;
        while(TI==0);TI=0;        
    }
???為什么輸出:    Hello MCU![停頓10s左右]Hello MCU![停頓10s左右]Hello MCU![停頓10s左右]......
輸出是正常了,但我沒有輸入,為什么不停在 while(RI==0);而是始終在輸出?

4樓: >>參與討論
kevin27
硬件
MCU:SST89V564RD


參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
關(guān)于tsop封裝的flash批量燒寫問題。
做嵌入式系統(tǒng)C++用得多嗎?
keil c51 設(shè)置ram長度的奇怪問題
做毫伏級的測量,大家給推薦一下用什么好
LED只亮不暗
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入


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