MCS-51單片機系統(tǒng)程序的設計
微控制器MCS-51單片機具有64K程序存儲器和64K數據存儲器的尋址能力。其數據存儲器和I/O設備統(tǒng)一編址均在64K的范圍內。其復位后的程序指針為0000H,因此在設計系統(tǒng)的硬件時必須將程序存儲器的地址安排在0000H開始的存儲器,使其與系統(tǒng)復位后的程序指針保持一致。同時在設計系統(tǒng)程序時,也必須將程序的起始地址安排在0000H開始的單元中。INTEL MCS-51單片機采用了5個中斷,即外部中斷0、定時器T0中斷、外部中斷1、定時器T1中斷和串行口中斷,這5個中斷的中斷服務程序入口地址分別為0003H、000BH、0013H、001BH和0023H。這樣在地址0000H到0003H之間只有3個字節(jié),因此在啟動地址通常只能安排轉移指令,使程序在啟動后轉移到主程序。如需在程序中使用中斷,就要在中斷服務程序入口地址內存放相應的轉移指令,在執(zhí)行中斷程序時,通過這5個地址的轉移指令跳轉到相應的中斷服務程序中。
MCS-51單片機的堆棧安排在內部RAM的00H~7FH單元。由于00H~1FH為寄存器組,20H~2FH為位操作單元,此外還需在30H以后的地址安排部分工作單元,因此堆棧通常只能安排在大于30H的內部RAM中。MCS-51單片機的堆棧操作采用了在數據壓入堆棧的時候,堆棧指針加大,而數據彈出堆棧的時候,堆棧指針減小的方法,因此可將堆棧指針設置為在內部RAM中堆棧的最小地址減1。應估計子程序和中斷程序使用的數量和數據壓入、彈出堆棧的數量,以確定堆棧的大小。如堆棧估計不足將會使堆棧指針超出內部RAM(7FH)的范圍,這樣將可能使壓入的數據無法恢復,也可能使壓入堆棧的程序指針丟失,而后者將導致程序無法執(zhí)行,形成死機。

編輯:admin 最后修改時間:2018-05-08