❶ 单片机怎么同时调用数组中的多个数据
单备此兄片机同时调扒氏用数组中的多个数据可以用分时的方案平衡仿袭各个任务的处理时间。比如,我们可以引入一个计数器i,假如有5个任务,可以让i在0~4之不断循环,当i=0时执行任务1,当i=1时执行任务2,当i=3时执行任务4,当i=4时执行任务5就可以了。
❷ 怎么实现单片机多个函数功能同时执行
设计主要思想:
单片机不可能同时执行多个函数,但是可以先后执行程序给他安排的每一件事,假如每个事件间隔时间非常短,ms、us级别,或者间隔时间更短,那么连续一段时间内执行的事件,看起来就是同时执行的。每一个事件可以看做一个或多个函数,也就意味着只要程序安排的合理,很多函数看起来是同时运行的;
模型举例:假如要做几件事,烧开水,洗衣服,打游戏;
A:烧开水,等好了之后,洗衣服,洗完之后,打游戏;
B:烧开水,洗衣服时监听水壶的声音,两件事执行完,打游戏;
C:选择一个烧水开了会停止工作的电水壶,不要等了,用洗衣机洗衣服,打游戏;
耗时:A最长,其次B,C最短。
不同的工具占用人时间精力也是不同的,同理单片机周围外设选择不同,也会影响CPU占用时间;
实例:
要求:假如单片机要“同时”执行,数码管显示、蜂鸣器、流水灯移动;
具体实施A:设置一个定时器,假如每隔1ms进入中断,设置几个全局变量x、y、z,定时器中断里自加,在程序主循环里查询全局变量的数值,当x大于500后,清零x,让流水灯移位,当y大于,1000时清零y,数码管加1,当z大于2时,清零z,反转控制蜂鸣器的IO电平,以此类推其他事情也是如此。
具体实施B:设置单片机本身PWM驱动蜂鸣器,设置一个定时器,假如每隔1ms进入中断,设置几个全局变量x、y、z,定时器中断里自加,在程序主循环里查询全局变量的数值,当x大于500后,清零x,让流水灯移位,当y大于,1000时清零y,数码管加1,以此类推其他事情也是如此。
使用内部PWM资源可以更省CPU时间!
总结:
如果外设资源不足只能算法来补充;
以上方法适合资源较少的单片机,若是单片机资源够多(RAM>4K,Flas>8K),很多实时操作系统可以选择:ucos,FreeRTOS等,这些实时操作系统可以方便管理事件的切换。
❸ 求教:单片机怎么同时运行几个程序啊
你说的是状态机。你可以立一个flag表示模式,模式一,模式二,模式三,这样循环运行,那你可能要问了,我每个模式程序的有延时怎么办?
这时可以用定时器,定时器flag时间到了,主程序判断运行某一个模式的下一步。
又或者你是比较简单的程序不用定时器,比如电机,每4S开关,蜂鸣器每2S开关,取你最小的延时时间。那么程序只需要放一个2S延时对应的flag,flag%1==0,蜂鸣器开关,flag%2==0,电机开关。