MCS-51单片机系统程序的设计

微控制器mcs-51单片机具有64k程序存储器和64k数据存储器的寻址能力。其数据存储器和i/o设备统一编址均在64k的范围内。其复位后的程序指针为0000h,因此在设计系统的硬件时必须将程序存储器的地址安排在0000h开始的存储器,使其与系统复位后的程序指针保持一致。同时在设计系统程序时,也必须将程序的起始地址安排在0000h开始的单元中。
intel mcs-51单片机采用了5个中断,即外部中断0、定时器t0中断、外部中断1、定时器t1中断和串行口中断,这5个中断的中断服务程序入口地址分别为0003h、000bh、0013h、001bh和0023h。这样在地址0000h到0003h之间只有3个字节,因此在启动地址通常只能安排转移指令,使程序在启动后转移到主程序。如需在程序中使用中断,就要在中断服务程序入口地址内存放相应的转移指令,在执行中断程序时,通过这5个地址的转移指令跳转到相应的中断服务程序中。
mcs-51单片机的堆栈安排在内部ram的00h~7fh单元。由于00h~1fh为寄存器组,20h~2fh为位操作单元,此外还需在30h以后的地址安排部分工作单元,因此堆栈通常只能安排在大于30h的内部ram中。mcs-51单片机的堆栈操作采用了在数据压入堆栈的时候,堆栈指针加大,而数据弹出堆栈的时候,堆栈指针减小的方法,因此可将堆栈指针设置为在内部ram中堆栈的最小地址减1。应估计子程序和中断程序使用的数量和数据压入、弹出堆栈的数量,以确定堆栈的大小。如堆栈估计不足将会使堆栈指针超出内部ram(7fh)的范围,这样将可能使压入的数据无法恢复,也可能使压入堆栈的程序指针丢失,而后者将导致程序无法执行,形成死机。