打印

响应外部中断过程中,外部中断口能否切换成普通IO口?急急

[复制链接]
6407|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
常来21ic|  楼主 | 2008-7-18 11:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
aibxyz| | 2008-7-18 11:22 | 只看该作者

你把中断关了

就能当普通IO用

使用特权

评论回复
板凳
computer00| | 2008-7-18 11:34 | 只看该作者

8051单片机做的中断脚没有模式切换啊……

也就说,任何时刻都是中断触发引脚和普通IO口,没有模式切换的操作。

使用特权

评论回复
地板
常来21ic|  楼主 | 2008-7-18 11:47 | 只看该作者

00是真的么?

要是这个问题判了死刑,我就惨了  软件麻烦死了

使用特权

评论回复
5
lyjian| | 2008-7-18 11:54 | 只看该作者

外部中断口在任何时候都可以做普通IO口

本来就共用一个脚
你不开中断就行了,这个脚就是普通IO,可以做输入输出。
开了中断这个脚还是普通IO,还是可以做输入输出。
只不过作输出时你如果去写这个IO,也会触发外部中断而已。

使用特权

评论回复
6
AIRWILL| | 2008-7-18 12:13 | 只看该作者

ISR 里面关闭中断触发允许就是了

估计是怕 ISR 里更改 IO,导致锁定过多的中断状态吧

使用特权

评论回复
7
computer00| | 2008-7-18 13:02 | 只看该作者

51的同一个中断不会嵌套的啊,尽管改变就是了。

使用特权

评论回复
8
hab2000| | 2008-7-18 14:54 | 只看该作者

lz完了!

因为你用的是8051F!
该公司自作聪明,搞了个“交叉...”什么的,你可以在程序开始初始化,一旦选定,它的内部做了相应处理,再想当一般I/O是不行的!

我专门试过,定义了芯片内部的IIC,如果不采用芯片内部的IIC寄存器来操作,改用I/O口做模拟IIC,结果行不通!但关闭了“交叉...”设置,就可以用模拟IIC了!

当然了,看你实际用了哪个外部中断,不妨在程序中改变“交叉...”设置试试,但如果在此之后(优先级)还有“交叉...”的功能,死定了!后面的特殊功能对应的引脚会移到前面!!!

唉,真不知道Silicon的设计者是怎么想的,原以为灵活,其实束缚太多!还不如普通51呢!

使用特权

评论回复
9
hbicecream| | 2008-7-18 15:04 | 只看该作者

楼上正解,总担心交叉开关

总担心交叉开关改来改去,万一改错,或者寄存器意外改变,后果。。。。
呵呵

使用特权

评论回复
10
常来21ic|  楼主 | 2008-7-18 17:12 | 只看该作者

8楼

我先按照你说的试试先
o(∩_∩)o

使用特权

评论回复
11
huangqi412| | 2008-7-18 19:39 | 只看该作者

~~

使用特权

评论回复
12
lyjian| | 2008-7-18 23:06 | 只看该作者

8楼的说法不对

我用过C8051F系列芯片,交叉开关只是把功能模块连到pin脚而已,对相应脚的IO功能没任何影响。
中断和IO没任何影响,我在产品中也用了。
8楼明显对C8051F的交叉功能理解不够。

使用特权

评论回复
13
hbicecream| | 2008-7-19 02:10 | 只看该作者

...

图9.13 IT01CF:INT0/INT1配置寄存器
IN1SL2-0:/INT1端口引脚选择位
这些位用于选择分配给/INT1的端口引脚。注意,该引脚分配与交叉开关无关;/INT1将监视分配给它的端口引脚,但不影响被交叉开关分配了相同引脚的外设。如果将交叉开关配置为跳过这个引脚(通过将寄存器P0SKIP中的对应位置‘1’来实现),则该引脚将不会被分配给外设。
IN1SL2-0
IN0PL:/INT0极性
0:/INT0为低电平有效。
1:/INT0为高电平有效。
位2-0:
IN0SL2-0:/INT0端口引脚选择位
这些位用于选择分配给/INT0的端口引脚。注意,该引脚分配与交叉开关无关;/INT0将监视分配给它的端口引脚,但不影响被交叉开关分配了相同引脚的外设。如果将交叉开关配置为跳过这个引脚(通过将寄存器P0SKIP中的对应位置‘1’来实现),则该引脚将不会被分配给外设。

使用特权

评论回复
14
常来21ic|  楼主 | 2008-7-19 08:45 | 只看该作者

to:lyjian,关于交叉功能的理解!

能否通俗的讲解下交叉功能?是不是引脚可以配置成ad输入、外部中断输入、SPI、IIC等多种功能模块的意思?
手册上说的不够通俗,没有理解到,写代码的时候只会参考它给的例程,对交叉功能  完全没有理解,,呜呜呜呜......

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

40

主题

1178

帖子

0

粉丝