找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2636|回复: 6
收起左侧

51单片机扩展外部中断口,需要检测下降沿或者上升沿

[复制链接]
ID:735148 发表于 2020-8-5 23:21 | 显示全部楼层 |阅读模式
1黑币
现在用的单片机是STC12C5608AD,宏晶的51单片机,只有两个外部中断口。因为需要检测四个外部中断源信号,检测到下降沿或者上升沿后用定时器计时,到下次中断出现清零,以此类推来获得方波信号源的周期时间。想过用遍寻的方式,试了之后效果不好,因为很有可能多个信号源出现变化的时间很贴近,很容易丢失。因此,想要通过扩展外部中断口的方式进行检测。看到网上很多都是用二极管扩展,但是,当我的一个信号变成低电平之后,另外一个也变成低电平就没有办法同时检测到。因此,来这里寻求大神们的指点,有什么办法可以在现有的基础上精确的检测到四个信号源。不胜感激!!

回复

使用道具 举报

ID:213173 发表于 2020-8-6 07:08 | 显示全部楼层
用与门电路扩展为多路输入,任何一路或多路信号都会触发中断,在中断函数中判断某一路或多路信号。 无标题.jpg

  1. #include "reg51.h"

  2. void main()
  3. {
  4.     IT0 = 1;
  5.     EX0 = 1;
  6.     EA = 1;     
  7.     while (1);
  8. }
  9. void exint0() interrupt 0
  10. {
  11.         unsigned char i;
  12.         i=P3&0xf0;
  13.         switch(i)
  14.         {
  15.                 case 0xe0: /*任务1*/ break;
  16.                 case 0xd0: /*任务2*/ break;
  17.                 case 0xb0: /*任务3*/ break;
  18.                 case 0x70: /*任务4*/ break;
  19.         //  case /*0xN0: 任务N*/ break;
  20.         }
  21. }
复制代码



回复

使用道具 举报

ID:86926 发表于 2020-8-6 08:13 | 显示全部楼层
按照你的说法是单片机处理速度不够快,如果可以提高时钟频率可以试试,不过希望不大。要不然就只能换芯片了
回复

使用道具 举报

ID:804115 发表于 2020-8-6 09:05 来自手机 | 显示全部楼层
可以用4编码器试试,4输入信号编码为两中断信号,然后中断服务程序中解码判断是哪个中断或者哪几个中断到来。
回复

使用道具 举报

ID:735148 发表于 2020-8-6 10:11 | 显示全部楼层
蓝魄 发表于 2020-8-6 08:13
按照你的说法是单片机处理速度不够快,如果可以提高时钟频率可以试试,不过希望不大。要不然就只能换芯片了 ...

我用的晶振是11.0592,使用的频率是19200,一会准备改成115200去试试
回复

使用道具 举报

ID:806146 发表于 2020-8-6 10:32 | 显示全部楼层
四条线并联,每条线上串联一个信号源,进行检测,就成了呗
回复

使用道具 举报

ID:639106 发表于 2020-8-7 15:25 | 显示全部楼层
把单片机换成STC8A8K16S4A12
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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