熱門: 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂(lè)園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
![]() |
發(fā)布時(shí)間: 2022-2-11 11:39
正文摘要:各位大神,我在學(xué)校STC8A8K64S4A12單片機(jī),用到串口2中斷通信, 屏蔽掉中斷程序時(shí),其他程序運(yùn)行速度很快,但一旦投入中斷程序,且下載進(jìn)去,程序進(jìn)入串口2中斷程序時(shí),整個(gè)程序運(yùn)行就變得很慢很慢了, 這是哪的問(wèn) ... |
if (!S2RI) return; 這就是錯(cuò)的 串口2的中斷標(biāo)志位不能位尋址 只能用 if ((SCON2&S2RI)來(lái)進(jìn)行判斷 |
void commIntProc(void) interrupt 8 { if (!S2RI) return;//S2RI串口2接收中斷請(qǐng)求標(biāo)志位 //下略。。。 } S2RI在STC8.h里#define 為0x01(314行), 可以算是常數(shù) 當(dāng)串口2有收到數(shù)據(jù)時(shí), 串口2中斷標(biāo)志(SCON2位0)置位 進(jìn)入串口2中斷,if(!S2RI) => if(!0x01) => 永遠(yuǎn)為真-> return 跳出串口2中斷 但是串口2標(biāo)志(SCON2位0)沒(méi)有被清零,立刻再次進(jìn)入串口2中斷 不斷循環(huán) 修改方法在我的貼子中已經(jīng)回答 但正被admin審查中 |
為什么會(huì)頻繁進(jìn)入串口接收中斷?要檢查一下其它代碼。因?yàn)槟愕某绦蝾l繁執(zhí)行中斷函數(shù),所以其它的功能運(yùn)行就受到影響了。 |
Powered by 單片機(jī)教程網(wǎng)