搜索
bottom↓
回复: 4

c8051f020中断问题

[复制链接]

出0入0汤圆

发表于 2011-11-13 00:58:37 | 显示全部楼层 |阅读模式
大家好 我用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;
}
麻烦大家看一下

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

 楼主| 发表于 2011-11-13 10:04:43 | 显示全部楼层
这个现象很奇怪啊。

出0入0汤圆

 楼主| 发表于 2011-11-13 15:15:52 | 显示全部楼层
有时候程序跳不出中断是什么原因?

出0入0汤圆

发表于 2012-8-28 19:33:35 | 显示全部楼层
你好,刚刚看到你之前的一个问题,关于c8051f020的中断问题,我也出现了同样的情况,你的解决了没???

出0入0汤圆

发表于 2012-8-28 19:51:01 | 显示全部楼层
帮你们俩顶顶看!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 00:31

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表