打印

提高单片机的实时性

[复制链接]
4328|22
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
renyaq|  楼主 | 2011-10-18 08:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
单片机程序既要不停的查询按键,又要动态刷新显示。
怎么才能做到实时?
沙发
renyaq|  楼主 | 2011-10-18 09:04 | 只看该作者
补充一点,我的单片机用于数据采集监控

使用特权

评论回复
板凳
dingy| | 2011-10-18 09:26 | 只看该作者
处理器要并行处理必然要分时咯

使用特权

评论回复
地板
renyaq|  楼主 | 2011-10-18 09:30 | 只看该作者
怎么进行分时?
是不是查询按键在一定时间(可设定)内没有按键强行退出去刷新数据?

使用特权

评论回复
5
supernan| | 2011-10-18 09:47 | 只看该作者
查询按键时别停留 将结果用累计变量保存好  查完就走…………   显示就利用人眼的错觉 每隔那么10~20ms去刷一次就ok啦

使用特权

评论回复
6
yszong| | 2011-10-18 09:51 | 只看该作者
一般情况下是这样。

使用特权

评论回复
7
llljh| | 2011-10-18 09:57 | 只看该作者
用实时系统啊

使用特权

评论回复
8
juventus9554| | 2011-10-18 10:02 | 只看该作者
这个实时是相对来说的。。。真想实时的话就一个MCU处理按键,一个MCU刷屏。。。哇嘎嘎
开个玩笑,当然是要按键能用中断解决就用中断,不能用中断就每隔100ms或再低一些的时间查询咯,显示的刷屏就没什么太高要求了,该怎么处理就怎么处理好了

使用特权

评论回复
9
栩栩如生| | 2011-10-18 10:13 | 只看该作者
就是把你整个系统的任务时间分配好,在固定时间只做固定的事情,但是每件事情都分得很精细。前后台思想,如果有条件可以参考时间触发嵌入式设计这本书的内容。

使用特权

评论回复
10
pengf| | 2011-10-18 10:19 | 只看该作者
其实你可以定时中断来刷新显示缓冲区,主程序里面来采集按键值和更新需要显示的数据.

使用特权

评论回复
11
renyaq|  楼主 | 2011-10-18 10:38 | 只看该作者
显示缓冲区是AD采样的数据,AD用的是中断。这个数据在中断中刷新是没有问题的.
关键是我对系统进行参数设置的时候不需要动态刷新显示。
在参数设置完毕后,希望没有按键的时候动态刷新显示

使用特权

评论回复
12
chuxh| | 2011-10-18 10:49 | 只看该作者
10MS中将所有的任务都查询一遍,当然有些任务可能只需要20或50处理一次,还有些可能需要1或5处理一次。
简单点确保你的MCU时时在做正事,而不是经常或有时在做软件延时,配合中断,这样的话实时一般是有保障的

使用特权

评论回复
13
栩栩如生| | 2011-10-18 10:52 | 只看该作者
既然是实时数据采集,那键盘和显示就不用扫描了,硬件完成就成了!

使用特权

评论回复
14
zwll| | 2011-10-18 10:56 | 只看该作者
由于数码管的特殊性,刷新时间间隔要短一点,键盘间隔可以长一点,总之就是,这些东西你没必要一直去处理,定时做就可以了,所以实现这一点,你可以用定时器,如果系统很大的话,建议引入操作系统

使用特权

评论回复
15
renyaq|  楼主 | 2011-10-18 11:00 | 只看该作者
嗯,了解了

使用特权

评论回复
16
chencheng| | 2011-10-18 12:15 | 只看该作者
划分时间片,比如用定时器产生1ms定时。分时多任务。

使用特权

评论回复
17
Breming| | 2011-10-18 12:44 | 只看该作者
如果MCU做的事比较多的话,可以用专门的按键显示芯片,MCU只管读写就行。。。

使用特权

评论回复
18
飞言走笔| | 2011-10-18 13:06 | 只看该作者
可以参考这个帖子~~
https://bbs.21ic.com/icview-237577-1-1.html

使用特权

评论回复
19
sysdriver| | 2011-10-18 19:46 | 只看该作者
总体系统来看,把问题分析好,思路上,理论上,都说得过去。
按键扫描,可以每10ms扫一次,扫到一个键和处理一个键,所用的时间一般不超过几百us。
动态显示,也可以每10ms刷新一次。
至于什么时候不想动态显示,完全可以用一个变量或标记位来控制。。。

从分析来看,AD采样占用一个定时器,产生10ms可以占用一个定时器,理论上没难度。

使用特权

评论回复
20
hopewise| | 2011-10-19 17:06 | 只看该作者
采用下面编程结构就行了
main:   
      mov      a,t_125us
      sub      a,40
      snz      c                              ;到了5mS吗   
     jmp      main                          ;没到,则跳到main
main1:
     clr       t_125us                      ;到了,则清t_125us变量
     snz    halt_b                          ;halt_b 等于1则进入睡眠状态
     jmp    $+2                             ;为0则正常执行指令
     jmp    sleep_man                   ;睡眠管理
     clr      wdt                             ;喂狗         
     call     key_scan_man              ;按键扫描管理   
     call     open_inspection_man    ;开门行程开关检测管理
     call     time_man                     ;时间管理                                 
     call     baojing_man                 ;报警输出管理
     call     sleep_test
     jmp    main

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

700

主题

10138

帖子

4

粉丝