MB95200H/210H 系列 外部中断 - Fujitsu · V1.0 C 2 MCU-AN-500007-Z-10 – 7 2.4 寄存器 il...

22
富士通微电子 富士通微电子 富士通微电子 富士通微电子(上海 上海 上海 上海)有限公司 有限公司 有限公司 有限公司 应用笔记 MCU-AN-500007-Z-10 F²MC-8FX 家族 家族 家族 家族 8 位微控制器 MB95200H/210H 系列 系列 系列 系列 外部中断 外部中断 外部中断 外部中断 应用笔记

Transcript of MB95200H/210H 系列 外部中断 - Fujitsu · V1.0 C 2 MCU-AN-500007-Z-10 – 7 2.4 寄存器 il...

Page 1: MB95200H/210H 系列 外部中断 - Fujitsu · V1.0 C 2 MCU-AN-500007-Z-10 – 7 2.4 寄存器 il A$% = MB95200H/210H ab A 15 B 2.4.1 外部中断控制寄存器(EICxy) !" 8l!"

富士通微电子富士通微电子富士通微电子富士通微电子(上海上海上海上海)有限公司有限公司有限公司有限公司

应用笔记

MCU-AN-500007-Z-10

F²MC-8FX 家族家族家族家族

8 位微控制器

MB95200H/210H 系列系列系列系列

外部中断外部中断外部中断外部中断

应用笔记

Page 2: MB95200H/210H 系列 外部中断 - Fujitsu · V1.0 C 2 MCU-AN-500007-Z-10 – 7 2.4 寄存器 il A$% = MB95200H/210H ab A 15 B 2.4.1 外部中断控制寄存器(EICxy) !" 8l!"

外部中断 V1.0 变更履历

MCU-AN-500007-Z-10 – 第 2 页

变更履历 日期 作者 修正记录

2008-03-20 Levi Zhang V1.0, 第一版

本手册共 22页。

版权© 2008富士通微电子(上海)有限公司 版权所有

1. 本文档记载的产品信息及规格说明如有变动,恕不预先通知。如需最新产品信息和/或规格说明,联系富士通销售代表或富士通授权分销商。

2. 基于本文档记载信息或示意图的使用引起的对著作权、工业产权或第三方的其他权利的侵害,富士通不承担任何责任。

3. 未经富士通明文批准,不得对本文档的记载内容进行转让、拷贝。

4. 本文档所介绍的产品并不旨在以下用途: 需要极高可靠性的设备,诸如航空航天装置、海底中继器、核控制系统或维系生命的医用设施。

5. 本文档介绍的部分产品可能是"外汇及外贸管理法"规定的战略物资(或专门技术),出口该产品或其中部分元件前,应根据该法获得正式批准。

Page 3: MB95200H/210H 系列 外部中断 - Fujitsu · V1.0 C 2 MCU-AN-500007-Z-10 – 7 2.4 寄存器 il A$% = MB95200H/210H ab A 15 B 2.4.1 外部中断控制寄存器(EICxy) !" 8l!"

外部中断 V1.0 目录

MCU-AN-500007-Z-10 – 第 3 页

目录

1 概要概要概要概要.................................................................................................................................. 4

2 外部中断外部中断外部中断外部中断........................................................................................................................... 5

2.1 主要特性.................................................................................................................. 5

2.2 框图......................................................................................................................... 5

2.3 连接框图.................................................................................................................. 6

2.4 寄存器 .................................................................................................................. 7

2.4.1 外部中断控制寄存器(EICxy)....................................................................... 7

2.4.2 中断级设置寄存器 (ILR0 ~ ILR5)................................................................ 7

3 外部中断时序外部中断时序外部中断时序外部中断时序.................................................................................................................... 9

4 外部中断示例外部中断示例外部中断示例外部中断示例.................................................................................................................. 10

4.1 基本功能................................................................................................................ 10

4.2 外部中断和自停止模式唤醒 ................................................................................... 12

5 外部中断电路外部中断电路外部中断电路外部中断电路 0的使用注意事项的使用注意事项的使用注意事项的使用注意事项 ..................................................................................... 14

6 更多信息更多信息更多信息更多信息......................................................................................................................... 15

7 附录附录附录附录................................................................................................................................ 16

7.1 示意图一览 ............................................................................................................ 16

7.2 示意表一览 ............................................................................................................ 17

7.3 样本程式................................................................................................................ 18

7.3.1 Project Name: EI_Basic ........................................................................... 18

7.3.2 Project Name: EI_ModeSwitch ................................................................ 20

Page 4: MB95200H/210H 系列 外部中断 - Fujitsu · V1.0 C 2 MCU-AN-500007-Z-10 – 7 2.4 寄存器 il A$% = MB95200H/210H ab A 15 B 2.4.1 外部中断控制寄存器(EICxy) !" 8l!"

外部中断 V1.0 第 1 章概要

MCU-AN-500007-Z-10 – 第 4 页

1 概要 本应用手册介绍如何设置和应用外部中断,并例解外部中断的功能。

Page 5: MB95200H/210H 系列 外部中断 - Fujitsu · V1.0 C 2 MCU-AN-500007-Z-10 – 7 2.4 寄存器 il A$% = MB95200H/210H ab A 15 B 2.4.1 外部中断控制寄存器(EICxy) !" 8l!"

外部中断 V1.0 第 2 章外部中断

MCU-AN-500007-Z-10 – 第 5 页

2 外部中断 本章介绍中断模块的基本特性。

2.1 主要特性主要特性主要特性主要特性

� 边沿检测电路

� 外部中断控制寄存器

2.2 框图框图框图框图 图 2-1是外部中断通道的内部框图。

图 2-1: 外部中断框图

Page 6: MB95200H/210H 系列 外部中断 - Fujitsu · V1.0 C 2 MCU-AN-500007-Z-10 – 7 2.4 寄存器 il A$% = MB95200H/210H ab A 15 B 2.4.1 外部中断控制寄存器(EICxy) !" 8l!"

外部中断 V1.0 第 2 章外部中断

MCU-AN-500007-Z-10 – 第 6 页

2.3 连接框图连接框图连接框图连接框图 图 2-2介绍外部中断引脚 INTn是如何连接到外部电路的。 按下按键后,连接上拉电阻 R以限制电流。可选择虚线内的电容器(硬件去抖动)电流以消除开关的抖动影响。基于开关的抖动时间或反抖延迟可选择 RC时间常数。若不使用上述操作,应谨慎对待软件中的抖动,反之亦然。 配置 INTn可检测出下降沿。

图 2-2: 外部中断连接框图 (切换功能应用)

注: 此连接仅可应用于开关或键盘功能。

Page 7: MB95200H/210H 系列 外部中断 - Fujitsu · V1.0 C 2 MCU-AN-500007-Z-10 – 7 2.4 寄存器 il A$% = MB95200H/210H ab A 15 B 2.4.1 外部中断控制寄存器(EICxy) !" 8l!"

外部中断 V1.0 第 2 章外部中断

MCU-AN-500007-Z-10 – 第 7 页

2.4 寄存器寄存器寄存器寄存器 关于寄存器的设置详情,参见MB95200H/210H系列硬件手册的第 15章。

2.4.1 外部中断控制寄存器(EICxy) 外部中断控制寄存器用于控制中断,选择外部中断输入的沿极性并控制中断。

bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 对应的外部中断号

EIC10 EIR1 SL11 SL10 EIE1 EIR0 SL01 SL00 EIE0 INT03 INT02

EIC20 EIR1 SL11 SL10 EIE1 EIR0 SL01 SL00 EIE0 INT05 INT04

EIC30 EIR1 SL11 SL10 EIE1 EIR0 SL01 SL00 EIE0 INT07 INT06 表 2-1: 外部中断控制寄存器

2.4.2 中断级设置寄存器 (ILR0 ~ ILR5)

表 2-2:外部中断级设置寄存器的配置 中断级设置寄存器 ILR0具有 4对配置到外部中断请求上的位。

表 2-3: 中断源 每对位(中断级设置位作为 2位数据)设置一个中断级。

LXX[1:0] 中断级 优先顺序

00 0 最高

01 1

10 2

11 3 最低 (无中断产生) 表 2-4: 中断级设置位和中断级的关系

XX: 代表相应的中断号 00 ~ 03

ILR0 L03 [1:0] L02 [1:0] L01 [1:0] L00 [1:0]

ILR1 L07 [1:0] L06 [1:0] L05 [1:0] L04 [1:0]

ILR2 L11 [1:0] L10 [1:0] L09 [1:0] L08 [1:0]

ILR3 L15 [1:0] L14 [1:0] L13 [1:0] L012 [1:0]

ILR4 L19 [1:0] L18 [1:0] L17 [1:0] L016 [1:0]

ILR5 L23 [1:0] L22 [1:0] L21 [1:0] L020 [1:0] 中断请求号 中断级设置寄存器的位名 中断源

IRQ0 L00[1:0] 外部中断 ch.4

IRQ1 L01[1:0] 外部中断 ch.5

IRQ2 L02[1:0] 外部中断 ch.2/ ch.6

IRQ3 L03[1:0] 外部中断 ch.3/ ch.7

Page 8: MB95200H/210H 系列 外部中断 - Fujitsu · V1.0 C 2 MCU-AN-500007-Z-10 – 7 2.4 寄存器 il A$% = MB95200H/210H ab A 15 B 2.4.1 外部中断控制寄存器(EICxy) !" 8l!"

外部中断 V1.0 第 2 章外部中断

MCU-AN-500007-Z-10 – 第 8 页

主程序执行期间,状态码寄存器的中断级位(CCR: IL1, IL0)通常为"11B"。

Page 9: MB95200H/210H 系列 外部中断 - Fujitsu · V1.0 C 2 MCU-AN-500007-Z-10 – 7 2.4 寄存器 il A$% = MB95200H/210H ab A 15 B 2.4.1 外部中断控制寄存器(EICxy) !" 8l!"

外部中断 V1.0 第 3 章外部中断时序

MCU-AN-500007-Z-10 – 第 9 页

3 外部中断时序 本章介绍外部中断的时序。 下图介绍外部中断时序时发生的一系列事件。 接受中断后,CPU需要 9个机器时钟周期来执行下列中断处理设置:

• 保存程序计数器(PC)和程序状态(PS)的值

• PC被设置到中断服务程序的起始地址(中断向量)

• 更新程序状态(PS)寄存器的中断级位(PS:CCR:IL1,IL0)

图 3-1: 中断处理时间

Page 10: MB95200H/210H 系列 外部中断 - Fujitsu · V1.0 C 2 MCU-AN-500007-Z-10 – 7 2.4 寄存器 il A$% = MB95200H/210H ab A 15 B 2.4.1 外部中断控制寄存器(EICxy) !" 8l!"

外部中断 V1.0 第 4 章外部中断示例

MCU-AN-500007-Z-10 – 第 10 页

4 外部中断示例 本章介绍外部中断示例。

4.1 基本功能基本功能基本功能基本功能 下例介绍如何设置外部中断 Ch.2和 Ch.6。 当 Ch.2 或 Ch.6 的外部中断信号发生时程序会进入中断,然后在中断服务程序里面清除标志,退出后等待下一个外部中断信号时。

/* THIS SAMPLE CODE IS PROVIDED AS IS AND IS SUBJECT TO ALTERATIONS. */

/* FUJITSU MICROELECTRONICS ACCEPTS NO RESPONSIBILITY OR LIABILITY */

/* FOR ANY ERRORS OR ELIGIBILITY FOR ANY PURPOSES. */

/* (C) Fujitsu Microelectronics (Shanghai) Co., LTD. */

/* Date: 20080320 Version: 1V0 Author: Levi */

/*--------------------------------------------------------------------*/

/* initial interrupt setting */

void InitExtInt0206 (void)

{

AIDRL |= 0x04; // disable AN02 input

DDR0 &= 0xBB; // P02 P06 input

EIC10 = 0x03; // External Interrupt 2 rising edge

// & Enable external interrupt output

EIC30 = 0x03; // External Interrupt 6 rising edge

// & Enable external interrupt output

}

/* external ISR */

__interrupt void ExInt0206 (void)

{

if (EIC10_EIR0) // Ext Int 02 ?

{

EIC10_EIR0 = 0; // Clear interrupt request flag

... // interrupt server routine

}

if (EIC30_EIR0) // Ext Int 06 ?

{

EIC30_EIR0 = 0; // Clear interrupt request flag

... // interrupt server routine

}

}

/* main routine */

void main (void)

{

...

InitExtInt0206();

... }

Page 11: MB95200H/210H 系列 外部中断 - Fujitsu · V1.0 C 2 MCU-AN-500007-Z-10 – 7 2.4 寄存器 il A$% = MB95200H/210H ab A 15 B 2.4.1 外部中断控制寄存器(EICxy) !" 8l!"

外部中断 V1.0 第 4 章外部中断示例

MCU-AN-500007-Z-10 – 第 11 页

注: 富士通标准模板工程的 vector.c 模块中应定义相应的中断向量和中断级。

关于 project “EI_Basic”,参见附录的样本程式。

...

ILR0 = 0xCF; //IRQ2: external interrupt ch2 | ch6

...

__interrupt void ExInt0206 (void); // Prototype

...

#pragma intvect ExInt0206 2 // IRQ2: external interrupt ch2 | ch6

Page 12: MB95200H/210H 系列 外部中断 - Fujitsu · V1.0 C 2 MCU-AN-500007-Z-10 – 7 2.4 寄存器 il A$% = MB95200H/210H ab A 15 B 2.4.1 外部中断控制寄存器(EICxy) !" 8l!"

外部中断 V1.0 第 4 章外部中断示例

MCU-AN-500007-Z-10 – 第 12 页

4.2 外部中断和自停止模式唤醒外部中断和自停止模式唤醒外部中断和自停止模式唤醒外部中断和自停止模式唤醒 下例介绍外部中断可用于请求停止模式并从该模式中唤醒MCU。 外部中断 2用于唤醒MCU,外部中断 6用于请求停止模式。 程序首先在正常模式中运行,Ch.6 发生外部中断后,程序工作模式的标志将在中断服务程序中自"RUNMODE"设定至"STOPREQUEST",此时 MCU 进入停止模式,可以通过外部中断 2来唤醒MCU。因此,可通过外部中断 2和 6切换到MCU模式。

/* THIS SAMPLE CODE IS PROVIDED AS IS AND IS SUBJECT TO ALTERATIONS. */

/* FUJITSU MICROELECTRONICS ACCEPTS NO RESPONSIBILITY OR LIABILITY */

/* FOR ANY ERRORS OR ELIGIBILITY FOR ANY PURPOSES. */

/* (C) Fujitsu Microelectronics (Shanghai) Co., LTD. */

/* Date: 20080320 Version: 1V0 Author: Levi */

/*--------------------------------------------------------------------*/

// initialise external interrupt 2 & 6

void InitExtInt0206 (void)

{

AIDRL |= 0x04; // disable AN02 input

DDR0 &= 0xBB; // P02 P06 input

EIC10 = 0x03; // External Interrupt 2 rising edge

// & Enable external interrupt output

EIC30 = 0x03; // External Interrupt 6 rising edge

// & Enable external interrupt output

}

/* external ISR */

__interrupt void ExInt0206 (void)

{

if (EIC10_EIR0) // Ext Int 02 ?

{

status = RUNMODE;

EIC10_EIR0 = 0; // disable external interrupt 2

EIC10_EIR0 = 0; // clear interrupt request flag

EIC10_EIE0 = 1; // enable interrupt request

}

if (EIC30_EIR0) // Ext Int 06 ?

{

status = STOPREQUEST;

EIC30_EIE0 = 0; // disable external interrupt 6

EIC30_EIR0 = 0; // clear interrupt request flag

EIC30_EIE0 = 1; // enable interrupt request

}

}

/* main routine */

void main (void)

{

...

InitExtInt0206();

...

Page 13: MB95200H/210H 系列 外部中断 - Fujitsu · V1.0 C 2 MCU-AN-500007-Z-10 – 7 2.4 寄存器 il A$% = MB95200H/210H ab A 15 B 2.4.1 外部中断控制寄存器(EICxy) !" 8l!"

外部中断 V1.0 第 4 章外部中断示例

MCU-AN-500007-Z-10 – 第 13 页

注:富士通标准模板工程的 vector.c 模块中应定义相应的中断向量和中断级。

关于 project “EI_ModeSwitch”,参见附录中的样本程式。

status = RUNMODE;

while (1)

{

if (status == STOPREQUEST) // stop mode request

{

PDR0_P00 = 1;

STBC_SLP = 1; // enter stop mode

}

else // run mode

{

for (i = 0; i < 50000; i ++) //wait loop

{

__asm(“\tNOP”);

__asm(“\tNOP”);

}

PDR0_P00 = ~PDR0_P00; // show that MCU is running

}

} }

...

ILR0 = 0xCF; //IRQ2: external interrupt ch2 | ch6

...

__interrupt void ExInt0206 (void); // Prototype

...

#pragma intvect ExInt0206 2 // IRQ2: external interrupt ch2 | ch6

Page 14: MB95200H/210H 系列 外部中断 - Fujitsu · V1.0 C 2 MCU-AN-500007-Z-10 – 7 2.4 寄存器 il A$% = MB95200H/210H ab A 15 B 2.4.1 外部中断控制寄存器(EICxy) !" 8l!"

外部中断 V1.0 第 5 章外部中断电路 0的使用注意事项

MCU-AN-500007-Z-10 – 第 14 页

5 外部中断电路 0 的使用注意事项 本章介绍外部中断电路 0的使用注意事项。

• 边沿极性选择位(SL)置位过程中,使中断请求使能位(EIE)清"0"(禁止中断请求)。设定边沿极性后,外部中断请求标志位(EIR)清"0"。

• 若外部中断请求标志位置"1",且使能中断请求使能位,操作不能从中断服务例程中恢复。须始终清零中断服务例程中的外部中断请求标志位。

Page 15: MB95200H/210H 系列 外部中断 - Fujitsu · V1.0 C 2 MCU-AN-500007-Z-10 – 7 2.4 寄存器 il A$% = MB95200H/210H ab A 15 B 2.4.1 外部中断控制寄存器(EICxy) !" 8l!"

外部中断 V1.0 第 6 章更多信息

MCU-AN-500007-Z-10 – 第 15 页

6 更多信息 欲了解更多的富士通微电子产品信息,敬请访问以下网址:

Page 16: MB95200H/210H 系列 外部中断 - Fujitsu · V1.0 C 2 MCU-AN-500007-Z-10 – 7 2.4 寄存器 il A$% = MB95200H/210H ab A 15 B 2.4.1 外部中断控制寄存器(EICxy) !" 8l!"

外部中断 V1.0 第 7 章附录

MCU-AN-500007-Z-10 – 第 16 页

7 附录

7.1 示意图一览示意图一览示意图一览示意图一览 图 2-1: 外部中断框图.............................................................................................................. 5 图 2-2: 外部中断连接框图(切换功能应用) ............................................................................... 6 图 3-1: 中断处理时间.............................................................................................................. 9

Page 17: MB95200H/210H 系列 外部中断 - Fujitsu · V1.0 C 2 MCU-AN-500007-Z-10 – 7 2.4 寄存器 il A$% = MB95200H/210H ab A 15 B 2.4.1 外部中断控制寄存器(EICxy) !" 8l!"

外部中断 V1.0 第 7 章附录

MCU-AN-500007-Z-10 – 第 17 页

7.2 示意表一览示意表一览示意表一览示意表一览 表 2-1: 外部中断控制寄存器 ................................................................................................... 7 表 2-2:外部中断级设置寄存器的配置 ...................................................................................... 7 表 2-4: 中断源 ........................................................................................................................ 7 表 2-3: 中断级设置位和中断级的关系 ..................................................................................... 7

Page 18: MB95200H/210H 系列 外部中断 - Fujitsu · V1.0 C 2 MCU-AN-500007-Z-10 – 7 2.4 寄存器 il A$% = MB95200H/210H ab A 15 B 2.4.1 外部中断控制寄存器(EICxy) !" 8l!"

外部中断 V1.0 第 7 章附录

MCU-AN-500007-Z-10 – 第 18 页

7.3 样本程式样本程式样本程式样本程式

7.3.1 Project Name: EI_Basic

Basic external ISR

main.c

#include "mb95200.h"

/*---------------------------------------------------------------------------

name: InitExtInt0206 ();

function: initial external interrupt

-----------------------------------------------------------------------------*/

void InitExtInt0206 (void)

{

AIDRL |= 0x04; // disable AN02 input

DDR0 &= 0xBB; // P02 P06 input

EIC10 = 0x03; // External Interrupt 2 rising edge

// & Enable interrupt output

EIC30 = 0x03; // External Interrupt 6 rising edge

// & Enable external interrupt output

}

/*---------------------------------------------------------------------------

name: ExInt0206 ();

function: enter while generate an Ext Int

-----------------------------------------------------------------------------*/

__interrupt void ExInt0206 (void)

{

if (EIC10_EIR0)

{

EIC10_EIR0 = 0; // Clear interrupt request flag

// interrupt server routine

}

if (EIC30_EIR0)

{

EIC30_EIR0 = 0; // Clear interrupt request flag

// interrupt server routine

}

}

Page 19: MB95200H/210H 系列 外部中断 - Fujitsu · V1.0 C 2 MCU-AN-500007-Z-10 – 7 2.4 寄存器 il A$% = MB95200H/210H ab A 15 B 2.4.1 外部中断控制寄存器(EICxy) !" 8l!"

外部中断 V1.0 第 7 章附录

MCU-AN-500007-Z-10 – 第 19 页

/*---------------------------------------------------------------------------

name: main ();

function: main loop

-----------------------------------------------------------------------------*/

void main(void)

{

InitExtInt0206();

InitIrqLevels();

__EI();

while(1);

}

vector.c

#include "mb95200.h"

/*---------------------------------------------------------------------------

name: InitIrqLevels ();

function: Interrupt level (priority) setting

-----------------------------------------------------------------------------*/

void InitIrqLevels(void)

{

ILR0 = 0xCF; // IRQ0: external interrupt ch4

// IRQ1: external interrupt ch5

// IRQ2: external interrupt ch2 | ch6

// IRQ3: external interrupt ch3 | ch7

/*---------------------------------------------------------------------------

Prototypes

-----------------------------------------------------------------------------*/

__interrupt void ExInt0206 (void);

/*---------------------------------------------------------------------------

Vector definition

-----------------------------------------------------------------------------*/

#pragma intvect ExInt0206 2 // IRQ2: external interrupt ch2 | ch6

Page 20: MB95200H/210H 系列 外部中断 - Fujitsu · V1.0 C 2 MCU-AN-500007-Z-10 – 7 2.4 寄存器 il A$% = MB95200H/210H ab A 15 B 2.4.1 外部中断控制寄存器(EICxy) !" 8l!"

外部中断 V1.0 第 7 章附录

MCU-AN-500007-Z-10 – 第 20 页

7.3.2 Project Name: EI_ModeSwitch 外部中断把MCU从停止模式中唤醒。

main.c

#include "mb95200.h"

#define RUNMODE 1

#define STOPREQUEST 0

unsigned char status;

/*---------------------------------------------------------------------------

name: InitExtInt0206 ();

function: initial external interrupt

-----------------------------------------------------------------------------*/

void InitExtInt0206 (void)

{

AIDRL |= 0x04; // disable AN02 input

DDR0 &= 0xBB; // P02 P06 input

EIC10 = 0x03; // External Interrupt 2 rising edge

// & Enable interrupt output

EIC30 = 0x03; // External Interrupt 6 rising edge

// & Enable external interrupt output

}

/*---------------------------------------------------------------------------

name: ExInt0206 ();

function: mode switch

-----------------------------------------------------------------------------*/

__interrupt void ExInt0206 (void)

{

if (EIC10_EIR0)

{

status = RUNMODE;

EIC10_EIR0 = 0; // disable external interrupt 2

EIC10_EIR0 = 0; // clear interrupt request flag

EIC10_EIE0 = 1; // enable interrupt request

}

if (EIC30_EIR0)

{

Page 21: MB95200H/210H 系列 外部中断 - Fujitsu · V1.0 C 2 MCU-AN-500007-Z-10 – 7 2.4 寄存器 il A$% = MB95200H/210H ab A 15 B 2.4.1 外部中断控制寄存器(EICxy) !" 8l!"

外部中断 V1.0 第 7 章附录

MCU-AN-500007-Z-10 – 第 21 页

status = STOPREQUEST;

EIC30_EIE0 = 0; // disable external interrupt 6

EIC30_EIR0 = 0; // clear interrupt request flag

EIC30_EIE0 = 1; // enable interrupt request

}

}

/*---------------------------------------------------------------------------

name: main ();

function: main loop

-----------------------------------------------------------------------------*/

void main (void)

{

unsigned int i;

InitExtInt0206();

DDR0_P05 = 1;

InitIrqLevels();

__EI();

status = RUNMODE;

while (1)

{

if (status == STOPREQUEST) // stop mode request

{

PDR0_P00 = 1;

STBC_SLP = 1; // go to stop mode

}

else // run mode

{

for (i = 0; i < 5000; i ++) //wait loop

{

__asm("\tNOP");

__asm("\tNOP");

}

PDR0_P05 = ~PDR0_P05; // show, that MCU is running

}

}

}

Page 22: MB95200H/210H 系列 外部中断 - Fujitsu · V1.0 C 2 MCU-AN-500007-Z-10 – 7 2.4 寄存器 il A$% = MB95200H/210H ab A 15 B 2.4.1 外部中断控制寄存器(EICxy) !" 8l!"

外部中断 V1.0 第 7 章附录

MCU-AN-500007-Z-10 – 第 22 页

vector.c

#include "mb95200.h"

/*---------------------------------------------------------------------------

name: InitIrqLevels ();

function: Interrupt level (priority) setting

-----------------------------------------------------------------------------*/

void InitIrqLevels(void)

{

ILR0 = 0xCF; // IRQ0: external interrupt ch4

// IRQ1: external interrupt ch5

// IRQ2: external interrupt ch2 | ch6

// IRQ3: external interrupt ch3 | ch7

/*---------------------------------------------------------------------------

Prototypes

-----------------------------------------------------------------------------*/

__interrupt void ExInt0206 (void);

/*---------------------------------------------------------------------------

Vector definition

-----------------------------------------------------------------------------*/

#pragma intvect ExInt0206 2 // IRQ2: external interrupt ch2 | ch6