單片機專用系統(tǒng)的系統(tǒng)程序構成
專用系統(tǒng)是指利用微處理器構成的具有特定功能的系統(tǒng),它是針對某個特定的功能專門設計的。近年來隨著計算機技術的發(fā)展,使家用電器到形形色色的工控系統(tǒng)、通信系統(tǒng)的智能化成為可能。這些系統(tǒng)采用微處理器或微控制器構成智能系統(tǒng),即在一個電子系統(tǒng)中內含微處理器或微控制器進行系統(tǒng)的信息處理和控制。由于在系統(tǒng)中,微處理器僅作為一個部件,因而將其稱為嵌入式處理器。專用系統(tǒng)的設計包括了系統(tǒng)的硬件設計和軟件設計。
專用系統(tǒng)的硬件設計是根據專用系統(tǒng)的功能要求選擇硬件設備,設計硬件設備的接口電路,并分配其地址。除此之外,還需根據系統(tǒng)對存儲器的需要選擇程序存儲器和數據存儲器的容量并分配地址。
專用系統(tǒng)的軟件即系統(tǒng)程序包含了程序區(qū)、數據區(qū)和堆棧區(qū)等部分,程序區(qū)主要根據系統(tǒng)對硬件的要求設計一系列的程序,以調用這些硬件設備;數據區(qū)為程序中所用的數據工作單元;堆棧區(qū)則為使用子程序、中斷程序時,存放程序指針或被保護的參數。因此在設計系統(tǒng)程序時,應根據系統(tǒng)硬件所擴展的程序存儲器和數據存儲器來分配程序區(qū)、數據區(qū)和堆棧區(qū)。
專用系統(tǒng)的系統(tǒng)程序和單一的程序不同,根據程序功能的要求,系統(tǒng)程序可采用分支程序、循環(huán)程序、子程序、查表程序等不同的程序結構,但這些程序僅僅是為完成某一個功能需要而采用的設計方法。作為專用系統(tǒng)的系統(tǒng)程序必須具備一個完整的結構,它必須保證在系統(tǒng)上電的時候能自動啟動,并根據系統(tǒng)硬件的要求執(zhí)行一定的功能。為此必須解決程序啟動、系統(tǒng)初始化、堆棧使用和如何調用中斷程序等問題。一個完整的系統(tǒng)程序采用如下結構:
程序啟動地址定義 |
堆棧區(qū)設定 |
系統(tǒng)硬件初始化 |
數據區(qū)初始化 |
中斷程序入口地址設定 |
主程序、子程序 |
中斷服務程序 |
數據 |
1. 程序啟動地址
在設計單一的程序時,通常根據使用的工作平臺(如八位微處理器采用學習機、十六位微處理器采用PC機、微控制器采用仿真器)程序存儲器的地址安排來選用程序的起始地址。在設計系統(tǒng)程序時,為保證在系統(tǒng)上電時自動進入系統(tǒng)程序,必須按照所用微處理器或微控制器復位后的程序指針來決定程序的起始地址。為此在設計系統(tǒng)的硬件時必須將程序存儲器的地址與系統(tǒng)復位后的程序指針保持一致,同時在設計軟件時,也必須將程序的起始地址與系統(tǒng)復位后的程序指針保持一致。
不同的微處理器或微控制器復位后程序指針的值各不相同,如八位微處理器Z80復位后的程序指針為0000H,十六位微處理器INTEL 8086/8088復位后的程序指針為FFFF0H,微控制器MCS-51單片機復位后的程序指針為0000H。因此在設計這些微處理器或微控制器的系統(tǒng)程序時,必須將程序的起始地址按上述要求設置。
2. 系統(tǒng)初始化
系統(tǒng)初始化對系統(tǒng)所用的硬件和數據區(qū)進行初始化設定。根據系統(tǒng)對硬件的要求,尤其是可編程接口電路的使用都要求系統(tǒng)在使用這些硬件之前對硬件的工作方式進行設定。數據區(qū)初始化是將數據區(qū)的內容按程序的要求進行設定。
3. 堆棧設置
在設計子程序、中斷程序時,通常要用堆棧來存放程序指針或被保護的參數。在設計單一的程序時,通常不考慮堆棧的設置,這是因為所用的工作平臺已對堆棧進行了設置,而在設計系統(tǒng)程序時應根據微處理器或微控制器對堆棧的要求設置堆棧。堆棧是采用先進后出方式存放的隨機存儲器,在八位微處理器Z80和十六位微處理器INTEL 8086/8088中,它可位于隨機存儲器的任何地址,在數據壓入堆棧的時候,堆棧指針減小,而數據彈出堆棧的時候,堆棧指針加大。在微控制器MCS-51單片機中,規(guī)定堆棧必須在內部RAM的00H~7FH的范圍中,在數據壓入堆棧的時候,堆棧指針加大,而數據彈出堆棧的時候,堆棧指針減小。
堆棧設置是在存儲器中劃出一定的存儲區(qū)域作為堆棧使用,具體做法是設定堆棧指針,在使用堆棧時堆棧指針將改變,應保證在程序運行的過程中,堆棧指針始終在設定的范圍內。因此,在設計程序時應事先預計堆棧的大小,避免堆棧指針指向數據區(qū)或程序區(qū),或超出存儲器的范圍。
在數據壓入堆棧其指針減小的操作方式中,在使用堆棧時,堆棧指針先減1,然后將需壓入堆棧的內容傳送到指針指向的存儲器。在數據壓入堆棧其指針加大的操作方式中,在使用堆棧時,堆棧指針先加1,然后將需壓入堆棧的內容傳送到指針指向的存儲器。因此在設定初始堆棧指針時,總將其指向堆棧區(qū)之外的第一個單元,即比實際所用的堆棧地址大(或。1,以便在使用堆棧時從堆棧的第一個單元開始使用。
4. 中斷程序
在系統(tǒng)程序中,為了調用各種硬件設備,或調用特定的軟件,可采用程序中斷的方法。不同的微處理器或微控制器具有不同的進入中斷程序的方法。微處理器或微控制器的中斷處理功能越強,則該微處理器或微控制器構成系統(tǒng)的對外部設備調用的功能也越強。
中斷程序的設計包含了中斷入口地址的設置和中斷服務程序設計兩部分,前者規(guī)定了中斷服務程序的入口地址,當系統(tǒng)要求進入中斷程序時,從該入口地址進入中斷服務程序。根據微處理器或微控制器的結構,中斷服務程序的入口地址的設置各不相同。中斷服務程序則是以入口地址為起始地址的一段服務程序。與子程序不同的是,中斷服務程序以中斷返回指令結束,而子程序以一般的返回指令結束。類似于子程序,在中斷服務程序中為了保護參數,通常采用將數據或標志壓入堆棧的方法,此時應注意壓入和彈出指令的配對。
編輯:admin 最后修改時間:2018-05-08