打印

中颖技术支持请进!!!!中断问题!!急急急急急

[复制链接]
2718|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zf.lc|  楼主 | 2008-4-25 08:54 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
下面是SH67P847的PDF说明:
Port Interrupt
The PORTA.3 are used as external port interrupt sources. Only the voltage transition from VDD to GND applying to the digital input port can generate a port interrupt. The analog input cannot generate any interrupt request.
Port Interrupts (including other external interrupt sources) can be used to wake up the CPU from the HALT or the STOP mode.

但我在测试程序时会发现上升沿同样能触发此中断,而且并不是每次都能触发.不知为何.应如何配置??? 我的程序就是一个按键.上电后程序进STOP,按键按下时通过此中断唤醒程序工作,再次按下程序再进STOP.相应程序见下面:

同样的问题在SH69P20这颗芯片中,使用PA0,PA3中断时,设置为下降沿触发,上升沿同样能触发!

//---------------中断初始化--------------------
                 LDI IRQ,0000B
                 LDI IE,0001B
                 NOP
                 STOP
                 NOP
MAIN:            NOP
                 LDA STATE,0
                 BNZ RUN_PRG
                 LDA HOLD_CNT,0
                 BNZ RUN_PRG
                 LDI HOLD_CNT,HOLD_CNT_VAL
                 ANDIM PORTA,1011B
                 LDI IE,0001B
                 STOP 
                 NOP
//-------------------------------------------------------                   
                 NOP
                 NOP
RUN_PRG:         LDI IE,0100B                 
                 NOP
                 HALT
                 NOP
                 NOP
                 JMP MAIN

;============================================================
;PORT中断服务子程序    
PINT_SVR:        NOP
//---------------IO初始化----------------------
                 LDI PORTA,0000B
                 LDI PACR,0100B
                 LDI PPACR,0100B
                 LDI PORTB,0000B
                 LDI PBCR,0000B
                 LDI PPBCR,0000B
//---------------AD初始化----------------------
                 LDI ADCON,0000B
//---------------PWM初始化---------------------
                 LDI PWMCON,0000B
//---------------TIMER0 初始化-----------------
                 LDI TL0,03H
                 LDI TH0,08H
                 LDI TM0,0111B            
//---------------中断初始化--------------------
                 LDI IRQ,0000B
                 LDI IE,0001B
//---------------寄存器初始化-----------------
                 LDI K1ST,00H
                 LDI K2CD,00H
                 LDI SUB_CNT_L,SUB_CNT_L_VAL
                 LDI SUB_CNT_H,SUB_CNT_H_VAL
                 LDI MY_CNT,MY_CNT_VAL
                 LDI HOLD_CNT,HOLD_CNT_VAL
                 LDI OUT_L_CNT,OUT_L_CNT_VAL
                 LDI OUT_H_CNT,OUT_H_CNT_VAL
                 LDI STATE,00H
        
                 LDI IE,0100B
                 LDI IRQ,00H
                 RTNI
                 NOP

沙发
zf.lc|  楼主 | 2008-4-25 11:24 | 显示全部楼层

ACC对我的这个应用不重要,因为我只用PORT中断唤醒程序,唤醒后所以的都重新初始化的.
按键的处理我是放在TIMER0中断中的,有去抖处理.

你所说的按键抖动,我是这样检测的:我按下按键不放开,这时程序正常进行STOP状态,示波器显示为低电平,然后我松开按键,发现程序退出STOP状态,仿真头HALT灯亮,因为我程序中有按键判断,所以发现按键并没有按下,50ms后重新进入STOP状态.
用示波器并没有发现这种抖动.

使用特权

评论回复
板凳
zf.lc|  楼主 | 2008-4-25 11:27 | 显示全部楼层

warm_ice

warm_ice 能否告诉你贵姓呀!!
不知道你有没有QQ,方便以后有问题请教

使用特权

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

本版积分规则

13

主题

26

帖子

0

粉丝