三星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;
} 回复【楼主位】ye955
-----------------------------------------------------------------------
把SYM=0x00;换成asm(“EI”)试试 #define ei(__enable_interrupt()) //将后者指令行缩写为ei;
执行ei即可
页:
[1]