如何在一片51单片机中实现两个不同模块的主程序

2025-01-05 06:08:29
推荐回答(3个)
回答1:

什么叫“不同模块的主程序”?
如果您的意思是,要在单片机内宏观上“同时”执行两个任务的程序,那么,有很多种办法。

其一,道理最简单的,是将这两个任务合理安排好其中各个步骤的时间次序,编到同一个程序中。
这个方法最容易理解,但是,假如这两个任务各有其灵活性,难以固定编排其执行的步骤次序,就不好用这种方法了。

另外的方法,就是编成两个进程的程序,然后采用进程调度的办法,使CPU可以分时轮流交替来执行这两个进程。只要交替的频度足够,宏观上就可以看做两个任务在“同时”执行。
具体的办法有很多种,“操作系统”教材中有专门的介绍。

在单片机上,常用的一种办法是利用中断机制。
例如,这两个进程中,某一个进程可以安排成周期性的操作,那么可以利用定时器的周期中断,在中断服务程序中执行这个进程的任务,每个节拍(即每次中断)执行一步。而另一个进程,则可以放在主程序中,编成一个“死循环”的形式持续执行其任务。

这样,主程序中执行第二个任务的期间,每当定时间隔时间到,就会打断第二个任务,进入中断服务程序中执行第一个任务,第一个任务这一节拍执行完后,中断返回,就会回到主程序中继续执行刚才被打断了的第二个任务。

编程时需要注意的是,第二个进程的程序中,如果有某些操作是不允许打断的,可以在这些操作前关中断,操作后开中断。这样,第一个进程的中断响应如果碰巧发生在关中断的瞬时,中断虽不会马上响应,但中断“挂号”依然有效,只不过稍微迟了一点响应。总体上不会有错。

回答2:

我很负责任的告诉你,不,可,能

回答3:

采用调用函数的方法