找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1571|回复: 10
打印 上一主题 下一主题
收起左侧

请教一下关于51单片机的外部中断

[复制链接]
跳转到指定楼层
楼主
ID:378990 发表于 2019-6-13 21:11 来自手机 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
第一个问题:图一中的“INT0”是什么干用的,还有它是哪来的,这个程序并没有“sbit INT0=xxx”。
第二个问题:图二为什么在中断函数中要加上“EX=0  …… EX=1”?如果不加会怎么样?

我想diy个手电,用stc15w408as,不论在什么情况,只要某个开关按下去,即当p3.2(INT0)为低电平时,进入中断程序,使MOS管导通,led点亮。(一键极亮功能)。然后别的档位用switch case。这个思路如何?刚刚开工,程序在图三。
初学,请多指教。

mmexport1560430719497.jpg (395.19 KB, 下载次数: 23)

mmexport1560430719497.jpg

Screenshot_2019-06-13-20-52-39-072_com.android.browser.png (80.8 KB, 下载次数: 29)

Screenshot_2019-06-13-20-52-39-072_com.android.browser.png

mmexport1560431306269.jpg (503.2 KB, 下载次数: 22)

mmexport1560431306269.jpg
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:277550 发表于 2019-6-13 22:53 | 只看该作者
1、INT0  在头文件中定义了

2、就是初始化外部中断。默认并不触发外部中断。

3、实现变档,最好是使用PWM驱动。
回复

使用道具 举报

板凳
ID:123289 发表于 2019-6-14 08:39 | 只看该作者
第一个问题:图一中的“INT0”是什么干用的,还有它是哪来的,这个程序并没有“sbit INT0=xxx”。
答:INT0的问题需要看硬件的设计目的。sbit INT0=xxx 是有的,只是你不知道,楼上的朋友告诉你了。

第二个问题:图二为什么在中断函数中要加上“EX=0  …… EX=1”?如果不加会怎么样?
答:都可以,需要根据整个系统的设计来决定,就目前你的水平,还不能理解这句话。慢慢来,功夫到了,你会应用自如的。这里提两个问题供你思考一下:
1、当你进入中断服务程序后,会发生其它中断?
2、你在执行中断服务程序时,怕不怕被其它中断打扰?
如果怕打扰,可以将可能打扰你的那个中断禁止,待你处理完成后,再开放它,是不是一个方法呢?
“EX=0  …… EX=1” :常用来禁止某个中断,发生于某段程序运行的地方。
回复

使用道具 举报

地板
ID:339320 发表于 2019-6-14 08:39 | 只看该作者
①、INT0是在<reg51.h>中定义了的,INT0上面的一杠代表:为低电平触发。
②、看此链接:http://www.51hei.com/bbs/dpj-140317-1.html
回复

使用道具 举报

5#
ID:562525 发表于 2019-6-14 16:10 | 只看该作者
典型的外部中断0按键处理程序:
EX0=0  
<>延时30毫秒
<>等待按键松开
EX0=1

就是说先关了外部中断0,等按键稳定后,再等按键松开
以防止按键按下时震动余波引起的误触发
你的程序没有考虑到按键震动的余波,所以会多次触发外部中断0。
但是这个半成品程序的外部中断0内容仅仅是不断将LED设置为点亮的状态,即使多次触发也不会影响,所以目前看不出来什么;如果想要在中断函数里面准确记录按键按下次数的话就会出问题的。
回复

使用道具 举报

6#
ID:207421 发表于 2019-6-14 17:54 | 只看该作者
可以在中断里面执行PWM调光等功能

释.JPG (269.74 KB, 下载次数: 20)

如图

如图
回复

使用道具 举报

7#
ID:517466 发表于 2019-6-14 21:15 | 只看该作者
楼主对C语言和51单片机的理解还不够啊。INT0的概念纯粹是C语言的知识,是为了在程序中操纵P3.2管脚时,使用的别称。除了能控制管脚输出信号,还可以配合控制寄存器和控制位,做单片机的设置工作,就像楼上给的资料那样。比如控制这个管脚是在收到下降沿信号的时候产生中断,还是遇到低电平的时候产生中断。
EX0是替代51单片机中的中断控制器(寄存器地址:0xA8)中的控制外部中断0使能的一个控制位(位地址:0xA8),用来控制当外部中断信号产生的时候,系统是否还响应这个中断。EX=0,意味着即使外部已经产生了中断信号,但系统不响应,不会进到中断处理程序中去处理。
建议楼主有时间的话,多看看单片机原理的书。
回复

使用道具 举报

8#
ID:378990 发表于 2019-6-14 22:53 来自手机 | 只看该作者
aiwenxue999 发表于 2019-6-14 08:39
①、INT0是在中定义了的,INT0上面的一杠代表:为低电平触发。
②、看此链接:http://www.51hei.com/bbs/d ...

求教一下,我发现reg51.h里面,写的是sbit INT0=0xB2,reg52.h里面,写的是sbit INT0=P3^2,这是什么意思?
回复

使用道具 举报

9#
ID:328668 发表于 2019-6-15 20:29 | 只看该作者
1 INT0头文件里定义了,也就是库里有了;
回复

使用道具 举报

10#
ID:328668 发表于 2019-6-15 20:34 | 只看该作者
1 INT0头文件里有了,也就是库里已经给你写好了;
2 中断的开关,开的时候进中断(满足条件),关的时候不进中断(满足条件);中断里写了是因为不让程序在中断里的时候就再一次进中断;


用占空比会比较好一点;控制亮度比较得心应手。
回复

使用道具 举报

11#
ID:480680 发表于 2019-7-24 16:56 | 只看该作者
沟里郭嘉 发表于 2019-6-14 22:53
求教一下,我发现reg51.h里面,写的是sbit INT0=0xB2,reg52.h里面,写的是sbit INT0=P3^2,这是什么意思 ...

第一个是INT0的地址,很多里面用的是sfr,第二个是INT0所作用的引脚
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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