欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8962|回復(fù): 10
收起左側(cè)

為什么單片機(jī)串口一直發(fā)數(shù)據(jù),我程序只想讓他發(fā)送一次

[復(fù)制鏈接]
ID:514790 發(fā)表于 2019-6-9 02:59 | 顯示全部樓層 |閱讀模式
主程序運(yùn)行,while(1)
{
     當(dāng)按下按鍵時(shí),調(diào)用串口發(fā)送函數(shù)Uart1SendStr(strsend);
}
發(fā)送的數(shù)據(jù)沒有問題,就是在第一次按下按鍵后就一直開始發(fā)送,本意是想按一下發(fā)送一次的,求解答!
中斷程序:
void Uart1Isr() interrupt 4
{
    if (TI)
    {
        TI = 0;
    }
    if (RI)
    {
        RI = 0;
    }
    busy = 0;
}
回復(fù)

使用道具 舉報(bào)

ID:94031 發(fā)表于 2019-6-9 09:08 | 顯示全部樓層
設(shè)個(gè)標(biāo)志來判斷,只發(fā)一次。
回復(fù)

使用道具 舉報(bào)

ID:489598 發(fā)表于 2019-6-9 10:04 | 顯示全部樓層
清中斷標(biāo)志位了?還有就是有可能按鍵按下多次觸發(fā)了,給按鍵加個(gè)延時(shí)試試
回復(fù)

使用道具 舉報(bào)

ID:517466 發(fā)表于 2019-6-9 11:11 | 顯示全部樓層
首先確認(rèn)你的按鍵處理中有沒有防抖動處理。沒有的話,很容易出現(xiàn)連續(xù)發(fā)送情況。加入防抖動處理,并且要保證在按鍵松開以后,視為一次完整的按鍵按下,在這之后再執(zhí)行按鍵的對應(yīng)處理,就不會發(fā)生連續(xù)發(fā)送了。
你的按鍵的處理程序沒列出來,所以很難判斷是哪里出了問題。
防抖處理邏輯:
      按鍵按下?
         是
            延時(shí)20ms
               這個(gè)案件被按下?
                  是
                     按鍵是否被松開了?
                        是
                           執(zhí)行這個(gè)按鍵被按下的處理
回復(fù)

使用道具 舉報(bào)

ID:557425 發(fā)表于 2019-6-9 11:16 | 顯示全部樓層
給按鍵加個(gè)延時(shí)
回復(fù)

使用道具 舉報(bào)

ID:542241 發(fā)表于 2019-6-9 11:27 | 顯示全部樓層
少個(gè)按鍵抖動的判斷
回復(fù)

使用道具 舉報(bào)

ID:558226 發(fā)表于 2019-6-9 15:31 | 顯示全部樓層
初始化設(shè)置標(biāo)志
回復(fù)

使用道具 舉報(bào)

ID:514790 發(fā)表于 2019-6-9 17:18 | 顯示全部樓層
suncat0504 發(fā)表于 2019-6-9 11:11
首先確認(rèn)你的按鍵處理中有沒有防抖動處理。沒有的話,很容易出現(xiàn)連續(xù)發(fā)送情況。加入防抖動處理,并且要保證 ...

你好,我是在運(yùn)行按鍵處理程序后,獲得其鍵值,再根據(jù)鍵值來執(zhí)行相應(yīng)的函數(shù)程序,這個(gè)相應(yīng)的程序是發(fā)送數(shù)據(jù)
回復(fù)

使用道具 舉報(bào)

ID:93224 發(fā)表于 2019-6-9 17:24 | 顯示全部樓層
肯定是你按鍵的問題,好好看看按鍵的程序有沒有去抖動什么的
回復(fù)

使用道具 舉報(bào)

ID:517466 發(fā)表于 2019-6-9 22:48 | 顯示全部樓層
5anXR 發(fā)表于 2019-6-9 17:18
你好,我是在運(yùn)行按鍵處理程序后,獲得其鍵值,再根據(jù)鍵值來執(zhí)行相應(yīng)的函數(shù)程序,這個(gè)相應(yīng)的程序是發(fā)送數(shù) ...

根據(jù)鍵值處理場合,判斷鍵值合適,立即清除這個(gè)鍵值(復(fù)位),然后執(zhí)行對應(yīng)鍵值的處理程序。鍵值不復(fù)位,下次即使沒有任何按鍵,由于這個(gè)鍵值依舊被保持,還會執(zhí)行對應(yīng)這個(gè)鍵值的處理程序。
就是說,在中斷處理中建立鍵值后,在鍵值的判斷處理過程中,在處理完成返回之前一定要清除這個(gè)鍵值。避免下次有效串口數(shù)據(jù)發(fā)送之前,依舊使用之前的鍵值進(jìn)行處理。
串口中斷:收到鍵值,保存到變量中。
主循環(huán)處理:鍵值=xx?
                        是
                             {
                               鍵值=0;// 鍵值復(fù)位,等待下一次串口發(fā)送鍵值時(shí)設(shè)置
                               調(diào)用對應(yīng)這個(gè)鍵值的處理
                             }
                          
回復(fù)

使用道具 舉報(bào)

ID:222006 發(fā)表于 2019-6-10 01:12 | 顯示全部樓層
按一次發(fā)送一次就在按鍵函數(shù)里面處理RI 和 TI好了
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表