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