标题: MCU中断是如何产生的? [打印本页]

作者: zhangzhao2423    时间: 2021-10-21 15:39
标题: MCU中断是如何产生的?
如图,系统初始化keybus=P0  且初始化 keybus=0xf1
问题是,按键按下去,外部中断是如何知道的。且P0^0怎么会等于0,初始化被置1,当有按键按下去应该是P0八个位的状态应该是xxxx0001,
请MCU高手指点一下






作者: 188610329    时间: 2021-10-21 16:22
1是高电平, 0是低电平, 按键按下去, 就是把IO和地接通,那么IO就是低电平,就是0了。和你设置1没有关系。任何高电平的输出,接了地之后(只要电路设计合理不烧掉),电平都会被拉低到地。
作者: xuyaqi    时间: 2021-10-21 16:48
要把硬件电路告诉大家。
作者: zhangzhao2423    时间: 2021-10-22 09:07
188610329 发表于 2021-10-21 16:22
1是高电平, 0是低电平, 按键按下去, 就是把IO和地接通,那么IO就是低电平,就是0了。和你设置1没有关系。任 ...


一共是9个按键,它的键值分别是
bc: 1011 1100
ec: 1110 1100
ea: 1110 1010
ba: 1011 1010
da: 1101 1010
d6: 1101 0110
b6: 1011 0110
e6: 1110 0110
dc: 1101 1100
我想知道最后一位都是0,怎么来的?程序里并没有赋值给他,初始化也是0XF1

作者: Y_G_G    时间: 2021-10-22 13:26
1,你不上传代码,截图都是不全的,网友也不知道怎么回事
2,你的图是0.0-0.7,这是P0端口的意思吗?如果是,那跟中断0是没有关系,中断在P3端口
如果不是,这0.0+0.7是什么意思?
3.你画的这网格,这是不是表示这是一个4*4键盘?
4,你截图中还有看门狗,这跟按键有关联吗?
作者: 707707    时间: 2021-10-22 13:37
请再给我们一些详细的信息,代码没有截全欸
作者: zhangzhao2423    时间: 2021-10-22 14:03
Y_G_G 发表于 2021-10-22 13:26
1,你不上传代码,截图都是不全的,网友也不知道怎么回事
2,你的图是0.0-0.7,这是P0端口的意思吗?如果是,那跟 ...

0.0到0.7是P0端口的意思 为什么说跟中断0没有关系啊?画的图是4x4的矩阵键盘示意图,但是可能程序里只用了3X4的矩阵,因为P0.0一直为低电平。

那个截屏就是系统初始化里面的,我把它重新上传一下,那个开门口跟矩阵键盘没有关系。


作者: fxmeiqi    时间: 2021-10-22 15:38
#在这里快速回复#要让 CPU 中断当前的程序去做其他事情,需要向它发出请求信号,CPU 接收到中断请求信号后才能产生中断。让CPU产生中断的信号称为中断源(又称中断请求源)。  MCS-51系列单片机的中断源包括:两个外部中断源、两个定时器/计数器中断源和一个串行通信口中断源,如果它们向 CPU 发出中断请求信号,CPU 就会产生中断,停止执行当前的程序,转而去执行指定的程序(又称中断服务程序或中断子程序),执行完后又返回来执行原来的程序。
作者: Y_G_G    时间: 2021-10-22 15:43
zhangzhao2423 发表于 2021-10-22 14:03
0.0到0.7是P0端口的意思 为什么说跟中断0没有关系啊?画的图是4x4的矩阵键盘示意图,但是可能程序里只用 ...

EX0中断是P3.2端口,它是由P3.2触发的,跟P0是没有关系的,除非P0在硬件上控制P3.2
作者: zhangzhao2423    时间: 2021-10-22 16:12
Y_G_G 发表于 2021-10-22 15:43
EX0中断是P3.2端口,它是由P3.2触发的,跟P0是没有关系的,除非P0在硬件上控制P3.2

这个是C8051F020系列的,跟交叉开关设置有关系

作者: Y_G_G    时间: 2021-10-22 16:57
zhangzhao2423 发表于 2021-10-22 16:12
这个是C8051F020系列的,跟交叉开关设置有关系

那P0.0到0.7到底有没有连接到P3.2?
如果有,那就有关系
如果没有,那就没有关系
作者: zhangzhao2423    时间: 2021-10-22 19:15
Y_G_G 发表于 2021-10-22 16:57
那P0.0到0.7到底有没有连接到P3.2?
如果有,那就有关系
如果没有,那就没有关系




单片机使用的时C8051F020系列的,外部中断0由交叉开关设置到引脚P0.0上面去了
,现在问题是为什么所有按键按下去,P0.0都是低电位,这是怎么做到的

作者: njzr    时间: 2021-10-22 19:59
楼主的电路图如此蒙太奇,很难理解啊。手画没关系但要画清楚,按钮在矩阵中如何连接?有没有二极管之类的器件?交叉相接的线要画个点
作者: Y_G_G    时间: 2021-10-22 22:00
zhangzhao2423 发表于 2021-10-22 19:15
单片机使用的时C8051F020系列的,外部中断0由交叉开关设置到引脚P0.0上面去了
,现在问题是为什么 ...

水平有限,看了半天,实在看不明白这交叉到底是怎么配置的,只知道端口可以选择而已,其它的什么都看不明白
作者: zhangzhao2423    时间: 2021-10-23 08:25
njzr 发表于 2021-10-22 19:59
楼主的电路图如此蒙太奇,很难理解啊。手画没关系但要画清楚,按钮在矩阵中如何连接?有没有二极管之类的器 ...

就这样的矩阵按钮示意图,有没有二极管就不清楚了,这是硬件部分的限电流,应该与程序关系不大。程序里用的是3X4的矩阵,但实际上只用到了3X3,还有三个保留未用。然后P0.0为低电平时做外部中断用,问题是按钮按下去,P0.0是如何变为低电平的。





作者: zhangzhao2423    时间: 2021-10-23 08:30
Y_G_G 发表于 2021-10-22 22:00
水平有限,看了半天,实在看不明白这交叉到底是怎么配置的,只知道端口可以选择而已,其它的什么都看不明白


按键示意图是这样的,但是不明白为什么按键按下去P0.0会变为低电平。

作者: Y_G_G    时间: 2021-10-23 11:45
zhangzhao2423 发表于 2021-10-23 08:30
按键示意图是这样的,但是不明白为什么按键按下去P0.0会变为低电平。

上传原代码就有那么难?我看不出这是不是商业机密,如果是项目用到这个,那就得你自己解决了
STC的8051它不香?资料多,学的人多,基本是没有什么难到全网都搞不定的地步
P0.0和P00.1同时按下,0.0端口通过0.1下拉,这不就有低电平了吗?
作者: zhangzhao2423    时间: 2021-10-23 13:28
Y_G_G 发表于 2021-10-23 11:45
上传原代码就有那么难?我看不出这是不是商业机密,如果是项目用到这个,那就得你自己解决了
STC的8051它不 ...

好的,我来上传原代码文件,我已经把它弄成压缩包上传了

小白项目.zip

182.96 KB, 阅读权限: 70, 下载次数: 5

原代码文件


作者: wujin0731    时间: 2021-10-24 09:18
51中断在P3
作者: zhangzhao2423    时间: 2021-10-25 08:02
wujin0731 发表于 2021-10-24 09:18
51中断在P3

C8051F系列的中断可以通过交叉开关功能设置到P0.0
作者: Jiang_YY    时间: 2021-10-25 20:04
压缩包下不了。按你的按键示意图,按键没有用到P0.7和P0.0。P0.7一直是高,估计你没有其它地方用到,P0.0按照你的说法是使用交叉配置成中断输入了,所以查一下规格书,被配置成中断输入的IO,直接读的时候是不是就是固定'0'了?
作者: charlyking    时间: 2021-10-25 20:26
这个是按键扫描输入吧
作者: Jiang_YY    时间: 2021-10-25 22:10
Jiang_YY 发表于 2021-10-25 20:04
压缩包下不了。按你的按键示意图,按键没有用到P0.7和P0.0。P0.7一直是高,估计你没有其它地方用到,P0.0按 ...

示意图最好画的更明确一些,这个是按照你画的图,P0.0和P0.7理解为没有连接,直接悬空的状态来看的。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1