QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 3409|回复: 16
收起左侧

[讨论结束] 单片机的立即响应

[复制链接]
发表于 2011-6-18 09:57:38 | 显示全部楼层 |阅读模式 来自: 中国山东潍坊

马上注册,结识高手,享用更多资源,轻松玩转三维网社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
我刚踏入单片机领域不久,AT89C51系列的,遇见了个问题,请教大家:
" ~" _& Q* q# }- e  }' h' D( ?! ^7 o立即响应的问题:
" Y, t) D$ P% F4 a6 R7 J 当程序循环再某一个地方时,外部有需要立即响应的信号出现时怎么办?0 [2 b4 ^4 f* P3 `& m9 r
比如现在程序在让步进电机运行,同时需要检测超程检测,而此时需要的外部检测怎么处理
# {+ M6 s2 V$ [7 Z 假设用中断,但当程序运行在另外的地方时,又得需要中断,总起来哪的需要多少中断,怎么处理这些问题,希望同行帮助一下
发表于 2011-6-19 11:02:36 | 显示全部楼层 来自: 中国山西太原
对,我觉的像你说的情况就得是中断,一个中断源就可以啊。
发表于 2011-6-19 20:34:35 | 显示全部楼层 来自: 中国河北石家庄
中断响应 51单片机可以有2个外部中断 可以扩展
发表于 2011-7-30 08:38:31 | 显示全部楼层 来自: 中国上海
中段在软件里可以扩展的,参见KEILC51的资料
发表于 2011-8-18 15:35:19 | 显示全部楼层 来自: 中国浙江台州
本帖最后由 pangpang 于 2011-12-31 19:07 编辑
& ]2 p. `/ L9 i! J, b# g" U: W7 x4 Y; J
显然就是用中断来处理啊
发表于 2011-8-19 13:42:10 | 显示全部楼层 来自: 中国黑龙江大庆
采用中断处理应该能够解决问题。
 楼主| 发表于 2011-8-20 10:25:13 | 显示全部楼层 来自: 中国山东潍坊
谢谢上面的好心人,我只是想知道:/ j- X# n  L* W. C% ^8 v. b& K+ A
我们知道PLC是用单片机来构成的,特别是80.90年代的PLC是用8031单片机来生产的,但是里面的各个输入,都是可以立即响应的,还有是时间继电器,可提供的资源那么多,我们怎样用单片机来实现PLC的功能?# ~- C6 C* j5 \$ v* l4 k
如果自己能将单片机设计的像PLC一样就好多了?
4 Y* R8 T8 h7 a1 A: g敬请赐教!!
发表于 2011-8-31 17:15:00 | 显示全部楼层 来自: 中国广东佛山
PLC就是用单片机构成的呀!
发表于 2011-9-9 15:54:02 | 显示全部楼层 来自: 中国山东日照
中断信号就可以了
发表于 2011-9-17 21:55:43 | 显示全部楼层 来自: 中国广东广州
我说一下我以前用AT89C51做的一个步进电机控制电路吧。
5 z4 y4 l1 x! L7 P. E. ]. _- X# e) o5 k7 R; B
单片机同时控制两个步进电机运动,步进电机使用半步工作方式,各用一个光电开关做超程检测。8 e- U9 \4 m8 Z) f6 V- V! C
步骤如下:
) B7 J6 Z! e$ t! x4 J  F1、单片机给出脉冲使左步进电机行进半步;( W" f; O( B9 N6 H6 o) h5 o7 X% |
2、单片机检测左光电开关是否被遮挡(若遮挡,则表明超程),若没遮挡,则下一个循环时左步进电机可行进;0 \" H* K& g* m4 _% N2 V! H5 ]& S
3、单片机给出脉冲使右步进电机行进半步;. Z4 B4 v* Z! m( H$ O5 }& A( x
4、单片机检测右光电开关是否被遮挡(若遮挡,则表明超程),若没遮挡,则下一个循环时右步进电机可行进;
7 L4 @8 N& Y3 e我的电路还有一个128X64的液晶模块和5个按键,都是采用主程序大循环的方式来实现。特别是要实现液晶的菜单耗费了很多代码空间。
# d/ {/ E% p' ^2 x6 R) I9 \* @! h6 f$ R8 u4 j
这时完全没用到单片机宝贵的中断资源。9 F7 v" N- E% S" L
AT89C51不做扩展的话可以实现4个外部中断(两个外中断和两个定时器工作方式为计数时实现的外中断),
# ?) @5 p: D1 K0 G  R' {8 P楼主看够不够用吧。

评分

参与人数 1三维币 +8 收起 理由
pangpang + 8 应助,极其认真。

查看全部评分

发表于 2011-9-23 09:18:42 | 显示全部楼层 来自: 中国河北石家庄
可以外加芯片扩展中断源 也可以10#那样不停检测
发表于 2011-12-30 09:09:54 | 显示全部楼层 来自: 中国湖北武汉
使用中断,中断后再判断中断源即可,同时应该考虑中断源的优先级
发表于 2011-12-31 11:34:12 | 显示全部楼层 来自: 中国湖北潜江
10楼所述的是一种查询法的设计思路,这是一个解决的方法,但这种方法也有它的不足,就是反复不停地检查,这样会占用CPU的资源,对于整个程序响应的实时性有一定的影响,中断则相对来说实时性更好一些,但也面临资源相对紧张的问题,因此需要设计者有一定取舍。条条大路通罗马,解决问题不一定只有一个方法的,多学、多用,自然会写出更好的、更合理的控制程序。

评分

参与人数 1三维币 +3 收起 理由
pangpang + 3 认真、积极参予讨论。

查看全部评分

发表于 2012-1-10 14:22:00 | 显示全部楼层 来自: 中国北京
你可以分时复用啊,如果中断的话哪电机就得等中断结束了再起转。我的方法你可以让他们同时工作!
发表于 2012-1-15 22:29:56 | 显示全部楼层 来自: 中国上海
中断可以扩展
发表于 2012-5-22 14:00:38 | 显示全部楼层 来自: 中国福建漳州
中断,再加时间片管理处理。
发表于 2012-5-24 21:36:58 | 显示全部楼层 来自: 中国浙江杭州
中断处理啊
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


Licensed Copyright © 2016-2020 http://www.3dportal.cn/ All Rights Reserved 京 ICP备13008828号

小黑屋|手机版|Archiver|三维网 ( 京ICP备2023026364号-1 )

快速回复 返回顶部 返回列表