请教如何让系统实时性更强

2020-02-05 09:01发布

本帖最后由 fengtianzhifeng 于 2012-6-19 13:56 编辑

请问下大家~谁能给我说下
时间片轮转调度算法~举个很简单的例子我的小系统中有4*4的矩阵键盘,有LCD1602,还有ADC转换器。当我只测试LCD1602的时候没什么问题,测试键盘也没有什么问题~测试AD也没有问题,但是只要把这些模块集合到一起就会出问题,单片机的执行周期变的很大,浪费了很多很多时间,单片机就是属于站着等待了,而不是跑着等待,说的通俗点就是系统的实时性变的超级差~请问大家有什么解决的法子
更通俗点就是如何实现多任务
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
29条回答
xyr
1楼-- · 2020-02-08 17:04
 精彩回答 2  元偷偷看……
fengtianzhifeng
2楼-- · 2020-02-08 17:40
xyr 发表于 2012-6-20 17:30
长任务可分几次完成。周期控制在1MS,那你的程序时时性就会很强。

额~主要的问题是如何才能把长任务分配成很多个小任务呢?请指教
daicp
3楼-- · 2020-02-08 20:25
定时中断+状态机
daicp
4楼-- · 2020-02-09 01:34
void delay1ms(unsigned char a)

{

        unsigned char i=0,j=0;

          for(i=0;i<a;i++)

                  for(j=0;j<110;j++)

                        ;

}

用这个延时,实时只是个遥不可及的愿望
xiaobendan001
5楼-- · 2020-02-09 04:37
延时比如10MS,那么你的定时器设置为1MS,然后再弄个变量,让他=10,然后在定时中断里面每次减一,当该变量==0时,做你想做的事情,就这样了
这个定时器锁消耗的只有1US不到的时间,当然是1MS中的,假设是1US,那么同样的延时你可以获得1000个才能让CPU满负荷以至于主循环的程序基本上不能被执行了。
要让你的系统在一个定时器周期中干更多的活,那就只有尽量提高主频了。

一周热门 更多>