版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、5.1.1定时计数器的结构.定时和计数的原理(1)计数 定时计数器的实质是加计数器(位),其原理类似于古代用来计时的水钟:假设计满一小时需要100,000,000滴,这称为水钟的计数容量16位定时/计数器的计数容量是65536单片机是对脉冲个数计数,计数器每接收到一个脉冲,计数值加1,当接收满65535个脉冲后,再来一个脉冲,计数值清0表明这一轮计数结束,同时将标志位TF0或TF1置1。第1页/共71页5.1.1定时计数器的结构.定时和计数的原理(1)计数 (2)定时 单片机内部的计数器用作定时器时,是对标准的时钟进行了计数,每来一个时钟脉冲,计数器加1,只要保证计数脉冲的间隔相等,则计数值就
2、代表了时间的流逝。计数器如何能作为定时器使用呢?单片机中的定时器和计数器其实是一个器件:计数器:是对外部发生的事件进行计数,定时器:是对单片机内部的标准时钟脉冲进行计数。第2页/共71页 (2)定时计数器如何能作为定时器使用呢?单片机中的单片机内部的标准时钟脉冲是如何获得的呢? 见图4-9 ,它是由单片机的晶振经过12分频后得到。由于晶振的频率很准,所以这个时钟脉冲的时间间隔也很准。不难算出,当单片机采用12的晶振时,它提供给计数器的脉冲频率是,脉冲周期就是微秒。图4-9 定时/计数器T0的结构示意图第3页/共71页单片机内部的标准时钟脉冲是如何获得的呢? 见图4- 单片机内部的16位定时计数
3、器由高8位和低8位两个寄存器组成: T0由TH0和TL0组成, T1由TH1和TL1组成, 定时计数器的计数值就存放在这里面。定时/计数器T1的结构与T0相同。图4-9 定时/计数器T0的结构示意图 2定时/计数器的结构第4页/共71页 单片机内部的16位定时计数器由高8位和低8位两 再以水钟为例,当水不断落下,下面容器中的水不断变多,最终总有一滴水使得容器完全充满。这时如果再有一滴水落下,就会发生“溢出”。与此类似,16位定时计数器计满65536个脉冲时,也会发生溢出。 定时计数器溢出后标志位TF0(或TF1)由0变1,由此能够引发定时中断(在中断定时方式下),这就像定时的时间一到,闹钟就会
4、响一样。 如果采用12的晶振,对应的脉冲周期是微秒,计满65536个脉冲所对应的时间就是65.536ms。 3定时/计数值的设置第5页/共71页 再以水钟为例,当水不断落下,下面容器中的水不断变现实生活中,如何满足计数值少于65536的需要?如牛奶包装线上24盒装箱一次。再回到水钟的例子上去: 刚才假设下面容器滴入100,000,000滴水才会满,现在我们在开始滴水之前先放入一勺水,这样问题就解决了。 计数器的道理是一样的,只要用预置数的方法先在计数容器内存入一个初值 (通常称为时间常数),如我们要计100,那就存入65436,只要再来100个脉冲,就刚好会溢出,引发中断。计数器初值的设置第6
5、页/共71页现实生活中,如何满足计数值少于65536的需要?如牛奶包装线 在主频为12MHz的情况下,每个时钟脉冲是1微秒,则计满65536个脉冲需65.536毫秒,如要定时10毫秒则存入初值55536,(10毫秒是10000微秒,需计数10000个脉冲)。可见, 定时器的定时时间长短与系统时钟和定时器初值有关。 说明 1. 当定时计数器用作计数器时,通过引脚P3.4(P3.5)对外部输入脉冲计数。 2 . 定时计数器T0(T1)启动运行后,会按设定的工作方式独立进行计数,不再占用CPU时间。当计数器T0(T1)计满溢出时,TF0(TF1)置1,向CPU发出中断请求信号。定时器初值的设置第7页
6、/共71页 在主频为12MHz的情况下,每个时钟脉冲是1微秒4-10 定时/计数器的控制关系第8页/共71页4-10 定时/计数器的控制关系第8页/共71页 5.2定时计数器的控制 在单片机中有两个特殊功能寄存器与定时/计数有关,它们就是TMOD和TCON,定时计数器T0、T1就由它们来控制: TMOD用于设置工作方式; TCON用于控制其启动、停止和中断申请。 1.定时器工作方式寄存器TMOD TMOD用于设置T0和T1的工作方式,字节地址为89H,不能按位寻址。其格式和各位的含义如下:第9页/共71页 5.2定时计数器的控制 1.定时第10页/共71页第10页/共71页第11页/共71页第
7、11页/共71页 2定时/计数器控制寄存器TCON TCON的低4位用于控制外部中断,高4位用于控制定时/计数器的启动和中断申请。 TF0(或TF1) 当计数溢出时,TF0(或TF1)会自动由0变1,告诉我们计数已满,我们可以通过查询TF0(或TF1)位的状态来判断计时时间是否已到; 如果采用定时中断方式,则 TF0(或TF1)由0变1时,能自动引发中断。第12页/共71页 2定时/计数器控制寄存器TCON第12页/ TR0(或TR1) 由图4-11 可知,只有当TR0(或TR1)为1时,开关1才能闭合,计数脉冲才能进入计数器,故TR0(或TR1)称为运行控制位,可用指令“SETB TR0(或
8、TR1)”来置位以启动定时/计数器运行;或用指令“CLR TR0(或TR1)”来关闭定时/计数器的工作,一切全靠编程人员控制。图4-11 定时/计数器T0方式0的逻辑结构示意图 第13页/共71页 TR0(或TR1)图4-11 定时/计数器T0方式05.3 定时/计数器的工作方式 80C51单片机定时/计数器T0有4种工作方式(方式0、1、2、3),T1有3种工作方式(方式0、1、2)。 1. 方式0 当TMOD的M1M0=00时,定时/计数器工作于方式0。方式0为13位定时/计数器,由TL0的低5位和TH0(8位)共同完成计数功能(TL0的高3位可忽略)。 当TL0的低5位溢出时,向TH0产
9、生进位;TH0溢出时,将定时器中断请求标志位TF0置1,可申请中断,也可对TF0进行查询。 第14页/共71页5.3 定时/计数器的工作方式第14页/共71页图4-11 定时/计数器T0方式0的逻辑结构示意图 第15页/共71页图4-11 定时/计数器T0方式0的逻辑结构示意图 2. 方式1 当M1M0=01时,定时/计数器工作于方式1。方式1的计数位数是16位,由TL0作为低8位,TH0作为高8位共同构成。其余操作同方式0。图4-12 定时/计数器T0方式1的逻辑结构示意图第16页/共71页2. 方式1图4-12 定时/计数器T0方式1的逻辑结构示3. 方式2 当M1M0=10时,定时/计数
10、器工作于方式2。这是自动重装初值的8位计数方式,它省去了方式0和方式1在多次重复计数状态下必须重新设定计数初值的麻烦,但是却付出了减小定时时间的代价。图4-13 定时/计数器T0方式2的逻辑结构示意图特别适合于制作比较精确的脉冲信号发生器。第17页/共71页3. 方式2图4-13 定时/计数器T0方式2的逻辑结构示4. 方式3 方式3只适用于定时/计数器T0。当T1被设定为方式3状态时,将停止计数。 当M1M0=11时,T0工作于方式3。 此时TL0和TH0作为两个相互独立的8位定时/计数器使用。TL0既可定时又可计数,它使用T0的各控制位、引脚和中断源,即C/、GATE、TR0、TF0、T0
11、(P3.4引脚)、(P3.2引脚);TH0此时只能用作内部定时功能,它借用了定时/计数器T1的控制位TR1和T1的中断标志位TF1,其启动和停止只受TR1控制。第18页/共71页4. 方式3第18页/共71页图4-14 定时/计数器T0方式3的逻辑结构示意图 定时器T1无工作方式3,当定时器T0工作在方式3时,定时器T1可设置为方式0、方式1和方式2。 第19页/共71页图4-14 定时/计数器T0方式3的逻辑结构示意图 4.4.1应用指导 1定时/计数器的定时/计数范围 定时/计数器工作于不同方式下的位数不同,它所具有的计数范围也不一样: 工作方式0:13位定时/计数方式,因此,最多可以计到
12、213,也就是8192次。 工作方式1:16位定时/计数方式,因此,最多可 以计到216,也就是65536次。 工作方式2和工作方式3:都是8位定时/计数方 式,因此,最多可以计到2 8,也就是256次。 如果我们需要超过计数器计数范围的定时或计数功能,应该怎样做?4.4定时/计数器应用与训练第20页/共71页 4.4.1应用指导 工作方式0:13位定时/计 2时间常数初值的计算 定时/计数器只要预设一个时间常数初值,就可以完成不超过其计数范围的任意大小的计数。算法如下: 定时时间常数初值X: 方式0 X=8192-t(fosc/12) 方式1 X=65536-t(fosc/12) 方式2、方
13、式3 X=256-t(fosc/12) 其中t是需要定时的时间,单位是微秒;fosc是晶振 计数时间常数X: 方式0 X=8192-S 方式1 X=65536-S 方式2、方式3 X=256-S 说明:式中S是需要计数的次数 第21页/共71页 2时间常数初值的计算 计数时间常数X:第21页/共71 假设流水线上一个包装是12盒,要求每到12盒就产生一个动作,用单片机的工作方式0来控制,应当预置的计数初值是多少呢? 对了,就是8192-12=8180。3定时/计数器的初始化对80C51单片机的定时/计数器编程的初始化方法: 对TMOD赋值,以确定T0和T1的工作方式; 计算时间常数初值,并将其
14、写入TH0、TL0或TH1、 TL1; 采用中断定时方式时,需对IE赋值开中断; 置位TR0或TR1,启动定时/计数器。 第22页/共71页 假设流水线上一个包装是12盒,要求每到12盒就产4.4.2 基本训练初始化训练 例3:某牛奶生产线上一个包装是12盒,要求每生产12盒就执行装箱操作,用80C51单片机来控制,请编写初始化程序。 1思路与计算:要确定定时器(T0 或T1),选择其工作方式。我们以T0的工作方式2为例,计算时间常数并赋值给TH0、TL0。 X=256-S=256-12=244=0F4H第23页/共71页4.4.2 基本训练初始化训练 例3:某牛奶生 2初始化程序: MOV
15、TMOD,#06H ;T0作计数器,工作于方式2 MOV TH0,#0F4H ;装入时间常数初值 MOV TL0,#0F4H ;自动重装时间常数 MOV IE ,#00H ;用查询方式确定计满12盒?(或MOV IE ,#82H);使用T0中断,计满12盒后, ;自动申请中断 SETB TR0 ;启动T0波特率发生器 3总结:对计数过程是否结束有查询和中断两种方法,要合理选择,并在程序设计中正确体现。 第24页/共71页 2初始化程序:第24页/共71页 4.4.3应用实例 1 定时/计数器用于外部脉冲宽度的测量 (1)测量原理 可以利用定时计数器方式寄存器TMOD中的门控位GATE与 引脚配
16、合使用,控制定时计数器的启动与停止: 当GATE1时,要求TR1l,且 为高电平,才能启动定时器T1计数工作;如果 出现低电平,则T1停止计数; 当GATE=0时,只要TR11就可以启动定时器,而与 的输入状态无关。 可以利用定时计数器方式寄存器TMOD中的门控位GATE与 引脚配合使用,控制定时计数器的启动与停止: 当GATE1时,要求TR1l,且 为高电平,才能启动定时器T1计数工作;如果 出现低电平,则T1停止计数; 当GATE=0时,只要TR11就可以启动定时器,而与 的输入状态无关。第25页/共71页 4.4.3应用实例 可以利用定时计数器 利用上述特点,将被测脉冲信号从(P3.3)
17、引入,在T1的程序初始化中令GATE1,同时“SETB TR1”,这样脉冲信号的上升沿就能启动T1计数,脉冲信号下降沿能使T1停止计数。利用定时器T1的计数值m乘以机器周期就可以得到被测脉冲信号的宽度TW。(2)硬件电路 硬件电路简图如图4-15。 第26页/共71页 利用上述特点,将被测脉冲信号从(P3.3)引入(3)程序设计 利用80C51的内部RAM30H、31H单元保存被测脉冲宽度对应的计数值。 参考程序如下: ORG 0000H AJMP MAIN ORG 0100H MAIN:MOV SP,#60H ;设堆栈指针 MOV TMOD,#90H;设置控制字,T1工作于方式 ; 1,GA
18、TE=1 MOV TH1,#00H ;设定计数初值为00H 第27页/共71页(3)程序设计第27页/共71页 MOV TL1,#00HL1: JB P3.3,L1 ;等待输入变为低电平 SETB TR1 ;预置TR1=1,准备启动T1L2: JNB P3.3,L2 ;等待上升沿,以便开始计数L3: JB P3.3,L3 ;是高电平则计数继续 CLR TR1 ;低电平则停止计数 MOV A,TL1 ;读低位计数值 MOV 30H,A ;低位计数值存于30H MOV A,TH1 ;读高位计数值 MOV 31H,A ;高位计数值存于31H END第28页/共71页 MOV TL1,#00H第28页
19、/共71页 (4)总结与思考 定时/计数器还可用于测量脉冲信号的频率、周期等。本实例是利用定时/计数器的门控位(GATE)测量脉冲宽度。但要注意,在晶振12MHz的情况下,被测脉冲宽度范围最大为655351s=65.536ms。 ,如果要测量脉冲信号的周期,该如何去做? 2计数器用于绕线机的控制 绕线机常用于对电机或变压器的绕组进行绕制,图4-16是绕线机的控制电路。当按下工作按钮以后,机器启动,绕线机在直流电机和减速齿轮的带动下开始工作。当绕线架上的线圈绕到规定的圈数时,绕线机会自动停止绕线。如果再次按下工作按钮,绕线机会重复以上过程。第29页/共71页 (4)总结与思考第29页/共71页图
20、4-16 绕线机的控制电路控制说明:1软件控制P1.0=0时,绕线机开始绕线;P1.0=1时,绕线机不绕线。 2绕线机每绕一圈,绕线机脉冲产生电路就产生一个脉冲信号。第30页/共71页图4-16 绕线机的控制电路第30页/共71页 (1)工作原理 由于单片机复位后P1 口的输出状态全部为1,所以系统上电后,P1.0输出高电平“1”绕线机不工作。 当按下工作按钮以后,P1.1输入低电平“0”,当程序检测到P1.1=0时,在程序指令的控制下从P1.0输出低电平“0”。绕线机开始绕线。绕线机每绕一圈,定时/计数器T1的输入引脚上就会产生一个负跳变的输入脉冲。因此,只要用定时/计数器T1的计数功能控制
21、好输入脉冲的个数,就等于控制了绕线机的绕线圈数。 当绕线机缠绕到指定的圈数时,定时/计数器T1引发计数中断,在程序指令的控制下,P1.0将输出的高电平“1”,使电机停转,制动器恢复制动,于是系统回到最初的停机状态。 第31页/共71页 (1)工作原理第31页/共71页 我们假设绕线架的规定匝数是5000圈,为控制这个圈数,可以设定定时/计数器T1用作计数器且工作在方式1,于是确定其计数初值为: 初值=65536-5000=60536=0EC78H 所以(TH1)=0ECH,(TL1)=78H(2)控制程序 参考程序如下: ORG 0000H AJMP MAIN ORG 001BH AJMP C
22、OUNT ORG 0100H第32页/共71页 我们假设绕线架的规定匝数是5000圈,为控制这个 MAIN: MOV TMOD,#50H ;设置T1为计数器,工作于方式1 MOV TH1,#0ECH ;设定计数初值 MOV TL1,#78H MOV SP,#60H ;设堆栈指针 SETB ET1 ;开T1中断 SETB EA ;CPU开中断 CLR F0 ;用户标志F0清0WAIT: MOV C,P1.1;等待启动 JC WAIT;P1.1=1,等待 CLR P1.0;启动设备 SETB TR0;T1开始计数第33页/共71页 WAIT: MOV C,P1.1;等待启动第LOOP: JNB F
23、0,$ ;等待计数5000中断 SETB P1.0;绕线机停止工作 CLR TR0 ;T1停止计数 CLR F0 ;清0 SJMP WAIT;等待重新启动 ORG 0200H;T1中断服务程序起始地址COUNT:MOV TH1,#0ECH;重新设定计数初值 MOV TL1,#78H SETB F0;用户标志置1 RETI ;中断返回 END第34页/共71页LOOP: JNB F0,$ ;等待.4.4课题与实训8 简易方波发生器一.实训目的 掌握定时器初值的计算方法 学习定时器的使用及定时中断程序的设计方法 掌握方波信号发生器的设计方法二.课题要求 1基本要求: 利用定时/计数器T1,工作于方
24、式0,采用查询方式,在P1.0引脚输出频率为500Hz的方波,并用示波器进行观察(晶振采用12MHz)。 2较高要求: 利用定时/计数器T1,工作于方式0,采用中断方式,在P1.0引脚输出频率为500Hz的方波,并用示波器进行观察(晶振采用12MHz)。第35页/共71页.4.4课题与实训8 简易方波发生器一.实训目的第35页三.背景知识 1方波产生原理 使P1.0引脚的输出状态定时翻转,则该端口能输出一定频率的方波。 2方式0的时间常数初值 定时/计数器工作于方式0状态下,定时/计数的长度是13位。应用前面给出的时间常数初值的计算公式 X=8192-t(fosc/12) 我们可以很方便地计算
25、出时间常数初值,但在将其装入定时/计数器的TH、TL寄存器时,必须要注意:将计算结果的高8位装入TH1(或TH0)、低5位装入TL1(或TL0),这一环节是非常容易出错的。 第36页/共71页三.背景知识第36页/共71页 以该实训T1方式0产生500Hz的方波(周期是2ms)为例,需要进行1ms的定时,时间常数初值 X=8192-110-3(12106/12)=8192- 1000=7192=1C18H=0001110000011000B 以13位二进制数表示,是11100000 11000B, 则(TL1)=00011000B=18H,(TH1)=11100000B=0E0H 定义TMOD
26、=00000000B第37页/共71页 以该实训T1方式0产生500Hz的方波(周期是2四.硬件电路该实训硬件电路十分简单,见图4-17。图4-17 简易方波发生器的硬件电路第38页/共71页四.硬件电路图4-17 简易方波发生器的硬件电路第38页/五.参考程序(1) P1.0输出500Hz方波查询方式 ORG 0000H LJMP MAIN ;跳至主程序 ORG 0100H MAIN:MOV TMOD,#00H;置T1工作于方式0 MOV TH1,#0E0H;装入时间常数初值 MOV TL1,#18H SETB TR1 ;启动T1LOOP:JNB TF1,LOOP ;查询等待 CLR TF1
27、 ;清TF1 CPL P1.0 ;P1.0取反第39页/共71页五.参考程序第39页/共71页 MOV TH1,#0E0H;重新装入时间常数初值 MOV TL1,#18H AJMP LOOP ;继续生成波形 END第40页/共71页 MOV TH1,#0E0H (2) P1.0输出500Hz方波中断方式 ORG 0000H LJMP MAIN ;跳至主程序 ORG 001BH ;T1的中断入口地址 LJMP FANGBO;转至中断服务程序 ORG 0100H MAIN:MOV TMOD,#00H;置T1工作于方式0 MOV TH1,#0E0H;装入时间常数初值 MOV TL1,#18H SET
28、B ET1 ;允许T1中断 SETB EA ;CPU开中断 SETB TR1 ;启动T1第41页/共71页 (2) P1.0输出500Hz方波中断方式第 SJMP $ ;等待中断FANGBO:CPL P1.0 ;P1.0取反 MOV TH1,#0E0H;重新装入时间常数初值 MOV TL1,#18H RETI ;中断返回 END六.总结与提高 1总结 本实训利用定时器T1的定时功能,以两种形式输出频率为500Hz方波。在实际应用中,方波的频率可能要根据现场测量参数、给定参数或按照某种函数关系而变化。因此输出波形的频率在编程时还是未知的。第42页/共71页 SJMP $ 2提高 定时/计数器的计
29、时范围有限,当晶振采用12MHz时,方式1的计时时间最长,也只有65.536ms。当需要定时的时间超出了定时/计数器的计数范围,如需定时2秒,这时可以采用以下两种方法来处理: 定时器+软件计数的方法 思路是:利用定时/计数器T1,工作于方式1,实现50 ms/次的定时,只要定时40次即可实现2s定时。可以算出定时/计数器T1工作于方式1时,时间常数初值为 X=65536-t(fosc/12)=65536-5010-3(12106/12) =15536=3CB0H 于是(TH1)=3CH ,(TL1)=0B0H。第43页/共71页2提高 定时器+软件计数的方法第43页/共71页 定义TMOD=0
30、0010000B,此处只给出延时2s的查询方式子程序。DELAY:MOV R3,#40 ;设置定时器溢出次数 SETB TR1 ;启动T1开始计时 D1: MOV TH1,#3CH ;装入时间常数初值 MOV TL1,#0B0HD2:JBC TF1,D3;TF1为1否?是则跳至D3,并清TF1, AJMP D2 ;否,则跳至D2 D3:DJNZ R3,D1;R3=0?不是,跳到D1 CLR TR1 ;是,则停止计数 RET第44页/共71页 定义TMOD=00010000B,此处只给出延时采用两个定时器串联的方法 思路是: 将两个定时器中的一个(如T0)设置为定时方式,另一个(T1)设置成计数
31、方式;将定时器T0计满产生的输出,通过一根I/O口线(如P1.0)连接到计数器T1的计数脉冲输入端P3.5,从而实现更长时间的定时。第45页/共71页采用两个定时器串联的方法第45页/共71页.5中断与定时计数器综合应用举例 4.5.1 概述 定时/计数功能与中断一样,都是单片机的常用功能。两者常常同时使用。如实训7就是简单的中断、定时综合应用实例。在这类程序的编制过程中,要注意这样几个问题: 选择合适的中断和定时/计数方式。 如外部中断是采用电平触发还是脉冲下降沿触发;定时/计数是用自动重装方式还是每次定时结束后用软件重装。第46页/共71页.5中断与定时计数器综合应用举例 4.5.1 概述
32、 确定定时结束的判别方法,用中断还是查询。 如采用中断,与其它中断的优先级如何确定,是否会影响系统功能。 正确初始化。 合理分配控制功能。 .5.2课题与实训9 音乐门铃一.实训目的 1. 掌握中断与定时/计数综合程序的设计方法 2.学习音乐门铃的设计过程二.课题要求 在单片机P1.0引脚外接扬声器,唱出祝你生日快乐歌。第47页/共71页 确定定时结束的判别方法,用中断还是查询。.5.2课三.背景知识 1.音频脉冲的产生 声音的频谱范围约在几十到几千赫兹,若能利用程序来控制单片机某个口线的“高”电平或“低”电平,则在该口线上就能产生一定频率的方波,接上喇叭就能发出一定频率的声音,若再利用延时程
33、序控制“高”“低”电平的持续时间,就能改变输出频率,从而改变音调。 例如,要产生中音1。从表4-5可知,中音1的频率为523Hz,周期T=1/523=1912s,其半周期为1912/2=956s,因此只要在P1.0引脚产生半周期为956s的方波,即可听到持续的1音。C调各音符频率与计数初值的对应表如下:第48页/共71页三.背景知识第48页/共71页注:不发音的简谱码用“0”表示第49页/共71页注:不发音的简谱码用“0”表示第49页/共71页 2音乐节拍的生成 要唱出一首歌,只产生出音频脉冲还不够,还要考虑节拍。 定义:每个音符占用一个字节,字节的高4位代表音符的高低,低4位表示该音符的节拍
34、,如果一拍为0.4秒,则1/4拍是0.1秒,只要设定延迟时间就可获得节拍的时间。我们也可以设1/4拍为1个DELAY,则1拍应该是4个DELAY,只要求得1/4拍的DELAY时间,其余的节拍就是它的倍数。见表 表4-6 节拍与节拍码对照表第50页/共71页 2音乐节拍的生成表4-6 节拍与节拍码 3.建立音乐的步骤: 先把谱的音符找出,然后由上表建立时间常数初值T的顺序表,标号为TABLE1。 建立音符和节拍表,标号为TABLE,将构成发音符的计数值放在其中。 TABLE表的结构为:简谱码(代表音符)为高4位,节拍码(表示节拍数)为低4位,在唱歌程序中对每一个有节拍的音符能通过设计共同生成音符
35、节拍码,本程序的音符节拍码表见表4-5。第51页/共71页 3.建立音乐的步骤:第51页/共71页(1)1/4拍的延迟时间=187毫秒DELAY:MOV R5,#02 D1:MOV R4,#187 D2:MOV R3,#248 DJNZ R3,$ DJNZ R4,D2 DJNZ R5,D1 DJNZ R6,DELAY RET (2)歌谱 生日快乐歌 C3/45 . 5 6 5 7 -5 . 5 6 5 -祝 你生日 快 乐 祝 你 生 日 快 乐5 . 5 7 6-我 们高声 歌 唱 祝 你生日 快 乐 第52页/共71页(1)1/4拍的延迟时间=187毫秒 (2)歌谱四.硬件电路图4-18
36、音乐的应用 电路 第53页/共71页四.硬件电路图4-18 音乐的应用 电路 第53页/共7五.参考程序 ORG 0000H LJMP MAIN ;跳至主程序 ORG 001BH ;T1的中断入口地址 LJMP TIM1 ;转至中断服务程序 ORG 0100H MAIN:MOV TMOD,#10H ;置T1工作于方式1 SETB ET1 ;开T1中断 SETB EA ;CPU开中断 MAIN1: MOV 60H,#00H ;取简谱码指针 NEXT: MOV A,60H ;简谱码指针装入A MOV DPTR,#TABLE ;指向简谱码TABLE表地址 MOVC A,A+DPTR ;简谱码存入A
37、MOV R1,A ;简谱码暂存R1 JZ STOP ;是否取到结束码00? 第54页/共71页五.参考程序 ORG 0000 ANL A,#0FH ;没有,则取低4位的节拍码 MOV R6,A ;取到的节拍码存入R6 MOV A, R1 ;将取到的简谱码再装入A SWAP A ;高低4位交换 ANL A,#0FH ;取低4位的音符码 JNZ SING ;取到的音符码是否为0? CLR TR1 ;是,则不发音 AJMP DT ;转至DTSING: DEC A ;对取到的非0音符码减1 MOV 22H,A ;音符码暂存22H RL A;乘2 MOV DPTR,#TABLE1 ;至TABLE1取与高
38、字节相 ;对应的频率初值 第55页/共71页 ANL A,#0FH MOVC A,A+DPTR ; MOV TH1,A ;取到的高字节存入TH1 MOV 21H,A ;取到的高字节存入21H MOV A, 22H ;重装取到的音符码 RL A;乘2 INC A;加1 MOVC A,A+DPTR ;至TABLE1取与低字节相对 ;应的频率初值 MOV TL1,A ;取到的低字节存入TL1 MOV 20H,A ;取到的低字节存入20H SETB TR1 ;启动T1,开始计时DT: LCALL DELAY ;1/4拍的基本单位时间187毫秒 INC 60H ;将简谱码指针加1 第56页/共71页 M
39、OVC A,A+DPTR AJMP NEXT ;取下一个码STOP: CLR TR1 ;计时停止 AJMP MAIN1 ;重复循环 TIM1: PUSH ACC ;保护A值 PUSH PSW ;保护PSW MOV TH1,21H;重装入时间常数初值 MOV TL1,20H;重装入时间常数初值 CPL P1.0 ;P1.0取反,发声 POP PSW ;恢复PSW POP ACC ;恢复A RETIDELAY: MOV R5,#2 ;187毫秒子程序,决定音乐节拍 D2: MOV R4,#187 ;第57页/共71页 AJMP NEXT D3: MOV R3,#248; DJNZ R3,$; DJ
40、NZ R4,D3; DJNZ R5,D2; DJNZ R6,DELAY; RETTABLE1: DW 64260,64400,64524,64580 DW 64684,64777,64820,64898 DW 64968,65030,65058,65110 DW 65157,65178,65217 TABLE: ;1 DB 82H,01H,81H,94H,84H DB 0B4H,0A4H,04H DB 82H,01H,81H,94H,84H DB 0C4H,0B4H,04H 第58页/共71页 D3: MOV R3,#248;第58DB 0E2H,01H,0E1H,0D4H,0B4HDB 0C
41、4H,0B4H,04HDB 00END六.总结与提高制作音乐门铃的关键就是对乐谱建表,包括T值表和简码表。以表4-5的T值表为例,对于简单的乐谱,只需再增加高音区和低音区的几个音符,其余部分不变;而简码表则不然,它要随着每个音的音符和节拍而定,因曲目而异。;2 DB 82H,01H,81H,0F4H,0D4H DB 0B4H,0A4H,94H第59页/共71页DB 0E2H,01H,0E1H,0D4H,0B4H六. 下面给出两只老虎的乐谱,你能制作出它的音乐门铃吗? 两只老虎 4/4 1 2 3 11 2 3 13 4 53 4 5 两只老虎 两只老虎 跑得快跑得快 5 6 5 4 3 15
42、6 5 4 3 11 5 11 5 1 一只没有耳朵 一只没有尾巴 真奇怪 真奇怪 第60页/共71页 下面给出两只老虎的乐谱,你能制作出它的音乐门4.6外部中断源的扩展 在单片机控制系统中,外部中断的使用非常重要,通过它可以中断CPU的运行,转去处理更为紧迫的外部事务,如报警、电源掉电保护等。 80C51单片机仅提供了两个外部中断源,在实际控制系统中可能出现多个外部中断,因此有必要对外部中断源进行扩展。4.6.1利用定时器溢出中断扩展外部中断源 即把内部不使用的定时/计数器出借给外部中断使用,方法如下: 将80C51单片机闲置的定时/计数器的初值设为全1,只要从计数引脚(T0/T1)输入一个
43、脉冲就可以使其引起中断。第61页/共71页4.6外部中断源的扩展 在单片机控制系统中,外可以采用下面的程序初始化T1: MOV TMOD,#60H;T1工作于方式2 MOV TL1,#0FFH;设为全1 MOV TH1,#0FFH SETB TR1 ;启动T1 SETB ET1 ;开T1中断 SETB EA ;CPU开中断 中断服务程序 RETI第62页/共71页可以采用下面的程序初始化T1:第62页/共71页4.6.2利用中断与查询相结合的方式扩展 电路如图419所示,当CPU检测到 的中断请求信号时,由P1口查询判断中断源,点亮相应的发光二极管。 源程序如下: ORG 0000H AJMP
44、 MAIN ;设主程序入口 ORG 0003H ; 中断入口 AJMP LL ;转中断服务程序 ORG 0100H ;主程序起始地址 MAIN:ORL P1,#0FFH ;P1口置输入 SETB IT0 ;设 边沿触发SETB EX0 ;允许 中断SETB EA ;开中断AJMP $ ;等待中断第63页/共71页4.6.2利用中断与查询相结合的方式扩展 电路如ORG 0200H LL: JNB P1.0, LED1 ;IN0没中断,再判断下一 个 CLR P1.4 ;IN0中断,灯L0亮LED1: JNB P1.1, LED2 ;IN1未中断 CLR P1.5 ;IN1中断,L1亮LED2:
45、JNB P1.2, LED3 ;IN2未中断 CLR P1.6 ;IN2中断,L2亮LED3 :JNB P1.3, END0 ;IN3未中断 CLR P1.7 ;IN3中断,L3亮END0 :RETI ;返回 END 除此之外,还可以采用串行口方式和中断控制芯片8259来扩展。 第64页/共71页ORG 0200H 除此之外,还可以采用串行口本章小结 中断系统及定时/计数器是单片机的重要组成部分。利用中断技术能够更好地发挥单片机系统的处理能力,有效地解决慢速工作的外设与快速工作的CPU之间的矛盾,从而提高了CPU的工作效率,增强了它的实时处理能力。 中断处理一般包括中断请求、中断响应、中断服务、中断返回四个环节。 80C51单片机中断系
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 静电复印纸市场分析及投资价值研究报告
- 手动移苗器产业链招商引资的调研报告
- 吉他效果器踏板产业链招商引资的调研报告
- 环保项目校企合作协议书
- 非医用激光脱毛装置商业机会挖掘与战略布局策略研究报告
- 运载工具驾驶和控制模拟器项目营销计划书
- 首饰专用袋项目营销计划书
- 白毛茛碱项目运营指导方案
- 住所代理公寓行业相关项目经营管理报告
- 应急防灾工程合同(2篇)
- 人格障碍(分析“人格障碍”)49
- Unit 3 My friends Part C Story time(教学设计)-2024-2025学年人教PEP版英语四年级上册
- 2024中国海油校园招聘2024人(高频重点提升专题训练)共500题附带答案详解
- 孙中山诞辰纪念日主题班会主题班会
- 派出所外观建设形象规范
- 2024-2030年全球及中国半导体级磷烷行业现状动态及产销需求预测报告
- 2024年团务附有答案
- 液压动力滑台的PLC控制新版专业系统设计
- 2024年北京出版集团有限责任公司招聘笔试冲刺题(带答案解析)
- 24春国家开放大学《教育学》期末大作业
- 2024年长沙航空职业技术学院单招综合素质考试题库附答案(研优卷)
评论
0/150
提交评论