![]() |
發(fā)布時間: 2019-4-16 15:31
正文摘要:如圖所示,用pcf8591通過AD轉(zhuǎn)換獲取數(shù)值并通過串口返回,圖為樣例程序現(xiàn)在不懂的點在于連寫了四個SUBF,在第一個SUBF操作完成后,發(fā)送中斷不就置1了嗎,這個程序是如何執(zhí)行的。 此外,如果我只想通過串口返回D0光敏 ... |
非常感謝以上大佬,問題已經(jīng)解決了 |
程序不全不好判斷。 |
/**********串口發(fā)送函數(shù)*************/ void SendOneByte(unsigned char c) { SBUF = c; //發(fā)送數(shù)據(jù) while(!TI); //等待發(fā)送完成 TI = 0; //發(fā)送中斷請求標志位清0 } //發(fā)送字符串(這里4個字節(jié):D[0]~D[3]) void xxxx() { unsigned char i; //其它語句 //........ ES=0; //關(guān)串口中斷(如果使用了串口中斷) for(i=0;i<4;i++) { SendOneByte(D[i]);//調(diào)用串口發(fā)送函數(shù) } ES=1; //開串口中斷(如果使用了串口中斷) } |
在第一個SUBF操作完成后,需要等一段時間(串行發(fā)送需要時間的),串行完數(shù)據(jù)后,才將發(fā)送標記置1!然而,中斷是否發(fā)生還取決于,你讓不讓它中斷(中斷允許位是否已被你置1)。 程序中DELAY(200),就是等待它串行完成,而后再發(fā)第二個?梢圆碌剑爸袛嘣试S位是被清0的,即不允許中斷”。 |
沒看全你的程序:估計程序不管發(fā)送中斷,就靠延時來發(fā)送; 延時發(fā)送不可取,應該用中斷發(fā)送,寫好發(fā)送中斷即可;這里面有好多工作要做。 |
Powered by 單片機教程網(wǎng)