久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

想問一下關于單片機按鍵切換顯示內容的問題

查看數: 2746 | 評論數: 2 | 收藏 0
關燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發布時間: 2020-5-20 11:55

正文摘要:

因為在顯示的時候加了左右滾動,上下滾動特效,所以切換時要一直按著按鍵,一直顯示的內容停止,松開按鍵才能切換,師傅跟我說可以定義一個切換標志位,按下按鍵置1,然后顯示內容再置0,可是我要切換的內容有5項, ...

回復

ID:756622 發表于 2020-5-20 21:12
這樣行嗎?當你的頁面滾動程序顯示完后把對應的頁面的標志位置為當前頁數,比如這樣if(h==1&&biaozhi==5)不過這樣的話好像只能朝著一個方向循環滾動。
ID:565305 發表于 2020-5-20 16:55
本帖最后由 egypt 于 2020-5-21 09:37 編輯

從題主給的代碼,無法看出 “切換的內容有5項”,所以只能從別的角度來分析
首先假設一個 main 中主邏輯循環長這樣
main ()
{
     InitHardware();       // 硬件初始化
     while(1)
     {     GetKey();        //  掃描按鍵函數
            ProcessKey();  // 根據按鍵設定標志函數
            DoDisplay();    // 根據標志進行顯示函數
            ....                  // 此處為  delay 或者其它功能性的函數
     }
}
這個流程簡單說,像  獲取消息事件 → 分揀處理消息事件并生成內部標志 → 根據內部標志執行對應動作

回過來說題主的代碼, 假設 GetKey / ProcessKey / DoDisplay 函數都是只耗費 【1毫秒】的代碼, 那么 GetKey 哪怕寫在 DoDisplay() 里頭都沒問題(代價是:可讀性、可維護性就非常差了。一點都不模塊化);

但是,大部分情況下 DoDisplay() 函數的耗時,經常是一個不定的,而且很大的值?梢栽O想一下,假設 DoDisplay() 這個函數耗費 10秒 才結束,那么跑完一次外圍 while 循環,就得 10秒,衍生為,讀取按鍵就變成 10秒讀取一次,或者說按鍵要按住 10秒才能讓邏輯循環往下走一輪(從題主開頭的表述就是,一直按著按鍵,一直顯示的內容停止,松開按鍵才能切換)……

常見改法是,要確保 GetKey / ProcessKey 有機會被執行和【設置標志】。這也是題主提及的,【定義一個切換標志位】的核心意思了。至于 GetKey 在 中斷上 或者 輪詢 等機制,或者說 DoDisplay 需要分拆為片段等【比方說每顯示一行字就為一個片段?】,留待題主自己根據項目復雜度去評估了【其實有些機器在畫面的移動卷屏時,只是操作顯示緩存,多出來的地方留黑邊。操作緩存的效率可比讀取字?於嗔恕


評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 中日字幕大片在线播放 | 欧美一区二区三区高清视频 | jlzzjlzz国产精品久久 | av一区二区三区 | 91视视频在线观看入口直接观看 | 免费的色网站 | 成人不卡 | 黄色精品视频网站 | 中文字幕影院 | 午夜国产在线 | 夜操| 国产女人精品视频 | 国产资源在线视频 | 奇米四色影视 | 日韩精品一区二区三区中文字幕 | 男人的天堂在线视频 | 免费在线观看av网站 | 在线一区| 在线成人免费视频 | 国产视频一区二区在线观看 | 欧洲av一区 | 成人免费淫片aa视频免费 | 做a网站 | 免费在线性爱视频 | 国产成人免费网站 | 欧美黑人体内she精在线观看 | 色呦呦在线 | 亚洲精品美女视频 | 国产激情一区二区三区 | av中文在线| 一区二区三区视频免费看 | 欧美一级黄色片在线观看 | 一区观看 | 国产成人免费一区二区60岁 | 国产99久久| 午夜午夜精品一区二区三区文 | 中文字幕日韩一区 | 国产情侣激情 | 欧美精品一区二区三区在线播放 | 福利一区在线观看 | 成人免费视频观看视频 |