单片机课设设计论文:基于STC89C51单片机的简易电子琴设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机课程设计论文
题目:基于单片机的简易电子琴设计
学院:机电工程学院
专业:电气工程及其自动化
姓名: ### ### ###
指导教师:
完成日期: 2012-12-27
目录
摘要 (1)
绪论 (2)
1方案论证 (3)
1.1原理图 (3)
1.2主体方案 (3)
1.3系统方案设计绍 (4)
1.3.STC89C51简介 (5)
1.3.1单片机工作原理 (8)
1.3.2数码管 (13)
2实现过程 (14)
2.1.1 程序设计内容 (14)
2.1.2 I/O并行口直接驱动LED显示 (14)
2.2 音乐产生的方法 (15)
2.2.1 原理 (15)
2.2.2 程序框图 (16)
3全文总结 (17)
3.1结束语 (18)
参考文献 (19)
附录 (20)
1.电路原理图 (20)
2.程序框图 (21)
3.系统流程图 (22)
4.语言源程序 (23)
摘要
在现代各种生活中,电子琴作为一种音乐型玩具,广泛用于与人们的日常生活中。

市场上有各种各样的电子琴。

特别是日本产的,音质优美,它是有专门的音乐控制芯片制造的。

由于其价格较贵,无法大面积普及,且功能单一。

用89c51作为主控中心,研制一种简易的微型电子琴,尽可能地体现较好的音质来,是一种可做的尝试。

以单片机为核心设计的简易电子琴系统,由按键扫描电路、声音产生驱动电路、复位电路、等模块组成的,是一种比较实用、廉价的电子玩具。

本论文所设计的简易电子琴,它分为两大部分,硬件电路的设计和软件的设计。

硬件电路的设计以AT89S51单片机为控制主板,辅以外围的扩展设备蜂鸣器、矩阵键盘、共阳数码管,形成一个可被控制的显示系统。

软件设计通过控制单片机内部的定时器T0来产生不同频率的方波,驱动喇叭发出不同音节的声音.再利用延迟来控制发音时间的长短,即可控制音调中的节拍.把乐谱中的音符对应的
频率转换为定时常数,把相应的节拍变换为定时常数,然后作成表格存放在储存
器中,由程序查表得到定时常数和延时常数,分别用以控制定时器产生方波的频
率和该频率方波的持续时间.当延迟常数到时,再查下一个音符的定时常数和延
迟常数.依次进行下去,就可演奏悦耳动听的音乐.主要实现 1》能够发出
1.2.3.4.5.6.7等七个音符。

2》能自动演奏完,自选的一首歌曲两种功能。

一、引言
单片机因其体积小,功能强,价格低廉而得到广泛应用,同时随着我国经济的飞速发展,单片机在越来越多的领域得到了广泛的应用,现在国内的单片机多用于电话,玩具和LCD等产品,预计在未来,利用单片机发明的产品会越来越多,作为一名应用电子的应届毕业生来说,理解和掌握单片机的工作原理和使用技巧是必备的技能,基于这种考虑,我这次毕业设计的题目为声光电子琴。

钢琴,自从它发明的那天起,就成为人类的朋友,有的人们不能
负担起钢琴的高额价钱,但随着时间的推移,科学技术的不断发展,电子琴的发明让人们找到了能与钢琴媲美的声音。

怎样让我们的电子琴随身携带呢?这就要求人们不断设计出新型电子琴。

我所设计的该产品时根据自身的兴趣和爱好所设计的,通过对传统电子琴的认识和了解,知道了传统的电子琴是利用单片机的汇编也语言的编程来实现的,而且功能单一,只能弹奏而不能随意的播放音乐,我所设计的产品是基于对89c51单片机的深入理解对传统电子琴的小小的改革和创新,并且以简单的C语言程序替代了复杂的汇编语言程序,声和光是新电子琴的主题,我相信在声光电子琴的不断革新达到人们所需娱乐设备的标准的时候,声光电子琴会被投入到批量生产之中
2、产品概述
钢琴,自从它发明的那天起,就成为人类的朋友,有的人们不能负担起钢琴的高额价钱,但随着时间的推移,科学技术的不断发展,电子琴的发明让人们找到了能与钢琴媲美的声音。

怎样让我们的电子琴随身携带呢?这就要求人们不断设计出新型电子琴。

我所设计的该产品时根据自身的兴趣和爱好所设计的,通过对传统电子琴的认识和了解,知道了传统的电子琴是利用单片机的汇编也语言的编程来实现的,而且功能单一,只能弹奏而不能随意的播放音乐,我所设计的产品是基于对89c51单片机的深入理解对传统电子琴的小小的改革和创新,声和光是新电子琴的主题,我相信在声光电子琴的不断革新达到人们所需娱乐设备的标准的时候。

3、按键部分的设计:在本电路的按键接口设计,按键数量比较多。

3、数码管显示电路:为指示出当前演奏的曲目标号和显示当前按下的键号,我们采用1位数码管作为显示部件,为了节省成本,采用I/O口直接驱动数码管。

这样设计充分利用了单片机的资源,使此设计才功能上很丰富、完善。

1 方案论证
1.1原理图
1.2主体方案
本电子琴就是从单片机STC89C51切入,通过使用STC89C51的内部的可编程定时器/计数器,结合对外接晶振的调节来确定一个合适的振荡周期,从而确定出内部的机器周期。

该简易电子琴通过控制单片机内部的定时器T0来产生不同频率的方波,驱动喇叭发出不同音节的声音.再利用延迟来控制发音时间的长短,即可控制音调中的节拍.把乐谱中的音符对应的频率转换为定时常数,把相应的节拍变换为定时常数,然后作成表格存放在储存器中,由程序查表得到定时常数和延时常数,分别用以控制定时器产生方波的频率和该频率方波的持续时间.当延迟
常数到时,再查下一个音符的定时常数和延迟常数.依次进行下去,就可演奏悦耳动听的音乐
1.3 主要芯片简介
1.3.1 STC89C51简介
一、单片机的主要性能特点
ATMEL公司生产的AT89C51单片机采用高性能的静态80C51设计,欲先进工艺制造,并带有非易失性FLASH程序储存器。

它是一它是一种高性能,低功耗的8位CMOS微处理芯片,。

主要性能特点有:
●8KB Flash ROM,可以擦除1000次以上。

数据保存10年,
●256字节内部RAM
●电源控制模式:时钟可停止和恢复;空闲模式;掉电模式。

●6个中断源
●4个中断优先级
●4个8位I/O 口
●全双工增强型UART
●3个16位定时/计数器,T9,T1和增加的T2
●全静态工作方式:0~24MHz
二、单片机的引脚功能
89C51单片机的引脚图见图
图2.2 89C51单片机的引脚图
●VCC(40脚):接电源+5V。

●VSS(20脚):接地也就是 GND。

●XTAL1 (19 脚)和 XATL2(18 脚):接振荡电路,单片机是一种时序电路必须有脉冲信号才能工作在它的内部有一个时钟产生电路。

●PSEN(29 脚):片外 ROM 选通信号,低电平有效.他同样可以驱动8个LSTTL输入。

●ALE/PROG(30 脚):地址锁存信号输出端/EPROM 编程脉冲输入端。

为了使地址与数据不混淆,通常是先送地址再传送数据。

ALE将P0口输出的低8位地址锁存,从而实现低位地址与数据的分离。

●RST/VPD(9 脚):复位信号输入端/备用电源输入端。

当振荡器运行时,在此引脚上出现两个机器周期以上的高电平,将使单片机复位。

VCC掉电期间,此引脚可以接上备用电源,以保存内部RAM的数据不丢失;当VCC低于规定水平时,VPD向内部RAM提供备用电源。

●EA/VPP(31):内/外部 ROM 选择端。

当EA端保持高电平时,不管是否有内部程序存储器,只访问外部程序存储器。

当EA端保持低电平时,访问内部程序存储器。

●P0 口(P0.0~P0.7共8个引脚,既39-32 脚):双向三态I/O 口。

在访问外部存储器时,可分别用低8位地址线和8位数据线;P0口可以驱动8个LSTTL P1输入。

●P1 口(P1.0~P1.7共8个引脚,既1-8 脚)P1口是一个带有内部上拉电阻的8位双向I/0 口,在EPROM编程和程序验证时,它接受低8位地址,能驱动4个LSTTL输入。

●P2 口(P2.0~P2.7共8个引脚,既21-28 脚):P2口是一个带有内部上拉电阻的8位双向I/0 口, 在EPROM编程和程序验证时,它接受高8位地址,能驱动4个LSTTL输入。

●P3 口(P0.0~P0.7共8个引脚,既10-17 脚):P3口是一个带有内部上拉电阻的8位双向I/0 口。

他是个多用途口。

在这8个引脚里,其中P3.2的第二功能是外部中断0申请输入端;P3.3的第二功能是外部中断1申请输入端;P3.4的第二功能是定时器0申请输入端。

三、单片机内部结构及组成结构
单片机是由中央处理器(CPU)、片内数据存储器(RAM)、片内程序存储器(ROM)和输入输出接口(I/O口)四大部分组成:
⑴ CPU是单片机的核心部分。

其作用是读入和分析每条指令,根据指令要求控制各个部件执行相应的操作,它包括运算器和控制器两大部分:一是运算器包括算术/逻辑部件(ALU)、累加器A、暂存寄存器、寄存器B、程序状态寄存器(PSW),十进制调整电路等。

运算器主要用于实现算术/逻辑运算及位操作运算。

二是控制器包括时钟发生器,定时控制逻辑,指令寄存器,指令译码器,程序计数器PC,程序地址寄存器,数据指令寄存器DPTR和堆栈指针SP等。

控制器是用来统一指挥和控制计算机进行工作的部件。

⑵单片机存储器,单片机在物理上有4个存储空间:片内程序存储器和片外程序存储器, 片内数据存储器和片外数据存储器.8051片内有4KB的程序存储器和256B数据存储器。

下面分别介绍程序存储器和数据存储器。

程序存储器用于存放编好的程序、表格和常数。

8051单片机内部有4KB的片内ROM和64KB的片外ROM,两者是统一编址的。

数据存储器8051内部有256B RAM,片外最多可以扩展64KB RAM。

片内256 KB RAM按其功能划分两部分:低128B位片内数据RAM区,地址空间为00H~7FH;高128B位特殊功能寄存器的区域.地址空间为80H~FFH。

内部数据存储器低128单元,8051内部低128B RAM是真正的RAM,可用于暂存运算结果及标志位等.按其用途可以分为三部分:工作寄存器区;位寻址区;用户RAM区。

内部RAM的高于128单元是供给特殊功能寄存器使用,因此称特殊功能寄存器:
①指令寄存器IR和指令译码器ID。

指令寄存器是存放指令代码的地方。

当执行指令时,CPU把从程序存储器中读取的指令代码送入指令寄存器,然后指令译码器译码后由定时控制电路发生相应的控制信号,最终完成指令所规定的操作。

②程序计数器PC是一个16位的计数器。

用于存放将要执行的指令地址,CPU 每读取指令的一个字节PC便自动加1,指向本指令的下一个字节或下一条指令地址,PC可以寻址64KB范围ROM。

③累加器是一个最常用的8位特殊功能寄存器,它可以用于存放操作数,也没有用于来存放运算结果。

④寄存器B是一个8位寄存器,主要用于乘法和除法的运算,
⑤状态字寄存器PSW是8位寄存器,用于存放程序运行状态信息,其格式如下图2.3所示。

图2.3 程序状态字PSW
CY(PSW.7):进位标志位。

在进行加法(或减法)运算时,若运算结果最高位有进位或借位,则CY自动置“1”,否则CY置“0”,在进行布尔操作运算时,CY(简称C)作为布尔处理器。

AC(PSW.6):辅助进位标志位。

当进行加法或减法时,若低4位向高4位有进位(或借位)时,AC被置“1”,否则AC被置“0”。

在十进制调整指令中AC 还作为十进制调整的判别位。

F0(PSW.5):用户标志位。

用户可用软件对F0位置“1”或清“0”以决定程序的流向。

OV((PSW.2)):溢出标志位,当运算结果溢出时OV为“1”,否则为“0”,此标志位反映了运算结果是否溢出。

P(PSW.0):奇偶标志位。

MCS-51单片机采用的是偶校验。

当累加器A中“1”的个数为奇数时,P置“1”,否则P置“0”。

此位反映累加器A中内容“1”的奇偶性,它常常用于机间通信。

RS1(PSW.4)、RS0(PSW.3):工作寄存器区选择位。

用来选择当前工作的寄存器区。

用户通过改变RS1 、RS0的内容来选择当前工作寄存器区。

⑥堆栈指针SP
⑦数据指针寄存器DPTR是一个16位寄存器,由高位字节DPH和低位字节DPL组成,用来存放16位数据存储器的地址,以便对外部数据存储器RAM数据进行读写。

⑶工作寄存器
MCS-51有32个工作寄存器,分为四个区(或组)每个区为8个寄存器R0、R1、R2、R3、R4、R5、R6、R7,每一时刻只有一个区工作。

由PSW寄存器中的RS1、RS0的值来决定当前的工作区:
当 RS1 RS0=00时,0区为工作区,
RS1 RS0=01时,1区为工作区
RS1 RS0=10时,2区为工作区
RS1 RS0=11时,3区为工作区
这32个工作寄存器不但有它们的名称和区号,而且还有地址。

00H-1FH共32个单元。

00H~07H为0区,分别对应R0~R7
08H~0FH为1区,分别对应R0~R7
10H~17H为2区,分别对应R0~R7
18H~1FH为3区,分别对应R0~R7
这32个单元为内部数据存储器(即片内RAM)的00H~1FH存贮空间,这与普通微机中的通用寄存器基本相同,所不同的是,普通微机的通用寄存器只有名称,不占有RAM空间,因此只有名字,没有对应的地址;而MCS-51单片机的工作寄存器R0~R7既可以用名字也可以用它的地址来表示。

其中R0、R1寄存器除做工作寄存器外还常做间址寻址的地址指针
⑷单片机的输入/输出端口
C51中有4个8位并行输入/输出端口记为P0、P1、P2、P3共32根线。

每个并行I/O口都可以用作输入/输出,所以称它们为双向I/O口。

●P0口有8位, P0口有两个用途,一是作为普通I/O口使用;二是作为地址/
数据总线使用。

P0口作为普通I/O口使用: 当控制线C=0时, MUX开关向下, P0口作通用I/O口。

这时与门输入为0,场效应管VT1截止。

P0口作为分时复用的地址/数据总线: P0口一般是作为地址/数据总线,这时控制线C=1,MUX开关向上,使数据/地址经反向器与场效应管VT2接通,当数据输入时,数据信号从引脚通过输入缓冲器2进入内部总线。

●P1口是一个专用的8位准双向I/O口,只具有通用输入/输出口功能,每一位都能设定为输入或输出。

P1口的驱动部分与P0口不同,内部有上拉电阻。

●P2口是一个8位准双向I/O口,具有两种功能。

一是作通用I/O口用,与P1口相同。

二是作扩展系统的高8位地址总线。

●P3口也是一个8位准双向I/O口,不但可以作通用I/O口使用,还具有第二功能。

当工作在第二功能时,每位都具有新的功能,当P3口作通用I/O口时,与P1口相同。

1.3.2单片机的工作原理
一、振荡器与时钟电路
时钟电路用于产生单片机工作所需要的时钟信号。

AT89C51的时钟产生方法有以下两种:
⑴内部时钟方式
利用芯片内部的振荡器,然后在引脚XTAL1和引脚 XTAL2两端接晶体或陶瓷谐振器,就构成了稳定的自激振荡器,其发出的脉冲直接送入内部的时钟电路,如图2.4(在图中的外接线,上面的外接线接引脚XTAL1,下面的外接线接引脚XTAL2)外接晶振时,C1和C2的值通常选择我30pF左右;外接陶瓷谐振器时C1和C2的值大约为47pF。

C1、C2对频率有微调作用,晶体或陶瓷谐振器的频率范围可在1.2~12MHz之间选择。

为了减少寄生电容,更好地保证振荡器稳定、可靠地工作,振荡器和电容应尽可能安装得与单片机芯片靠近。

图2.4 单片机外接振荡电路
⑵外部时钟方式
此方式是利用外部振荡脉冲接入XTAL1或 XTAL2。

CHMOS(互补金属氧化物HMOS)是CMOS和HMOS(高密度沟道MOS工艺)的结合,除了保持HMOS高速度和高密度之外,还有CMOS低功耗的特点.两类器件的功能是完全兼容的,区别在CHMOS器件具有低功耗的特点.它所消耗的电流比HMOS器件少很多,主要在于其采用了两种降低功耗的方式:空闲方式和掉电方式.CHMOS器件在掉电方式(CPU停止工作,片内RAM的数据继续保持)下时,消耗的电流可低于10μA.采用CHMOS的器件在编号中用一个C来加以区别: 如80C51,80C31等.
外部时钟信号通过一个二分频的触发器而成为内部的时钟信号,要求高、低电平
的持续时间都大于20ns,一般为频率低于12Hz的方波。

这种方式适用于多块芯片同时工作,便于同步。

片内时钟发生器就是上述的二分频触发器,它向芯片提供了一个2节拍的时钟信号。

根据以上两种方式的特点,在次设计中从而采用了第一种方式。

第一种方式比第二种更简洁为次设计而变的简单化。

其图2.5就是本次设计中时钟信号产生的外部电路图。

其中电容值所选用的是30Pf,为了提高秒计时的精确度,采用12MHZ的晶振。

二、单片机的工作方式
单片机有三种工作方式:复位方式、程序执行方式以及节电工作方式。

⑴单片机复位方式:
单片机复位方式有上简单复位电路和采用专用复位电路芯片构成复位电路两种。

简单复位电路有上电复位和手动复位。

不管那种方式都要保证在RESET引脚上提供10ms以上的稳定高电压。

本次设计中采用的是按键式复位电路。

⑵程序执行方式:
(a)连续执行方式
(b)单步执行方式
⑶节电工作方式:
(a)HMOS单片机的掉电工作方式
(b)CHMOS单片机的节电工作方式
三、单片机外部并行扩展原理
单片微机是通过芯片的引脚进行系统扩展的。

80C51系列带总线的单片微机芯片引脚可以构成图8-1所示的三总线结构.即地址总线(AB)数据总线(DB)和控制总线(CB)。

具有总线的外部芯片都通过这三组总线进行扩展。

(1)地址总线(AB)
地址总线由单片微机P0口提供低8位地址A0~A7,P2口提供高8位地址A8~A15。

P0口是地址总线低8位和8位数据总线复用口,只能分时用作地址线。

故P0口输出的低8位地址A0~A7必须用锁存器锁存。

锁存器的锁存控制信号为单片微机ALE引脚输出的控制信号。

在ALE的下降沿将P0口输出的地址A0~A7锁存。

P0、P2口在系统扩展中用做地址线后便不能作为一般I/O口使用。

由于地址总线宽度为16位,故可寻址范围为64 KB。

(2)数据总线(DB)
数据总线由P0口提供,用D0~D7表示。

P0口为三态双向口为三态双向口,是应用系统中使用最为频繁的通道。

所有单片微机与外部交换的数据、指令、信息,除少数可直接通过P1口外,全部通过P0口传送。

数据总线是并连到多个连接的外围芯片的数据线上,而在同一时间里只能够有一个是有效的数据传送通道。

哪个芯片的数据通道有效,则由地址线控制各个芯片的片选线来选择。

(3)控制总线(CB)
控制总线包括片外系统扩展用控制线和片外信号对单片微机的控制线。

MCS—51系列中.有5个中断源(或6个中断源),如图所示。

它们可分为2个优先级.其中每一个中断源的优先级都可以由程序排定。

5个中断源的中断要求是否会得到响应,受允许中断寄存器IE中各位的控制;它们的优先级分别由中断优先级寄存器IP的各位确定;同—优先级内的各中断源同时要求中断时,
还要靠内部的查询逻辑来确定响应的次序,不同的中断源有不同的中断向量。

52子系列的中断系统与此类同,只不过增加了一个中断源。

1.允许中断寄村器IE
(1)EA(IE.7>总允许位。

EA=0.禁止一切中断。

EA=l,则每个中断源是允许还是禁止,分别由各自的允许位确定。

(2)一(IE 6)保留位。

(3)ET2(IE.5)定时器2中断允许位。

ET2=0,禁止定时器2中断。

(4)ES(IE.4)串行口中断允许位。

ES=0,禁止串行口中断。

(5)ETl(IE.3)定时器1中断允许这。

ET1=0,禁止定时器1中断。

(6)EXl(IE.2)外部中断l允许位。

EX1=0,禁止外部中断1。

(7)ET0(IE.1)定时器0中断允许位。

ET0=0,禁止定时器0中断。

(8)EX0(IE .0)外部中断0允许位。

EX0=0,禁止外部中断0
2.中断优先级寄存器IP
MCS—51的中断分为2个优先级。

每个中断源的优先级都可以通过中断优先级寄存器IP中的相应位来设定。

其中:(1)一(IP.7)保留位。


(2)一(IP .6)保留位。

(3)PT2(IP.5)定时器2中断优先级设定位。

PT2=l,设定为高优先级。

(4PS(1P.4)串行口中断优先级设定位。

PS=1,设定为高优先级o
(5)PT1(1P.3)定时器1中断优先级设定位。

PTl=1.设定为高优先级。

(6)PXl(IP.2)外部中断1优先级设定位。

PXl=1,设定为高优先级。

(7)PT0(IP.l)定时器0中断优先级设定位。

PT0=1,设定为高优先级。

(8)PX0(1P0)外部中断0优先级设定位。

PX0=1,设定为高优先级。

3.优先级结构
靠IP寄存器把各中断源的优先级分为高低两级。

它们遵循这样两条基本规则:
(1)低优先级中断可被高优先级中断所中断,反之不能;
(2)一种中断(不管是什么优先级)一旦得到响应,与它同级的中断不能再中断它。

为了实现这两条规则,中断系统内部包含两个不可寻址的“优先级激活”触发器。

其中一个触发器指示某高优先级的中断正在得到服务,所有后来的中断都被阻断。

另一个触发器指示某低优先级的中断正得到服务,所有同级的中断都被阻断,但不阻断高优先级的中断。

当同时收到几个同一优先级的中断要求时,哪一个要求得到服务,取决于内部的查询顺序,相当于在每个优先级内,还同时存在另一个辅助优先结构。

如;
中断源同级内的优先权
外部中断0 最高
定时器/计数器0溢出
外部中断1
定时器/计数器1溢出
串行口
定时器/计数器2溢出最低
在每一机器周期中,所有中断源都顺序地被检查一遍;这样到任一周期的S6状态时,找到了所有已激活的中断请求,并排好了优先权。

在下一机器周期的S1状态,只要不受阻断就开始响应其中最高优先级的中断请求。

若发生下列情况,中断响应会受到阻断:
(1)同级或高优先级的中断已在进行中;
(2)正在执行的指令,尚未完成其最后一个机器周期(换言之,正在执行的指令完成前,任何中断请求都得不到响应);
(3)正在执行的是一条RETI或者访问专用寄存器IE或IP的指令(换言之,在RETI或者读写IE或IP之后,不会马上响应中断请求,而至少在执行一条其他指令之后才会响应)。

若存在上述任一种情况,中断查询结果就被取消。

否则.在紧接着的下一个机器周期,中断查询结果变为有效。

4.中断响应协议
当某中断源提出中断请求后,作为应答,CPU首先使相应的“优先级激活”触发器置位,以阻断同级和低级的中断。

然后,根据中断源的类别,在硬件的控制下,程序转向相应的向量单元,执行中断服务子程序。

硬件中断服务子程序调用时,把当时程序计数器PC的内容压入堆栈(在MCS —5l中,PC是16垃的,占用了2个字节,没有自动保存程序状态字PSW的内容),同时还根据中断的来源,把相应的向量单元地址装入PC中。

这些向量地址是:中断源向量单元
外部中断0 0003H
定时器0溢出 000BH
外部中断1 00l3H
定时器1溢出 001BH
串行口 0023H
定时器2溢出或T2EX端出现负跳变 002BH
中断服务子程序的最后一条指令应是RETI(中断返回)。

RETI指令将清除”优先级激活”触发器(该触发器在响应中断时被置位)。

然后由堆栈弹出两个字节(下一条指令地址)装入到PC中。

5.外部中断
外部中断的激活方式分为两种:一种是电平激活.另一种是边沿激活。

这两种方式可以靠TCON寄存器中的中断方式位ITI或IT0来控制。

若ITX=0(X为0
或l,后文中用到类同的符号,其含意相似),则采用电平激活方式:在INTx引脚上检测到低电平,将触发外部中断。

若ITx=1.则采用边沿激活方式:在相继的两个周期中,对INTx引脚进行连续两次采样,若第一次采样值为高,第二次为低,则TCON寄存器中的中断请求标志IEx被置1,以请求中断。

由于外部中断引脚每个机器周期被采样一次,为确保采样,由引脚INTx输入的信号应至少保持一个机器周期,即12个振荡器周期。

如果外部中断为边沿
激活方式,则引脚处的高电平和低电平值至少各保持一个机器周期,才能确保CPU 检测到电平的跳变,而把中断请求标志IEx 置1。

如果采用电平激活外部中断方式,外部中断源应一直保持中断请求有效.直至所请求的中断得到响应时为止。

6 .中断请求的撤除
CPU 响应某中断请求后,在中断返回(RETI)前,该中断请求应该撤除,否则会引起另一次中断。

对于定时器0或1溢出中断,CPU 在响应中断后,就用硬件清除了有关的中断请求标志TF0(TCON.5)或TFl(TCON.?),即中断请求是自动撤除的,无需采取其他措施。

对于边沿激活的外部中断,CPU 在响应中断后,也甩硬件清除了有关的中断请求标志IE0(TCON.1),或IEl(TCON.3), 自动撤除了中断请求。

对于电平激活的外部中断,由于在硬件上,CPU 对0INT 和1INT 引脚的信号完全没有控制(在专用寄存器中,没有相应的中断请求标志),也不像某些微处理机那样.响应中断后会自动发出一个应答信号。

因此在Mc5—5l 的用户系统中,要另外采取撤除外部中断的措施。

例如,可以利用单稳态触发器对中断源信号进行整形,使之符合要求。

7.中断响应时间
现以外部中断为例,说明中断响应的最短时间。

在每个机器周期的S5P2,0INT 和1INT 端的电平被锁到内部保持寄存器中,而实际上在下一个周期才会查询这些值。

如果中断请求有效,一般情况下,下一条要执行的指令将是一条硬件子程序调用指令,调用所要求的服务程序。

调用本身要花费两个机器周期。

这样,从外部中断请求有效到开始执行服务程序的第一条指令,中间要隔3个周期,这是最短的响应时间。

如果发生了第3节所述的3种情况之一,那么中断请求受阻,中断响应时间会更长些。

如果一个同级的或高优先级的中断已经在进行,则很显然,附加的等待时间将取决正在进行的中断服务程序。

若正在执行的一条指令还没有进行到最后一个周期,那么附加的等待时间不会超过3个周期,因为一条指令的最长执行时间为4个周期(MUL 和DIV)。

如果正在执行的是RETI 指令或者是访问IE 或IP 的指令,则附加的等待时间不会超过5个周期(为完成正在执行的指令,还需要一个周期,加上为完成下一条指令所需要的最长时间——4个周期,故最长为5个周期)。

若系统中只有一个中断源,则响应时间在3个同期到8个周期之间。

相关文档
最新文档