Microsoft Word - mcu-an z-10.doc

Similar documents
Microsoft Word - mcu-an z-10.doc

Microsoft Word - mcu-an z-11.doc

Microsoft Word - MSP430 Launchpad 指导书.docx

C/C++ - 函数

目录

Microsoft Word - mcu-an z-10.doc

6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C C C51 C51 ANSI C MCS-51 C51 ANSI C C C51 bit Byte bit sbit

C PICC C++ C++ C C #include<pic.h> C static volatile unsigned char 0x01; static volatile unsigned char 0x02; static volatile unsigned cha

学习MSP430单片机推荐参考书

Microsoft Word - MAN2011A_CH_RTT.doc

第十四章 STC单片机比较器原理及实现

C语言的应用.PDF

Microsoft Word - mcu-an z-11.doc

Spyder Anaconda Spyder Python Spyder Python Spyder Spyder Spyder 開始 \ 所有程式 \ Anaconda3 (64-bit) \ Spyder Spyder IPython Python IPython Sp

外围器件-new.cdr

Microsoft Word - ~ doc

P4i45GL_GV-R50-CN.p65

JLX

Microsoft Word - IRFWX-A124_A_SM59D03G2_SM59D04G2_PCA_ APN_SC_.doc

untitled

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File

<4D F736F F D A F E45BDA8C1A2B9A4B3CCBFAAB7A2BBB7BEB3CFEABDE22E646F63>

bingdian001.com

上海地区进出口饲料和饲料添加剂经营单位备案名单

( CIP) /. :, ( ) ISBN TP CIP ( 2005) : : : : * : : 174 ( A ) : : ( 023) : ( 023)

C C

EK-STM32F

第一章

CC213

C/C++ - 文件IO

新版 明解C言語入門編

378高雄市都市計畫說明書

【主持人】:给大家介绍一下,这次的培训是我们画刊部的第三次培训,当然今天特别有幸请来著吊的摄影家李少白老师给我们讲课


2005.book

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.07.doc

epub83-1

中国生态文明奖先进集体和先进个人建议吊单公示

第10章:CCP捕捉/比较/脉宽调制

C/C++语言 - C/C++数据

邏輯分析儀的概念與原理-展示版

User ID 150 Password - User ID 150 Password Mon- Cam-- Invalid Terminal Mode No User Terminal Mode No User Mon- Cam-- 2

Microsoft PowerPoint - os_4.ppt

untitled

SST SPAC SST SoftICE SST89C5x/SST89x554RC /564RD /SST89x516/5xRD / SoftICE SoftICE MCU SoftICE SS

全国计算机技术与软件专业技术资格(水平)考试

ch08.PDF

untitled

勞動條件檢查執行重點(雲林)_ [相容模式]

醋 水 法 在 水 盆 內 放 入 約 七 分 滿 的 水 與 1/2 到 1 小 杯 的 醋 量, 將 髒 襪 子 浸 泡 一 晚, 隔 天 再 丟 入 洗 衣 機, 就 能 洗 得 相 當 乾 淨 醋 有 殺 菌 除 臭 和 漂 白 功 效, 使 用 過 的 醋 水, 還 可 清 理 地 板,

穨 PDF

第一冊 第四章 分裂與再統一 班級 座號 姓吊

untitled

PTS7_Manual.PDF

地 理 志 鏡 止 煞, 來 達 到 安 宅 的 效 果 4. 門 神 符 紙 : 於 門 板 繪 製 門 神, 作 為 宅 第 的 守 護, 民 宅 所 使 用 的 門 神 題 材, 多 為 天 官 賜 福 或 文 武 官 員 符 紙 是 以 畫 了 符 咒 的 紙 懸 掛 室 內, 或 加 框

Windows RTEMS 1 Danilliu MMI TCP/IP QEMU i386 QEMU ARM POWERPC i386 IPC PC104 uc/os-ii uc/os MMI TCP/IP i386 PORT Linux ecos Linux ecos ecos eco

HCS08微控制器上有关内存分配的几个问题.doc

摘 要 文 德 甲 新 村 (Kampung Suria Mentakab), 位 于 彭 亨 中 部, 属 于 淡 馬 魯 市 所 管 辖 她 距 离 淡 马 鲁 市 区 约 11 公 里, 而 距 离 而 连 突 大 约 50 公 里 文 德 甲 新 村 路 口 外 就 是 文 德 甲 市 区,

2013 C 1 # include <stdio.h> 2 int main ( void ) 3 { 4 int cases, a, b, i; 5 scanf ("%d", & cases ); 6 for (i = 0;i < cases ;i ++) 7 { 8 scanf ("%d %d

bnb.PDF

P4V88+_BIOS_CN.p65

C C C The Most Beautiful Language and Most Dangerous Language in the Programming World! C 2 C C C 4 C Project 30 C Project 3 60 Project 40

ebook50-15

Microsoft Word - Functional_Notes_3.90_CN.doc

PowerPoint Presentation

Microsoft Word 箕æ−¥ï¼‹å®ı稿;

98年度即測即評學科測試與即測即評即發證技術士技能檢定簡章

C/C++ - 字符输入输出和字符确认

Andes Technology PPT Temp

untitled

Transcription:

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

变更履历 变更履历 日期作者修正记录 2008-03-20 Levi Zhang V1.0, 第一版 本手册共 22 页 1. 本文档记载的产品信息及规格说明如有变动, 恕不预先通知 如需最新产品信息和 / 或规格说明, 联系富士通销售代表或富士通授权分销商 2. 基于本文档记载信息或示意图的使用引起的对著作权 工业产权或第三方的其他权利的侵害, 富士通不承担任何责任 3. 未经富士通明文批准, 不得对本文档的记载内容进行转让 拷贝 4. 本文档所介绍的产品并不旨在以下用途 : 需要极高可靠性的设备, 诸如航空航天装置 海底中继器 核控制系统或维系生命的医用设施 5. 本文档介绍的部分产品可能是 " 外汇及外贸管理法 " 规定的战略物资 ( 或专门技术 ), 出口该产品或其中部分元件前, 应根据该法获得正式批准 版权 2008 富士通微电子 ( 上海 ) 有限公司版权所有 MCU-AN-500007-Z-10 第 2 页

目录 目录 概要... 4 外部中断... 5 1 概要 2 外部中断 2.1 主要特性... 5 2.2 框图... 5 2.3 连接框图... 6 2.4 寄存器... 7 2.4.1 外部中断控制寄存器 (EICxy)... 7 2.4.2 中断级设置寄存器 (ILR0 ~ ILR5)... 7 外部中断时序... 9 外部中断示例... 10 3 外部中断时序 4 外部中断示例 4.1 基本功能... 10 4.2 外部中断和自停止模式唤醒... 12 5 外部中断电路 0 的使用注意事项 6 更多信息 7 附录 的使用注意事项... 14 更多信息... 15 附录... 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 MCU-AN-500007-Z-10 第 3 页

第 1 章概要 1 概要 本应用手册介绍如何设置和应用外部中断, 并例解外部中断的功能 MCU-AN-500007-Z-10 第 4 页

第 2 章外部中断 2 外部中断 本章介绍中断模块的基本特性 2.1 主要特性 2.2 框图 边沿检测电路外部中断控制寄存器 图 2-1 是外部中断通道的内部框图 图 2-1: 外部中断框图 MCU-AN-500007-Z-10 第 5 页

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

2.4 寄存器 第 2 章外部中断 关于寄存器的设置详情, 参见 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.4.2 中断级设置寄存器 (ILR0 ~ ILR5) 表 2-1: 外部中断控制寄存器 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] 表 2-2: 外部中断级设置寄存器的配置 中断级设置寄存器 ILR0 具有 4 对配置到外部中断请求上的位 中断请求号中断级设置寄存器的位名中断源 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 表 2-3: 中断源每对位 ( 中断级设置位作为 2 位数据 ) 设置一个中断级 LXX[1:0] 中断级 优先顺序 00 0 最高 01 1 10 2 11 3 最低 ( 无中断产生 ) XX: 代表相应的中断号 00 ~ 03 表 2-4: 中断级设置位和中断级的关系 MCU-AN-500007-Z-10 第 7 页

第 2 章外部中断 主程序执行期间, 状态码寄存器的中断级位 (CCR: IL1, IL0) 通常为 "11 B " MCU-AN-500007-Z-10 第 8 页

第 3 章外部中断时序 3 外部中断时序 本章介绍外部中断的时序 下图介绍外部中断时序时发生的一系列事件 接受中断后,CPU 需要 9 个机器时钟周期来执行下列中断处理设置 : 保存程序计数器 (PC) 和程序状态 (PS) 的值 PC 被设置到中断服务程序的起始地址 ( 中断向量 ) 更新程序状态 (PS) 寄存器的中断级位 (PS:CCR:IL1,IL0) 图 3-1: 中断处理时间 MCU-AN-500007-Z-10 第 9 页

第 4 章外部中断示例 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; EIC30 = 0x03; // External Interrupt 2 rising edge // & Enable external interrupt output // 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();... MCU-AN-500007-Z-10 第 10 页

第 4 章外部中断示例 注 : 富士通标准模板工程的 vector.c 模块中应定义相应的中断向量和中断级... ILR0 = 0xCF; //IRQ2: external interrupt ch2 ch6... interrupt void ExInt0206 (void); // Prototype... #pragma intvect ExInt0206 2 // IRQ2: external interrupt ch2 ch6 关于 project EI_Basic, 参见附录的样本程式 MCU-AN-500007-Z-10 第 11 页

4.2 外部中断和自停止模式唤醒 第 4 章外部中断示例 下例介绍外部中断可用于请求停止模式并从该模式中唤醒 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();... MCU-AN-500007-Z-10 第 12 页

第 4 章外部中断示例 status = RUNMODE; while (1) if (status == STOPREQUEST) // stop mode request else PDR0_P00 = 1; STBC_SLP = 1; // run mode // enter stop mode for (i = 0; i < 50000; i ++) //wait loop asm( \tnop ); asm( \tnop ); PDR0_P00 = ~PDR0_P00; // show that MCU is running 注 : 富士通标准模板工程的 vector.c 模块中应定义相应的中断向量和中断级... ILR0 = 0xCF; //IRQ2: external interrupt ch2 ch6... interrupt void ExInt0206 (void); // Prototype... #pragma intvect ExInt0206 2 // IRQ2: external interrupt ch2 ch6 关于 project EI_ModeSwitch, 参见附录中的样本程式 MCU-AN-500007-Z-10 第 13 页

第 5 章外部中断电路 0 的使用注意事项 5 外部中断电路 0 的使用注意事项 本章介绍外部中断电路 0 的使用注意事项 边沿极性选择位 (SL) 置位过程中, 使中断请求使能位 (EIE) 清 "0"( 禁止中断请求 ) 设定边沿极性后, 外部中断请求标志位 (EIR) 清 "0" 若外部中断请求标志位置 "1", 且使能中断请求使能位, 操作不能从中断服务例程中恢复 须始终清零中断服务例程中的外部中断请求标志位 MCU-AN-500007-Z-10 第 14 页

第 6 章更多信息 6 更多信息 欲了解更多的富士通微电子产品信息, 敬请访问以下网址 : MCU-AN-500007-Z-10 第 15 页

第 7 章附录 7 附录 7.1 示意图一览 图 2-1: 外部中断框图... 5 图 2-2: 外部中断连接框图 ( 切换功能应用 )... 6 图 3-1: 中断处理时间... 9 MCU-AN-500007-Z-10 第 16 页

7.2 示意表一览 第 7 章附录 表 2-1: 外部中断控制寄存器... 7 表 2-2: 外部中断级设置寄存器的配置... 7 表 2-4: 中断源... 7 表 2-3: 中断级设置位和中断级的关系... 7 MCU-AN-500007-Z-10 第 17 页

第 7 章附录 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; DDR0 &= 0xBB; EIC10 = 0x03; EIC30 = 0x03; // disable AN02 input // P02 P06 input // External Interrupt 2 rising edge // & Enable interrupt output // 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; if (EIC30_EIR0) EIC30_EIR0 = 0; // Clear interrupt request flag // interrupt server routine // Clear interrupt request flag // interrupt server routine MCU-AN-500007-Z-10 第 18 页

第 7 章附录 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 MCU-AN-500007-Z-10 第 19 页

7.3.2 Project Name: EI_ModeSwitch 外部中断把 MCU 从停止模式中唤醒 main.c #include "mb95200.h" #define RUNMODE 1 #define STOPREQUEST 0 unsigned char status; 第 7 章附录 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) MCU-AN-500007-Z-10 第 20 页

status = STOPREQUEST; 第 7 章附录 EIC30_EIE0 = 0; // disable external interrupt 6 EIC30_EIR0 = 0; EIC30_EIE0 = 1; // clear interrupt request flag // 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 MCU-AN-500007-Z-10 第 21 页

第 7 章附录 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 MCU-AN-500007-Z-10 第 22 页