|
發(fā)布時間: 2021-9-13 15:59
正文摘要:本帖最后由 happy2058 于 2021-9-13 18:23 編輯 芯片是8H1K08 工作流程序,屏幕通串口1發(fā)送數(shù)據(jù)給控制板、控制板返回要顯示數(shù)據(jù)給屏幕。再通過串口2發(fā)送操作數(shù)據(jù)給功能板2. 在沒加入串口2部分代碼前,屏幕 ... |
感謝你,搞好了,原因串口2中斷函數(shù)沒寫。我想著不接收數(shù)據(jù),就沒寫了。感謝感謝。就算空函數(shù)也要加一個才行![]() |
happy2058 發(fā)表于 2021-9-13 18:22 我是說,你開了中斷,只要發(fā)送完,TI = 1, 就會觸發(fā)中斷,只要你不 TI = 0 就會不停的進入中斷。換句話說,有可能,你主程序永遠沒有 機會執(zhí)行 TI = 0; 8H1K08 我手頭焊好的沒有,也沒辦法測試。你要是不想加標志,就先不開 串口中斷。光試發(fā)送唄。 |
188610329 發(fā)表于 2021-9-13 17:43 用是的8h1K08 串口1在最后一次發(fā)送完后T=0了。 |
happy2058 發(fā)表于 2021-9-13 17:36 我說的中斷那個, 你試了沒? |
188610329 發(fā)表于 2021-9-13 16:58 也試過,卡死。所以才這行直接一點 |
|
最后, 你 串口1 開了中斷,但是,只對RI作了處理,沒有對TI 做處理, 我不知道你什么型號的單片機,不排除,死在中斷里出不來的可能。一般開了中斷,都會用一個 TI_Busy的標志位 寫了SBUF之后,就把 TI_Busy = 1; 然后下面 就 While(TI_Busy) ; , 中斷里面加一個 IF(TI) { TI = 0; TI_Busy = 0; } 你參考一下吧。 |
|
uchar k= 0 ; do { S2BUF = (*(str + k)); k++; while (S2CON==0x50); S2CON &= ~0x02; } while (k < strlen); 另外,這個寫法……, 真的沒關(guān)系么? 一般的寫法好像應該: for(k= 0 ; k<strlen;k++) { S2BUF = *(str++); while ((S2CON & 0x02)==0); S2CON &= ~0x02; } 這樣子么? |
|
你的: while (S2CON==0x50); 這里應該 : while(S2CON & 0x02) !=0x02); 才對吧? |
Powered by 單片機教程網(wǎng)