搜索
bottom↓
回复: 2

三星9454进不了定时中断

[复制链接]

出0入0汤圆

发表于 2010-11-17 21:23:27 | 显示全部楼层 |阅读模式
关闭好友动态
伍耀斌  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 uint  unsigned int
  
//__root const uchar SmartOption[4]@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/4096  1-清Basic Timer   1-清分频器
  CLKCON=0x18;  //时钟控制寄存器11111111=1-禁止IRQ  11-没用   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)
  {case  0:  P0=0xFF; break;   
   case  1:  P0=0x00; break;
   }
}
//============================================================================
//*************************************************************************
//**中断向量及服务程序定义********
#pragma vector=0x00
__interrupt void Interrupts()
{  
  T0CON=T0CON&0xf6;
  P2=0x00;
  
}

出0入0汤圆

发表于 2010-12-10 10:18:22 | 显示全部楼层
回复【楼主位】ye955
-----------------------------------------------------------------------

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

出0入0汤圆

发表于 2010-12-10 10:28:58 | 显示全部楼层
#define ei  (__enable_interrupt())      //将后者指令行缩写为ei;

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

本版积分规则

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

GMT+8, 2024-5-3 21:37

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

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