|
|||||||||||
| 技術(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 欄目:單片機 |
剛開始寫我的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 于 2005/12/9 20:41:00 發(fā)布:
續(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 于 2005/12/9 20:42:00 發(fā)布:
續(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 于 2005/12/9 20:44:00 發(fā)布:
硬件 MCU:SST89V564RD |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |