查看: 4192|回复: 3

如何在RS08中实现定时中断功能

[复制链接]

该用户从未签到

7

主题

14

帖子

0

新手上路

Rank: 1

积分
27
最后登录
1970-1-1
发表于 2009-2-13 18:05:15 | 显示全部楼层 |阅读模式
在RS08中,发现其提供的中断功能的作用是把芯片从stop or wait模式中唤醒,而去掉了vector table ;
请问一下,在时间要求不太高情况下,如何实现类似定时器的功能?

例如:灯点亮约1S,熄灭
回复

使用道具 举报

该用户从未签到

7

主题

14

帖子

0

新手上路

Rank: 1

积分
27
最后登录
1970-1-1
 楼主| 发表于 2009-2-19 13:05:26 | 显示全部楼层

回复:如何在RS08中实现定时中断功能

有人能给解答一下吗?谢谢

该用户从未签到

2

主题

67

帖子

0

新手上路

Rank: 1

积分
90
最后登录
1970-1-1
发表于 2009-2-20 20:45:41 | 显示全部楼层

RE:如何在RS08中实现定时中断功能

可以在输入捕捉定时器中对计数器进行设置,比较容易就完成了,是中断的方式

该用户从未签到

7

主题

41

帖子

0

新手上路

Rank: 1

积分
149
最后登录
1970-1-1
发表于 2009-4-9 00:51:26 | 显示全部楼层

回复:如何在RS08中实现定时中断功能

参考下面的程序
注意在Reset()中设置RTI为32ms
#define F32ms SYSFlag.Bit0
#define F64ms SYSFlag.Bit1
#define F128ms SYSFlag.Bit2
static unsigned char Count128;
static unsigned char Count64;
void main(void)
{
// unsigned int MCUCode;
 Reset();
 EnableInterrupts; /* enable interrupts */
 /* include your code here */
 for(;;)
 {
  __RESET_WATCHDOG(); /* feeds the dog */

  CHKINT();
  if(F32ms)
  {
   //task A at here
   F32ms=0;
  }
  
  if(F64ms)
  {
//task B here
F64ms=0;
  }
  
  if(F128ms)
  {
//task C at here
   F128ms=0;
  }  
  
 } /* loop forever */
 /* please make sure that you never leave main */
}

static void CHKINT(void)
{
 if(SIP1_RTI)
 {
   SRTISC_RTIACK=1;//ackknowledge RTI interrupt
   /*32ms count*/
   F32ms=1;
   /*64ms*/
   if(Count64
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /4 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2024-5-8 23:48 , Processed in 0.134420 second(s), 21 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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