打印
[AVR单片机]

新手问个关中断的问题

[复制链接]
1238|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
01dxwlm|  楼主 | 2008-6-17 16:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
TI, se, AVR, IO, vr
我在学习AVRMCU的时候为什么下面的程序使用sei();后程序就reset,删除sei();就正常,我的用的平台是:winavr+avr studio4.0
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
#define uchar unsigned char
#define SET_LED PORTD&=0XEF //PD4 接发光管
#define CLR_LED PORTD|=0X10
static uchar g_bCount=0; //中断计数器
static uchar g_bDirection=0;
//T/C0 中断例程
SIGNAL(SIG_OVERFLOW0)
{
// 产生中断周期 T = 256 * 1024 / 4MHz
    if(++g_bCount >14) //中断15 次约一秒
    {
        if(g_bDirection) //反向LED 控制脚

            SET_LED,g_bDirection=0;
        else
            CLR_LED,g_bDirection=1;
        g_bCount=0;
    }
}
int main(void)
{
    SP = 0x2ff;    
    DDRD=0X10;
    PORTD=0X10;
    TCNT0=0; // T/C0 开始值
    TCCR0=5; // 预分频 ck/1024 ,计数允许
    TIMSK=_BV(TOIE0);
    sei();   //加上这句程序就跑飞了.
    for(; ;)
    {
        PORTB = 0x1;
        PORTB = 0x0;
    }
    return 0;
}
请问这是为什么呢?

相关帖子

沙发
dai_weis| | 2008-6-17 20:55 | 只看该作者

SP是什么?

想做什么?不需要这个
你的程序很正常,你怎么确认它跑飞了?

使用特权

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

本版积分规则

121

主题

592

帖子

2

粉丝