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