zengwei 发表于 2011-11-13 00:58:37

c8051f020中断问题

大家好 我用c8051f020做了一个简单的外部中断实验 我发现当没有外部中断的时候 程序自动跳到外部中断了 是什么原因呢
#include<c8051f020.h>
#include<intrins.h>

void I0_init()       //IO端口初始化配置
{
           unsigned int m;
        //关闭看门狗
        WDTCN=0xde;
        WDTCN=0xad;       

    //交叉开关使能,但没有进行外围设备配置
        XBR0=0x00;      
        XBR1=0x04;                        //外部中断0连接到端口引脚P0.0
        XBR2=0xc0;           //交叉开关允许,弱上拉全局禁止

    //引脚输出配置
    P74OUT=0x03;   //将P4口全部设置为推挽模式做为指示信号

        P1MDOUT=0xef;       //P1.4口设置为开漏模式,其余端口设置为推挽模式

    //晶振配置,采用外部晶振22.1184MHz
    OSCXCN    = 0x77;                            //晶体振荡器方式二分频
    for (m = 0; m < 3000; m++);// Wait 1ms for initialization
    while ((OSCXCN & 0x80) == 0);
    OSCICN|= 0x88;               //外部石英晶振,22.1184MHZ                  11100111               
}

/*************************************************************************************
* 函数名称:Delay_us;
*
* 函数功能描述:延时程序,延时时间范围:1~65535us;
*
* 输入参数:times: unsigned int, 延时时间变量;
*
* 返回数据:none;
*
* 注意: 延时时间最大是65535us,不要超过这个值;
**************************************************************************************/
void Delay_us(unsigned int times)
{
    unsigned int i;

        for (i=0; i<times; i++)
        {
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
        }             
}

/**************************************************************************************
* 函数名称:Delay_ms;
*
* 函数功能描述:延时程序,延时时间范围:1~65535ms;
*            
* 输入参数:times: unsigned int, 延时时间变量;
*
* 返回数据:none;
*
* 注意: 延时时间最大是65535ms,不要超过这个值;
**************************************************************************************/
void Delay_ms(unsigned int times)
{
    unsigned int i;

        for (i=0; i<times; i++)       
                Delay_us(1000);
}

/**************************************************************************************
* 函数名称:Delay_s;
*
* 函数功能描述:延时程序,延时时间范围:1~65535s;
*            
* 输入参数:times: unsigned int, 延时时间变量;
*
* 返回数据:none;
*
* 注意: 延时时间最大是65535s,不要超过这个值;
***************************************************************************************/
void Delay_s(unsigned int times)
{
        unsigned int i;

        for (i=0; i<times; i++)
           Delay_ms(1000);       
}


void Outside_Init(void)                          //控制中断寄存器设置
{
        EX0 = 1;      //开外部中断0
        IT0 = 1;       //下降沿触发外部中断
        EA = 1;             //开总中断
}

void main()
{
I0_init();
Outside_Init();
while(1);
}

void Outside_Int(void) interrupt 0
{
P4=0x00;
Delay_s(1);
P4=0xff;
}
麻烦大家看一下

zengwei 发表于 2011-11-13 10:04:43

这个现象很奇怪啊。

zengwei 发表于 2011-11-13 15:15:52

有时候程序跳不出中断是什么原因?

S沙and 发表于 2012-8-28 19:33:35

你好,刚刚看到你之前的一个问题,关于c8051f020的中断问题,我也出现了同样的情况,你的解决了没???

linucos 发表于 2012-8-28 19:51:01

帮你们俩顶顶看!
页: [1]
查看完整版本: c8051f020中断问题