Ⅰ 如何在一片51單片機中實現兩個不同模塊的主程序
什麼叫「不同模塊的主程序」?
如果您的意思是,要在單片機內宏觀上「同時」執行兩個任務的程序,那麼,有很多種辦法。
其一,道理最簡單的,是將這兩個任務合理安排好其中各個步驟的時間次序,編到同一個程序中。
這個方法最容易理解,但是,假如這兩個任務各有其靈活性,難以固定編排其執行的步驟次序,就不好用這種方法了。
另外的方法,就是編成兩個進程的程序,然後採用進程調度的辦法,使CPU可以分時輪流交替來執行這兩個進程。只要交替的頻度足夠,宏觀上就可以看做兩個任務在「同時」執行。
具體的辦法有很多種,「操作系統」教材中有專門的介紹。
在單片機上,常用的一種辦法是利用中斷機制。
例如,這兩個進程中,某一個進程可以安排成周期性的操作,那麼可以利用定時器的周期中斷,在中斷服務程序中執行這個進程的任務,每個節拍(即每次中斷)執行一步。而另一個進程,則可以放在主程序中,編成一個「死循環」的形式持續執行其任務。
這樣,主程序中執行第二個任務的期間,每當定時間隔時間到,就會打斷第二個任務,進入中斷服務程序中執行第一個任務,第一個任務這一節拍執行完後,中斷返回,就會回到主程序中繼續執行剛才被打斷了的第二個任務。
編程時需要注意的是,第二個進程的程序中,如果有某些操作是不允許打斷的,可以在這些操作前關中斷,操作後開中斷。這樣,第一個進程的中斷響應如果碰巧發生在關中斷的瞬時,中斷雖不會馬上響應,但中斷「掛號」依然有效,只不過稍微遲了一點響應。總體上不會有錯。
Ⅱ 單片機 全局變數太多,且分布在多個文件中該怎麼優化
合並相同類型的變數了,比如不同時用到的變數,可以合並握前嘛;還有就是將常量定義到代碼區,也就是加code 這樣就不佔用RAM區神舉域了。當然如果不合並游皮碧,系統也沒有擴展RAM,你可以選擇STC12系列的單片機,其內部有擴展的RAM,好像從1K到4K都有。這樣就不用擔心變數多了。
Ⅲ 怎麼往單片機裡面燒錄多個不同模塊的程序
都是一個工程裡面的程序,幾個模塊是指裡面的功能分區,燒錄文件就是一個文件涵蓋了所有的程序,不需要單獨燒錄,直接燒錄就可以了。
Ⅳ 52單片機怎麼讓多個功能模塊同時運行,互不影響
功能模塊是硬體,是可以同時運行的,初始化後就開始運行,互不影響。
如果是軟體上的多個功能模塊,是不可能同時運行的。就是電腦的CPU也不可能,但因電腦CPU運行速度快,多模塊,其實就是多任務,多線程,也是分時運行的,每個模塊輪流運行一段後切換。在宏觀上好像是同時運行的。
當然單片機也可以採用這種技術,但需要操作系統來管理。51單片機又很難跑操作系統。所以,通常採用按順序循環運行每個模塊。在宏觀。仍然有同時運行的效果。