QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
我刚踏入单片机领域不久,AT89C51系列的,遇见了个问题,请教大家:
* D/ L! I& X1 |3 D立即响应的问题:/ H& d2 e9 B  C( T. Y8 R
当程序循环再某一个地方时,外部有需要立即响应的信号出现时怎么办?
: S2 }1 U7 m7 a' Y6 U* G& p& k 比如现在程序在让步进电机运行,同时需要检测超程检测,而此时需要的外部检测怎么处理
: @4 d) H# [6 c' K# B 假设用中断,但当程序运行在另外的地方时,又得需要中断,总起来哪的需要多少中断,怎么处理这些问题,希望同行帮助一下
发表于 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 编辑
$ |& h& }( Z/ q3 K( L$ J2 s7 L4 c% t: f4 H2 X4 e, P; h0 g
显然就是用中断来处理啊
发表于 2011-8-19 13:42:10 | 显示全部楼层 来自: 中国黑龙江大庆
采用中断处理应该能够解决问题。
 楼主| 发表于 2011-8-20 10:25:13 | 显示全部楼层 来自: 中国山东潍坊
谢谢上面的好心人,我只是想知道:
$ L7 {- t4 R2 r7 B( K9 M& ?2 ]我们知道PLC是用单片机来构成的,特别是80.90年代的PLC是用8031单片机来生产的,但是里面的各个输入,都是可以立即响应的,还有是时间继电器,可提供的资源那么多,我们怎样用单片机来实现PLC的功能?
( K" j$ B1 l2 F' U如果自己能将单片机设计的像PLC一样就好多了?
. C1 [/ q. \* n2 G: S9 j* t+ E敬请赐教!!
发表于 2011-8-31 17:15:00 | 显示全部楼层 来自: 中国广东佛山
PLC就是用单片机构成的呀!
发表于 2011-9-9 15:54:02 | 显示全部楼层 来自: 中国山东日照
中断信号就可以了
发表于 2011-9-17 21:55:43 | 显示全部楼层 来自: 中国广东广州
我说一下我以前用AT89C51做的一个步进电机控制电路吧。( q/ C: |, s  D0 X+ r8 r. c( K

/ x0 _- F# N" c: L+ H5 T7 A2 D单片机同时控制两个步进电机运动,步进电机使用半步工作方式,各用一个光电开关做超程检测。$ i# p2 W4 N  \0 O8 F( v. _
步骤如下:. E' S6 w) j8 r& ~
1、单片机给出脉冲使左步进电机行进半步;
% O* M. k& G! C" E( ~2、单片机检测左光电开关是否被遮挡(若遮挡,则表明超程),若没遮挡,则下一个循环时左步进电机可行进;
  b6 U& W3 y/ u" N3、单片机给出脉冲使右步进电机行进半步;
! T+ d6 [4 r% V. r$ R4、单片机检测右光电开关是否被遮挡(若遮挡,则表明超程),若没遮挡,则下一个循环时右步进电机可行进;
; W% A) m/ b1 ^$ [& v/ X% c$ L4 F我的电路还有一个128X64的液晶模块和5个按键,都是采用主程序大循环的方式来实现。特别是要实现液晶的菜单耗费了很多代码空间。) A' @' f& \5 T

2 Y4 x6 y5 G' G* |7 g这时完全没用到单片机宝贵的中断资源。
* ~/ ?. l: G- O( z. S* CAT89C51不做扩展的话可以实现4个外部中断(两个外中断和两个定时器工作方式为计数时实现的外中断),/ w( C5 o* \3 k) G% R! N
楼主看够不够用吧。

评分

参与人数 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 )

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