打印

单片机编程—分时复用!怎么个用法?很少有人知道啊

[复制链接]
9093|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
luanfuming|  楼主 | 2011-6-10 19:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
luanfuming|  楼主 | 2011-6-10 19:48 | 只看该作者
我说的是软件上的分时复用,而不是引脚的分时复用!

使用特权

评论回复
板凳
hgjinwei| | 2011-6-11 07:22 | 只看该作者
什么叫软件上的分时复用,没明白。

使用特权

评论回复
地板
刘前辈| | 2011-6-11 10:52 | 只看该作者
由于这么个TDM问题没被录取工作可是太遗憾了。

分时复用就是把复杂的裸奔超循环程序分成若干N个独立的简单程序,——例如键盘扫描,AD采集,数据计算,输出,显示,等等——然后分时间片执行,看上去就好像N个子程序并行执行,复用一个CPU一样。

    招聘方若需要你拿出一个分时复用的程序例子,我送你一个C51写的。保证你一经演示,肯定能被录取。—— 去那都可惜了。



、、

使用特权

评论回复
5
nan_banqiu| | 2011-6-12 14:32 | 只看该作者
长见识

使用特权

评论回复
6
luanfuming|  楼主 | 2011-6-12 21:12 | 只看该作者
由于这么个TDM问题没被录取工作可是太遗憾了。

分时复用就是把复杂的裸奔超循环程序分成若干N个独立的简单程序,——例如键盘扫描,AD采集,数据计算,输出,显示,等等——然后分时间片执行,看上去就好像N个子程 ...
刘前辈 发表于 2011-6-11 10:52
你要这么说我就知道一些了,其实我是用过的只不过不知道那是 分时复用,并且也只知道点皮毛。我希望前辈给点学习的资料。
邮箱:lfm-luanfuming@163.com; 不胜感激!!!

使用特权

评论回复
7
云的追寻| | 2011-6-12 21:35 | 只看该作者
学习。。。

使用特权

评论回复
8
免证入网| | 2011-6-12 22:29 | 只看该作者
呵呵,有操作系统的皱形了

使用特权

评论回复
9
coody| | 2011-6-13 10:48 | 只看该作者
状态机就是一种分时复用,程序中不要经常出现ms级的延时或等待

使用特权

评论回复
10
seawaveqq| | 2011-6-18 13:08 | 只看该作者
看一下操作系统就应该知道分时复用的概念了

使用特权

评论回复
11
luanfuming|  楼主 | 2011-6-18 16:05 | 只看该作者
看一下操作系统就应该知道分时复用的概念了
seawaveqq 发表于 2011-6-18 13:08
基本上了解了一些,应付面试还能过得去了!哈哈

使用特权

评论回复
12
ahgao| | 2011-6-18 18:39 | 只看该作者
面试的时候你不是很理解题目的时候人家不给你解释吗?这又不是工业标准,谁知道“单片机的分时复用”到时指什么。两个人轮流用是不是也算分时复用。切。
没去成不可惜。

使用特权

评论回复
13
刘前辈| | 2011-6-19 12:15 | 只看该作者
本帖最后由 刘前辈 于 2011-6-26 17:00 编辑
#12L
……两个人轮流用是不是也算分时复用。切。


两个人分别写的独立不相关模块,同时载入一个单片机分时运行,本来就是分时复用的目标内容。没什么概念模糊。

一台计算机,接10个终端,(服务器模型)——典型的分时复用。10个程序员算不算是在轮流使用同一台计算机?  
    单片机用法一样。

给个典型的程序:模拟电梯:3X3=1~9键盘扫描; LED显示楼层数。在电梯上/下运行过程中,任意速率按下多个不同键盘数字,电梯都能跟随反复执行。举例:
    开机上电,电梯显示“1”层,按下数字键“9”,电梯启动以每秒一层的速率显示“2”、“3”、“4”……“8”、“9”;——如果在这上升8秒时间过程内,又连续按下数字键“1”,“8”,“5”,“7”,电梯到达第9层之后,连续循环运行下到第一层,——上到第8层,——再下到第5层,——在上到第7层;停止。

         别又有人说题目不合理,(不是我做不出来)应该……。
         应该的设计多了,作为学习,都是合理的。



、、

使用特权

评论回复
14
红金龙吸味| | 2011-6-19 13:22 | 只看该作者
刘前辈的题目出的好。

使用特权

评论回复
15
红金龙吸味| | 2011-6-19 13:26 | 只看该作者
光一个按钮检测就足够考倒一大批人。

许多设备输入需要连续不断的监测或者定期查询以保证不遗漏掉任何事件。考虑这样的一个系统: 按键按下的持续时间为250ms ,处理每一个按键事件需要花费500ms的时间。如果操作者连续快速的按下两个按键,则第二个按键可能根本就检测不到,这是因为,在处理器完成第一个按键事件响应处理并返回重新读取按键的时候,第二个按键已经释放了。由于两次按键的快速按下,而导致系统过载(overload)了。尽管事实上,在用户按键响应执行之前以及响应执行完毕之后CPU大部分时间都是在空转。
    为了避免这样不可靠的现象出现,输入硬件必须设计成中断驱动,或者由一个专门的任务进行输入检测: 该任务仅仅只监测和记录用户事件,但是并不执行由这些事件触发的处理过程。在RTOS中,可以采用一个专门的任务,周期性的轮巡这些设备。轮巡的时间周期则由输入设备特性,响应效率需求,以及处理输入设备所需消耗的时间共同决定。

使用特权

评论回复
16
刘前辈| | 2011-6-26 12:22 | 只看该作者
本帖最后由 刘前辈 于 2011-6-26 17:40 编辑
   15#
         ……为了避免这样不可靠的现象出现,输入硬件必须设计成中断驱动,或者由一个专门的任务进行输入检测: 该任务仅仅只监测和记录用户事件,但是并不执行由这些事件触发的处理过程。在RTOS中,可以采用一个专门的任务,周期性的轮巡这些设备。轮巡的时间周期则由输入设备特性,响应效率需求,以及处理输入设备所需消耗的时间共同决定。


按照15楼方法,给LZ个分时复用的例子:模拟电梯。
         
        电梯运行过程中,分时扫描键盘并记录按键事件在键盘缓冲区中,并不立即执行(无法立即执行),本次电梯外设事件控制运行结束后,继续运行键盘缓冲区中记录的键盘事件:

实验:打开下面 proteus文件 DianTi_D.DSN ,随意快速按下几个按键“9,1,8,5,7……”,看看效果。

注:本 proteus 电梯电路及程序框架均采用了ewby 坛友的设计,特此感谢。下载链接:
https://bbs.21ic.com/icview-239876-1-1.html#pid1696583


DianTi_A.rar (19.61 KB)
、、

使用特权

评论回复
17
aihe| | 2011-6-26 14:53 | 只看该作者
电梯这么运行的啊!
我是不会去坐这样运行的电梯的

使用特权

评论回复
18
aihe| | 2011-6-26 14:57 | 只看该作者
用来形容电脑的键盘输入还差不多

使用特权

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

本版积分规则

个人签名:宝剑锋从磨砺出  梅花香自苦寒来!!

4

主题

47

帖子

0

粉丝