在《單片機用定時器分配任務程序結構總結》里面,把整個系統分為兩個進程:主函數和主函數調用的所有函數,這是主進程;還有中">

极品日韩av_永久免费在线观看_成人免费在线电影网_午夜一区不卡_国产人妖乱国产精品人妖_日本成人中文字幕在线视频_亚洲欧美日韩视频一区_成人av综合一区

大學校園網

大學生活網 > 大學生學習 > 電氣工程

淺談單片機程序結構

在學C++時對對單片機程序有一些新的想法。

在《單片機用定時器分配任務程序結構總結》里面,把整個系統分為兩個進程:主函數和主函數調用的所有函數,這是主進程;還有中斷觸發的一個進程。

各種中斷的到來會立刻讓主進程相關數據入棧保存,然后開始一段新的代碼,執行完成后再從堆棧中讀取數據返回原來的地方繼續執行,這種切換方式其實就和操作系統的各個進程間切換是一模一樣的。所以把它們說成是兩個進程確實非常貼切。

現在,在主進程中進一步把函數分為兩類:實現算法和邏輯功能的函數,以及公共函數。

先看下面這幅圖吧(取自譚浩強C++程序設計P227)

這里面所有函數都是由主函數調用的,屬于主進程,并且列出來的所有函數都體現了算法,也就是用于構成邏輯結構。

例如在函數1里面想進入函數2,不是直接調用函數2,而是先返回函數1,再由主循環分配到函數2。

這種程序結構特別適合于多種“界面”的功能,比如電子鐘里面的時鐘顯示界面和設置界面,就是兩個函數,進去了之后就執行這個函數的特定的功能。再比如DYS388的顯示方式,有16位全彩顯示和7色顯示兩種模式,這兩種顯示模式就是兩個函數,進入某一種顯示模式后就會以那種顯示模式特定的顯示方式進行顯示。一般情況下,主進程不會停留在主循環里,而是偶爾退出到主循環重新分配下一個將要進入的函數。

這些函數之間有一些公共變量,也有一些于函數對應的用于完成特定功能的變量。比如DYS388中16位刷新函數和7色刷新函數都對應一段自己的顯存,這些顯存是有特定用處的,一般其它函數不會使用(但確實是公共變量,是可以被使用的);也有一些變量作用就是被各個函數使用,甚至用于函數間通信,輔助完成這些函數之間的邏輯結構的構建,比如DYS388中的界面標志變量DispMode,這個標志變量就指明了當前工作于那種刷新方式,任何函數(包括中斷進程中的函數)都可以通過改變此變量來切換顯示模式。

而今天我要說的不只是這些,上面說的是變量,有些變量對應特定的函數使用,有些變量可以被所有函數使用。

與之對應的還有函數,圖中畫出的函數都是所謂的“界面函數”(自己起的名字哈),用于完成某一特定任務的函數,一般進入這個函數后主進程就會停在里面,當達到特殊目的后返回。而這些“界面函數”也會不斷地調用其它函數完成功能,比如延時等。

這些被界面函數調用的函數把它們稱作“工具函數”。這些功能函數中有一些是公用的,比如延時函數,很多地方都會用到。而也有一些是某一個界面函數才會用到的,用于完成這個特殊功能的函數,比如DYS388中的一行的掃描程序,16位顯示函數不斷調用行掃描函數從而完成整屏的刷新。

這樣,這些所謂的“工具函數”就和變量對應起來了。整體的程序框架是由各個“界面函數”和少數關鍵的全局變量構建起來的。為這個框架服務的還有其它一些變量和工具函數,有些變量為特定的界面函數服務,有些則可為所有函數使用;有些工具函數為特定的界面函數調用,有些工具函數則可被所有的界面函數調用。

到此還沒有結束,上面只考慮了主進程,而中斷也會開辟一條進程,這個進程中也可能會有類似主進程的結構,雖然在實際使用中單片機中斷程序一般比較簡單,不會有太復雜的結構,因為中斷處理程序退出后,里面的局部變量不會想主進程那樣被保存下來,中斷處理程序只能靠全局變量進行記憶。However,中斷處理程序毫無疑問地可以使用上面定義的所有全局變量和函數。

在這里我想說的是,當一個進程調用另一個進程會使用的函數(函數A)時一定要小心,因為這個進程是由中斷開辟的(至少在單片機里面是),而這個中斷可能正是從將要調用的函數A中跳出來的,即使不是從即將調用的函數A中跳出(假設從函數B中跳出),也可能函數A會調用函數B。

這些都會導致單片機死機的,編譯時也應該會有警告的。

總結一下,這篇文章主要想說如下內容:

整個主進程的框架是由“界面函數”和一些關鍵的全局變量構成的。有其它的變量和函數為它們服務,有些變量和函數是為了輔助某一個界面函數完成特殊功能,其它函數一般不會用到;也有些變量和函數位全局服務的,完成一些通用的功能。

除主進程外,由中斷開辟的另一道進程也可能會有為自己服務的變量和函數,當然也可以調用主進程中的變量和函數,利用他們為自己服務,或者用于跟主進程通信。而在中斷進程調用主進程的函數時一定要注意一個原則:不要讓調用的函數調用到被中斷的函數。必要時可以為中斷進程單獨寫一個服務函數,函數內容可能跟主進程中的某個函數一模一樣,但這樣可以避免上述問題。
日韩欧美国产精品综合嫩v| 免费av片风间由美在线| 亚洲男人的天堂在线播放| 亚洲欧美日韩成人| 视频国产在线观看| а√天堂8资源中文在线| 成人在线视频www| 天天综合亚洲| 国产福利一区二区三区视频| 成人免费在线播放视频| 欧美日韩在线精品一区二区三区激情| 欧美一级理论片| 三区在线视频| 国产亚洲精品精品国产亚洲综合| 国产毛片一区二区三区| 蜜芽一区二区三区| 亚洲欧美日韩中文字幕一区二区三区| 欧美日韩国产综合一区二区| 欧美不卡123| 欧美日韩激情美女| 国产女优裸体网站| 俄罗斯xxxx性全过程| 97影院理论午夜| 福利成人在线观看| 日韩aaa久久蜜桃av| 在线观看视频免费一区二区三区| 国产欧美一区二区三区精品观看| 香蕉久久网站| 成人美女视频在线观看| 91黄色免费观看| 国产香蕉视频在线观看| 亚洲免费成人av在线| 韩国主播福利视频一区二区三区| 欧美三级情趣内衣| 欧美色视频日本高清在线观看| 免费成年网站| 亚洲男人天堂网| 在线国产福利网站| 国产网站在线免费观看| 国产成人午夜性a一级毛片| 久久97精品| 亚洲一区二区三区影院| 韩国精品一区| 99久久婷婷| 动漫精品一区二区| 2024最新电影免费在线观看| 国产视频一区在线观看一区免费| 国产在线看一区| 日韩欧美一区在线观看| 91精品国产66| 成人午夜私人影院| 日本韩国福利视频| 精品国产一区二区三区久久久蜜臀| 欧美国产成人精品| 国产综合视频一区二区三区免费| 无码一区二区三区视频| 午夜精品成人在线| 国产嫩草在线视频| 国内外成人在线视频| 日韩精品视频免费专区在线播放| 综合欧美亚洲| 一区二区理论电影在线观看| 日本激情视频在线观看| 亚洲免费婷婷| 亚洲第一二三四五区| 成功精品影院| 亚洲影视在线播放| 黄色软件视频在线观看| 成人小视频在线观看| 亚洲一区二区三区成人| 欧美三级乱码| 亚洲成**性毛茸茸| 国产在线观看91一区二区三区| 亚洲成a人片在线观看中文| 免费高潮视频95在线观看网站| 久久国产欧美日韩精品| 亚洲国产天堂网精品网站| 欧美白人做受xxxx视频| 影音先锋成人在线电影| 日韩欧美一二三区| 香蕉一区二区| 色香蕉成人二区免费| 国产精品久久免费视频| 亚洲男人的天堂在线观看| 高清视频在线观看三级| 91免费视频大全| 性欧美videos高清hd4k| 国产精品一区二区三区乱码| 伊人网在线观看| 国产日韩1区| 国产私人影院| 99亚洲视频| 手机福利视频欧美| 国产精品美女久久久浪潮软件| 亚洲精品在线91| 欧美午夜在线| 亚洲精品国产电影| 欧美+亚洲+精品+三区| 亚洲国产日韩精品在线| 国产精品二区不卡| 亚洲国产精品久久久久秋霞不卡 | 95精品视频| 亚洲最新视频在线播放| 欧美不卡在线观看| 欧美午夜激情小视频| jizz国产精品| 欧美剧情电影在线观看完整版免费励志电影| 免费看日产一区二区三区| 欧美网站在线观看| 免费观看久久av| 日韩一级欧美一级| 欧美天天视频| 在线视频毛片| 国产成人免费视频| 爱搞国产精品| 亚洲电影一区二区| 中文字幕亚洲影视| 亚洲成人激情图| 亚洲一区黄色| 中文日本在线观看| 国产午夜亚洲精品羞羞网站| 国产综合色激情| 日韩欧美国产视频| 欧美一区二区三区激情视频| 亚洲区在线播放| 欧美aaaaaa午夜精品| 成人午夜在线影视| 国产精品福利一区二区| а√中文在线天堂精品| 精品国产一区二区精华| 免费视频一区二区三区在线观看| 高清美女视频一区| 亚洲欧洲精品成人久久奇米网| 亚洲综合视频| 日韩免费视频线观看| 校园春色综合网| 国产激情在线| 午夜欧美大尺度福利影院在线看| 国产一区二区区别| 三上悠亚在线免费观看| 久久久久青草大香线综合精品| 国产亚洲字幕| 亚洲精品久久在线| 国产传媒欧美日韩成人| 素人啪啪色综合| 日韩视频在线你懂得| 免费观看一级特黄欧美大片| 永久免费毛片在线播放| 91电影在线观看| 久久婷婷亚洲| 天堂av在线网| 日韩三级免费观看| 国产在线观看免费一区| 国产综合色在线观看| 欧美变态tickling挠脚心| 国产一区二区网址| 欧美日韩免费观看视频| 精品国产污网站| av资源站一区| 欧美freesex8一10精品| 在线观影网站| 国产精品国模大尺度视频| 日韩欧美视频专区| 香蕉视频在线播放| 色综合久久久久综合| 久热精品视频| 国产精品伦一区二区| 亚洲视频欧美视频| 国产精品每日更新在线播放网址 | 日韩国产精品一区| 96av麻豆蜜桃一区二区| 伊人久久大香线蕉综合网蜜芽| 亚洲综合在线一区| 岛国av一区二区| 午夜在线一区二区| 95精品视频| 欧美色视频免费| 色先锋aa成人| 国产一区二区三区综合| 天海翼亚洲一区二区三区| 阿v免费在线观看| 日韩欧美视频一区二区三区| 美美哒免费高清在线观看视频一区二区| 巨胸喷奶水www久久久| 亚洲色图第一页| 亚洲综合激情小说| 久久精品国产99国产| 欧美三级电影在线| a视频在线观看| 亚洲精品一区二区三区香蕉| 日本一二三不卡| 一区二区三区高清视频在线观看| 国产成人77亚洲精品www| 欧美一级本道电影免费专区| 欧美成人精品3d动漫h| 2020国产精品自拍| 亚洲精品国产日韩| 99re热精品视频| 肉体视频在线| 久久午夜剧场|