阅读:1600回复:6
phlips固件程序外部中断为低电平触发”方式,若改为“沿触发”方式,可不可以,如何改动?
在mainloop.c中:外部中断:
void init_special_interrupts(void) { /*定义外部中断0为低电平触发*/ IT0 = 0; /*允许外部中断0*/ EX0 = 1; /*中断优先级设置*/ PX0 = 0; } 目前是“低电平触发”方式,若改为“沿触发”方式,可不可以, ,若只在void init_special_interrupts(void) 改这一个地方不行,我试过: IT0 = 1; /*定义外部中断0为沿触发触发*/ 是否,配合其他那些地方改动则可以? ---------------------------- 之所以问这个问题,是因为: 196KB KC是沿触发触发,而且不象51那样可以选择,所以我程序中,必须将“低电平触发”协调为“沿触发触发”方式。 因为:一上电D12的外部中断引脚D12INT已经给出了有效电平:低电平。若是51,我们选择电平触发方式,于是就进入外部中断服务程序;但现在是196,他要的是“跳变沿”,但恰巧这个“跳变沿”出不来,或已经“错过去了”, 于是根本进入不了外部中断。 一个可能的办法是在:利用MCU_D12RST = 0;和MCU_D12RST = 1; 在D12的复位上作手脚:让D12INT无效,再有效,可能这个“跳变沿”就出来了,因为该语句放的位置是我们 自己安排的,所以,一定可以被196捕捉到,但我不知什么原因: 多次: MCU_D12RST = 0; 中间加入延时 和MCU_D12RST = 1; 或许中间的延时匹配不好,仍然没有进入外部中断。 那位 知道上电,尤其是初始化时刻,D12INT的时序吗?或者D12的复位与D12INT的关系吗? |
|
沙发#
发布于:2002-08-19 15:48
在你上电初始化里断开pull-up resistor一会,再连上,因该会有新的中断产生,不用处理上电就有的中断。
|
|
板凳#
发布于:2002-08-19 18:32
请问,是那个上拉电阻?
|
|
地板#
发布于:2002-08-20 14:59
不会吧?就是modeset命令设置的softconnect.
|
|
地下室#
发布于:2003-06-09 12:06
呵呵,这个问题解决了没有啊?我也有这个问题地,我的cpu的int0和int1都已经用了,我只能用过int2~int5,而这几个中断都是边沿触发的,我不知道是否可以,应该来说,D12的int再没有中断的时候是高电平,有中断来的时候,它会变高,这时候就又一个下降沿,应该可以出发中断了啊,请问这样可不可以呢?
|
|
5楼#
发布于:2003-06-09 12:18
应该是可以的呀。
|
|
6楼#
发布于:2003-06-19 11:51
可是不知道为什么我这里就是不行啊,是不是还有什么地方需要设置的阿?
|
|