ye955 发表于 2010-11-17 21:23:27

三星9454进不了定时中断

关闭好友动态
伍耀斌ye955@qq.com编辑
往来邮件
正在加载...



上一封 下一封标记为...移动到...
有关三星9454进不了定时中断问题(求助)   
发件人:伍耀斌<ye955@qq.com>查看 添加   
时   间:2010年11月17日(星期三) 下午2:07 纯文本 |
收件人: ams <ams@amstech.cn>
附   件:1 个 ( main.c )
大   小:13K
打印 | 显示邮件原文 | 导出为eml文件 | 邮件有乱码? | 转发到群邮件 | 保存到记事本 | 作为附件转发

      你好!
       我第一次使用三星的9454作小家电的控制。由于之前是用51与PIC,对9454的使用不熟。现参照你们的9454中文手册用IAR编译器对其进行编程,但发现写出的程序进不了定时中断。希望得到你们的提点。
       我的程序中用P2口对定时中断进观察,我在主程序中对P2口进行付0xFF,一但进入定时中断后就对P2口进行付0x00。从外部所接的LED看它是否已进入中断。


#include<ioS3C9454.h>//

#define uchar unsigned char
#define uintunsigned int

//__root const uchar SmartOption@0x3c={0x00,0x00,0xE4,0x00};

static uint Ts;
static uint Tss;

void Ch (void);
void mDelay(void);
void TimeLed(void);

void main(void)
{

Ch();
//=================================================================
//付初值区
Ts=0;
Tss=0;
P2=0xff;   

//===================================================================

for(;;)
    {
      
      TimeLed();      
    }
}
//====================================================================
void Ch ()
{

SYM=0x00;
P0CONL=0xAA;

P1CON=0xFA;

P2CONH=0xDF;   //P2口控制寄存器00001111=0-空000-P2.6施密特触发输入,带上拉   11-P2.5开漏输出11-P2.4开漏输出
P2CONL=0xAA;

BTCON=0xA3;   //基本定时控制器10100011=1010-禁止看门狗 00-清除fosc/40961-清Basic Timer   1-清分频器
CLKCON=0x18;//时钟控制寄存器11111111=1-禁止IRQ11-没用   111-1分频   1-没用

ADCON=0x8C;
P0PND=0x00;


T0DATA = 100;//定时器初始值
T0CON = 0x8A;//打开定时器 1/8之一分频      10001010


}

//=====================================================================
void mDelay ()
{   static uint temp;
    static uint DelayTime;
    DelayTime=1;
    for(;DelayTime>0;DelayTime--)
{for(temp=0;temp<915;temp++)
   {;}
}
}

//=========================================================================
void TimeLed ()
{ static uchar i=0;
mDelay();
i++;
if(i==2)
   {
   i=0;
   }
switch(i)
{case0:P0=0xFF; break;   
   case1:P0=0x00; break;
   }
}
//============================================================================
//*************************************************************************
//**中断向量及服务程序定义********
#pragma vector=0x00
__interrupt void Interrupts()
{
T0CON=T0CON&0xf6;
P2=0x00;

}

linzidong 发表于 2010-12-10 10:18:22

回复【楼主位】ye955
-----------------------------------------------------------------------

把SYM=0x00;换成asm(“EI”)试试

erxun 发表于 2010-12-10 10:28:58

#define ei(__enable_interrupt())      //将后者指令行缩写为ei;

执行ei即可
页: [1]
查看完整版本: 三星9454进不了定时中断