俺说说问题一:这是一个多任务运行的例子,对于51,处理多线程任务,只能采用分时复用控制;
问题二:由于程序运行中要频繁的被中断,因此断点的保护就尤其重要;
解决:
程序分为主程序,线程分配程序,控制服务程序.
在线程分配程序中,设置线程序号寄存器,对每个控制子程序,设置不同的堆栈段.通过检测线
程序号寄存器决定下一个要执行的线程,将相应堆栈段内的内容出栈,从该程序上次反回断点
处继续执行.
将每个控制服务程序人为的划分成一些小段(时间不能过长100MS左右),中间插入执行状态入
栈指令,并将线程序号寄存器内容加一,然后反回线程分配程序.
使用一个通用定时器中断T0或T1,设置一个定时器状态字,设置定时常数,每次中断定时器状
态字加一.控制服务程序中所有的延时,由检测定时器状态字的差值来实现.