版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
任务三流水灯定时控制课件任务三流水灯定时控制课件任务三流水灯定时控制课件教学导航2”通过阅读科技书籍,我们能丰富知识,培养逻辑思维能力;任务三流水灯定时控制课件任务三流水灯定时控制课件任务三流水灯1教知识重点(1)中断控制用寄存器;(2)中断服务函数的编写;(3)定时器工作方式与控制寄存器的使用知识难点定时器工作方式;中断服务函数的编写推荐教学方式以任务入手,通过流水灯的定时控制程序的编写逐渐认识中断系统、定时器/计数器的作用,深化对中断系统与定时器的理解,掌握中断服务函数的编写方法与中断响应的机制。建议学时6学时学推荐学习方法通过对教师提供的电路图,编写程序,完成仿真调试,理解相关理论知识,学会应用。必须掌握的理论知识(1)单片机中断系统;(2)中断控制用寄存器;(3)中断服务函数的编写;(4)单片机定时器结构;(5)工作方式与控制寄存器;(6)定时器的应用必须掌握的技能中断程序、定时器应用程序的编写,仿真调试技巧。教学导航2知识重点(1)中断控制用寄存器;(2)中断服务函数的编写;知任务单任务描述任务二是利用单片机的并行I/O口外接流水灯,采用并行输入/输出方式控制发光二极管实现流水灯,在实现该任务时,每次点亮一个灯后要延时,否则无法看到流水灯效果,任务二通过软件方法实现延时。本任务要求利用单片机的定时器/计数器,让流水灯指定时间循环点亮发光二极管。任务要求如图3-1所示,由P0连接8只发光二极管,实现如下流水灯的功能:(1)要求每隔1s从左至右循环点亮发光二极管;(2)按自定时间间隔从左至右循环点亮发光二极管,点亮最右边的发光二极管后,再从右至左循环点亮。实现方法1.利用Proteus仿真运行,按任务要求实现流水灯。2.在实训设备上按任务要求连线,运行程序。3任务单任务描述任务二是利用单片机的并行I/O口外接流水灯,采任务三流水灯定时控制3.1中断系统3.2定时器/计数器4任务三流水灯定时控制43.1中断系统3.1.1中断的概念与作用3.1.2MCS–51单片机中断系统3.1.3中断服务函数53.1中断系统3.1.1中断的概念与作用5
3.1.1中断的概念与作用外部设备是微机的重要组成部分,而微机和外部设备之间不是直接相连的,而是通过不同的接口电路来达到彼此间的信息传送的。CPU与外部交换信息的方式:(1)程序控制传送方式(2)中断传送方式(3)直接存储器存取(DMA)方式63.1.1中断的概念与作用外部设备是微机1.中断的定义
你正在专心看书,突然电话铃响,于是你记下正在看的书的页数,去接电话,接完电话后再回来接着看书。日常中断的例子71.中断的定义你正在专心看书,突然电话铃响,于什么是中断?
中断是指计算机在执行某段程序的过程中,由于计算机系统内、外的某种原因,暂时中止原程序的执行,转去执行相应的处理程序,并中断服务程序执行完后,再回来继续执行被中断的原程序的过程。8什么是中断?中断是指计算机在执行某段程序的过2.中断的作用1)CPU与外设并行工作。解决CPU速度快、外设速度慢的矛盾。2)实时处理。控制系统往往有许多数据需要采集或输出。实时控制中有的数据难以估计何时需要交换。3)故障处理。计算机系统的故障往往随机发生,如电源断电、运算溢出、存储器出错等。采用中断技术,系统故障一旦出现,就能与时处理。4)实现人机交互:人和单片机交互一般采用键盘和按键,可以采用中断的方式实现,中断方式时CPU执行效率高,而且可以保证人机交互的实时性,故中断方式在人机交互中得到广泛应用。92.中断的作用1)CPU与外设并行工作。解决CPU速度快3.1.2MCS-51中断系统中断系统是指能实现中断功能的那部分硬件电路和软件程序。对于MCS-51单片机,大部分中断电路都是集成在芯片内部的,只有和中断输入线上的中断请求信号产生电路才分散在各中断源电路或接口芯片电路里。103.1.2MCS-51中断系统中断系统是指能实现中断功能IE0TCONSCONINT0IT0=0
IT0=1INT1IT1=0
IT1=1TF0IE1TF1T0T1TIRITXDRXDESET0EX0EX1ET1EA自然优先级矢量地址高级中断请求自然优先级矢量地址低级中断请求PX0PT0PX1PT1PSIEIP
中断标志位中断源允许总允许EA中断优先级3.1.2MCS-51单片机中断系统11IE0TCONSCONINT0IT0=0IT0=1IN1.MCS-51的中断源和中断标志中断源是指引起中断的事件。在单片机中,中断源是指引起中断原因的设备或事件,或发出中断请求信号的源泉。通常有I/O设备、实时控制系统中的随机参数和信息故障源等。121.MCS-51的中断源和中断标志中断源是指引起中断的事件1)外部中断源:MCS-51系列单片机有2个外中断源,称为外中断0和1,经由单片机上的P3.2、P3.3这两个外部引脚引入,为、。
2)内部中断源定时器溢出中断源。定时器溢出中断源由内部定时器/计数器产生,属于内部中断。串行口中断源。串行口中断是由内部串行口中断源产生。
(1)中断源131)外部中断源:MCS-51系列单片机有2个外中断源,称为外1)TCON中的中断标志位D7D6D5D4D3D2D1D0TF1TR1TF0TR0IE1IT1IE0IT0(2)中断请求标志(MSB)8FH8EH8DH8CH8BH8AH89H88H(LSB)外部中断INT0中断标志位(TCON.1):IE0=1,外部中断1向CPU申请中断
外部中断INT0触发方式控制位(TCON.0):
IT0=0,电平触发方式
IT0=1,下降沿触发方式注意:该寄存器可以位寻址。141)TCON中的中断标志位D7D6D5D4D3D2D1D0提示:①在电平触发方式下,CPU响应中断时,不能自动清除IE0标志。也就是说,IE0状态完全由状态决定,所以在中断返回前必须撤除的低电平,否则会引起重复中断;而在负跳变触发方式下,当CPU响应中断时,硬件会自动使IE0清0。②在负跳变触发方式下,为保证CPU能检测到负跳变,的高、低电平时间至少应保持1个机器周期。采样INT0采样INT0采样INT015提示:①在电平触发方式下,CPU响应中断时,不能自动清除I1)TCON的中断标志位
TCON8FH8EH8DH8CH8BH8AH89H88HD7D6D5D4D3D2D1D0TF1TR1TF0TR0IE1IT1IE0IT0T0溢出中断标志(TCON.5):T0启动计数后,计满溢出由硬件置位TF0=1,向CPU请求中断,此标志一直保持到CPU响应中断后,才由硬件自动清0。也可用软件查询该标志,并由软件清0。161)TCON的中断标志位TCON8FH8EH
D7D6D5D4D3D2D1D0SM0SM1SM2RENTB8RB8TIRI2)SCON的中断标志位(MSB)9FH9EH9DH9CH9BH9AH99H98H(LSB)注意:该寄存器可以位寻址!RI(SCON.0)——串行接收中断标志。TI(SCON.1)——串行发送中断标志。17D7D6D5D4D3D2D1D0SM0SM1SM2REN(1)中断允许控制——中断允许寄存器IE
2.中断控制D7D6D5D4D3D2D1D0EA××ESET1EX1ET0EX0(MSB)AFHAEHADHACHABHAAHA9HA8H(LSB)中断允许寄存器IE对中断的开放和关闭实行两级控制。所谓两级控制,就是有一个总开、关中断控制位EA,当EA=0时,则屏蔽所有的中断申请,即任何中断申请都不接受;当EA=1时,CPU开放中断,但五个中断源还要由IE的低5位的各对应控制位的状态进行中断允许控制。18(1)中断允许控制——中断允许寄存器IE2.中断控制D实例3-1如果我们要设置外中断1、定时器1中断允许,其它不允许,请设置IE的相应值。位D7D6D5D4D3D2D1D0符号EA××ESET1EX1ET0EX0值10001100(MSB)AFHAEHADHACHABHAAHA9HA8H(LSB)(a)SFR赋值IE=0x8c(b)用位赋值EA=1;CPU开中断ET1=1;定时/计数器1允许中断EX1=1;外中断T1允许中断19实例3-1如果我们要设置外中断1、定时器1中断允许,其它不(2)中断优先级控制MCS-51单片机有两个中断优先级:高级中断和低级中断。每一个中断源都可以通过编程确定为高优先级中断或低优先级中断。若CPU当前正在为低优先级中断服务,在开中断的条件下,它能被另一个高优先级中断请求所中断,转去为高级中断服务,再返回到被中断了的低级中断的服务程序,这即为中断嵌套。
20(2)中断优先级控制MCS-51单片机有两个中断优先级:高级中断嵌套过程CPU执行高级中断服务高级中断请求返回低级中断程序返回主程序响应高级中断低级中断请求CPU执行低级中断响应低级中断CPU在执行的主程序21中断嵌套过程CPU执行高级中断服务高级中断请求返回低级中断程中断优先级寄存器IPD7D6D5D4D3D2D1D0×××PSPT1PX1PT0PX0(MSB)BFHBEHBDHBCHBBHBAHB9HB8H(LSB)专用寄存器IP为中断优先级寄存器用户可用软件设定相应位为1,对应的中断源被设置为高优先级,相应位为0,对应的中断源被设置为低优先级系统复位时,均为低优先级该寄存器可以位寻址22中断优先级寄存器IPD7D6D5D4D3D2D1D0×××P自然优先权顺序中
断
源同级内优先权排列外部中断0中断(IE0)定时器/计数器0中断(TF0)外部中断1中断(IE1)定时器/计数器1中断(TF1)串行接口中断(TI/RI)
最
高
最
低23自然优先权顺序中断源同级内优先权排列外部中断0中断MCS-51系列单片机中断响应原则:1)高级中断请求可以中断正在执行的低级中断。2)同级或低级中断请求不能中断正在执行的中断。3)多个中断源同时向CPU申请中断,首先响应优先级别最高的中断请求;多个同级中断源同时向CPU申请中断,CPU通过内部硬件查询,按自然优先级确定优先响应哪一个中断请求。24MCS-51系列单片机中断响应原则:1)高级中断请求可以中断解:IP的首3位没用,可任意取值,设为000,后面根据要求写就可以了。位D7D6D5D4D3D2D1D0符号XXXPSPT1PX1PT0PX0值00000110实例3-2设有如下要求,将T0、外中断1设为高优先级,其它为低优先级,求IP的值。IP的值就是06H。25解:IP的首3位没用,可任意取值,设为000,后面根据要求写实例3-3在上例中,如果5个中断请求同时发生,求中断响应的次序。解:响应次序为定时器0→外中断1→外中断0→实时器1→串行中断。位D7D6D5D4D3D2D1D0符号XXXPSPT1PX1PT0PX0值0000011026实例3-3在上例中,如果5个中断请求同时发生,求中断响(1)中断响应的时序3.中断响应27(1)中断响应的时序3.中断响应27(2)CPU响应中断的条件①没有同级或高优先级的中断正在处理;②正在执行指令必须执行完最后一个机器周期(换言之,正在执行的指令完成前,任何中断请求都得不到响应);③若正在RETI或读写IE或IP寄存器,则必须执行完当前指令的下一条其它指令之后才会响应。28(2)CPU响应中断的条件①没有同级或高优先级的中单片机一旦响应中断请求,就由硬件完成以下功能:①自动清除相应的中断请求标志位(串行口中断请求标志RI和TI除外);②保护断点和现场,把被响应的中断源所对应的中断服务程序的入口地址(中断矢量)送入PC,从而转入相应的中断服务程序。③结束中断服务程序,恢复断点和现场,并返回响应中断之前的程序继续执行。(3)CPU响应中断的过程29单片机一旦响应中断请求,就由硬件完成以下功能:(3)CP3.1.3中断服务函数C51编译器支持在C语言源程序中直接编写8051单片机的中断服务函数,从而减轻使用汇编语言的繁琐程度,提高了开发效率。303.1.3中断服务函数C51编译器支持在C语言源程序中直1.中断服务函数的一般形式void函数名(void)interruptm[unsingn]代表中断号,是一个常量,取值范围是0-31。C51编译器允许32个中断,从8m+3处产生中断向量代表中断函数将要选择使用的寄存器组,也是一个常量,取值范围是0~3。311.中断服务函数的一般形式void函数名(void)i程序存储器ROM0000H:复位后,程序的入口地址(PC=0000H)0023H:串行口中断入口(中断号m=4)0003H:外部中断0入口(中断号m=0)000BH:定时器/计数器0中断入口(中断号m=1)0013H:外部中断1入口(中断号m=2)001BH:定时器1/计数器中断入口(中断号m=3)
002BHMCS-51单片机中断入口8字节32程序存储器ROM0000H:复位后,程序的入口地址(PC=0关于USING的说明using不仅可以用于中断服务函数的定义中,也可以用于普通的内部函数,但不能用于外部函数。就中断服务函数而言如果不使用using,则在进入中断服务函数的时候,中断函数中所用到的全部工作寄存器都要入栈,函数返回之前所有的寄存器内容出栈;如果使用using,则在进入中断服务函数的时候,只将当前工作寄存器组入栈,用using指定的工作寄存器组的内容不变也不入栈,函数返回之前将被保护的工作寄存器组出栈。33关于USING的说明using不仅可以用于中断服务函数的定义提示(1)使用using可缩减中断服务函数的入栈操作时间,因此可以使中断得到更与时的处理;但同时,使用using要十分小心,要保证寄存器组切换在所控制的区域内,否则会导致错误。(2)中断函数的编写包括两部分:中断源的初始化函数和中断服务函数。概括地说,中断源初始化函数就是对中断源所需要的一些变量进行设置,其形式与其他普通函数一样——一般在主函数里实现;而中断服务函数就是规定系统在发生相应的中断的时候要执行哪些操作。(3)中断函数的调用过程与一般函数调用相似,但一般函数是程序中事先安排好的;而何时调用中断函数事先无法确定,调用中断函数的过程是由硬件自动完成的。34提示(1)使用using可缩减中断服务函数的入栈操作时中断函数的类型与参数都为void类型中断函数既不能进行参数传递,也没有返回值,因此,中断函数的形式参数列表和函数类型标识符名均为void。定时器0的定义方式:voidintr_time0(void)interrupt1{}35中断函数的类型与参数都为void类型中断函数既不能进行参数传2.中断函数的编写(1)中断的初始化所谓初始化,是对将要用到的MCS-51系列单片机内部部件或扩展芯片进行初始工作状态设定。针对中断来说,就是对IE,IP进行初始化编程,实现如下要求:1)CPU开中断与关中断。2)某个中断源中断请求的允许和禁止(屏蔽)。3)各中断源优先级别的设定。4)外部中断请求的触发方式。362.中断函数的编写(1)中断的初始化36(2)中断服务函数中断服务函数就是规定系统在发生相应的中断的时候要执行哪些操作。37(2)中断服务函数中断服务函数就是规定系统在发生相应的中断的实例【实例3-4】P1.3外接一个扬声器,当与P3.3(外部中断1输入引脚)变为低电平时,扬声器发声。38实例【实例3-4】P1.3外接一个扬声器,当与P3.3(外部实例3-4#include<reg51.h>sbitp13=P1^3;voidmain(){IT0=0;EA=1;EX1=1;p13=1;while(1);}voidisr_int1()interrupt2{inti;
p13=~p13;for(i=1000;i>0;i--);}39实例3-4#include<reg51.h>39实例3-5:电平触发与跳变触发的比较#include<reg51.h>#include<stdio.h>voidserial_init();voidisr_int0();main(){serial_init();IT0=0;EA=1;EX0=1;while(1);}voidisr_int0()interrupt0{printf("Externalinterrupt0responded\n");}voidserial_init(){SCON=0X52;MOD=(TMOD&0X0F)|0X20;TH1=221;TR1=1;}40实例3-5:电平触发与跳变触发的比较#include<reg电平触发的输出情况41电平触发的输出情况41跳变触发输出情况main(){serial_init();
IT0=1;EA=1;EX0=1;while(1);}42跳变触发输出情况42案例4:蒸汽锅炉参数越限报警控制液位上、下限SL1、SL2开关取自“色带指示报警仪”,分别接P1.3,P1.2。蒸汽压力下限SP开关接P1.1。炉堂温度上限ST开关接P1.0。P1.7~P1.4输出接发光二极管,与4个参数对应,越限时则相应的LED点亮。43案例4:蒸汽锅炉参数越限报警控制液位上、下限SL1、SL2开#include<reg51.h>voidisr_int0(void);main(){IT0=0;EX0=1;EA=1;while(1){}}主函数(初始化)voidisr_int0(void)interrupt0{chartemp1;P1=0x0ff;temp1=P1;temp1=temp1<<4;P1=temp1;for(i=10;i>0;i--):}44#include<reg51.h>主函数(初始化)void3.2定时器/计数器3.2.1定时器/计数器的结构3.2.2
定时器/计数器的工作方式453.2定时器/计数器3.2.1定时器/计数器的结构43.2.1定时器/计数器的结构
可编程定时,通过对系统时钟脉冲计数而获得延时,MCS-51定时/计数器的优点:可实现定时、计数功能,有利用实时控制不占用CPU时间定时精度高,修改方便463.2.1定时器/计数器的结构可编程定时,通过对系统时1.定时/计数器的组成定时/计数器的结构框图
微处理器TH1TL1TH0TL0TCONTMOD工作方式工作方式T1T0P3.5(T1)P3.4(T0)471.定时/计数器的组成定时/计数器的结构框图微TH1TL(1)结构组成部分两个16位的二进制定时/计数器T0、T1T0/T1分别由两个8位的计数器组成,均属SFR寄存器T0由TH0、TL0构成,字节地址为8CH、8AHT1由TH1、TL1构成,字节地址为8DH、8BH;相关的控制寄存器方式寄存器TMOD控制寄存器TCON48(1)结构组成部分两个16位的二进制定时/计数器T0、定时功能
对片内机器周期进行计数,即每个机器周期产生一个计数脉冲,计数加1。实时控制、实时采样、定时控制等。振荡器÷12
加1计数器TFx申请中断TX端C/T=0C/T=1控制信号TRx(2)工作原理49定时功能振荡器÷12加1TFx申请中断TX端C/(2)工作原理计数功能
对片外从T0(P3.4)、T1(P3.5)引脚输入的外部脉冲信号进行计数,下降沿计数加1。计数频率为晶振频率的1/24。生产线上产品计数、检测电机转速等功能。振荡器÷12
加1计数器TFx申请中断TX端C/T=0C/T=1控制信号TRx50(2)工作原理计数功能振荡器÷12加1TFx申请中断T定时/计数器初值预置初值X的计数方法(设最大值为M,计数值为N,初值为X,Tcy=12÷晶振频率)定时状态:X=M-定时时间/Tcy计数状态:X=M-N要求检测到100个脉冲,发中断请求,通知CPU,选计数功能,计数初值为156设定时/计数器为8位加1计数器,要求定时每隔100
s时间,发一次中断请求(设机器周期1
s),选定时功能,计数初值为15651定时/计数器初值预置初值X的计数方法要求检测到100个脉冲,2.方式控制寄存器TMODSFR寄存器,地址89H控制T0、T1的工作方式仅可字节寻址GATEM1M0GATEM1M0T1方式控制T0方式控制522.方式控制寄存器TMODSFR寄存器,地址89HGATE定时器工作方式选择M1和M0:工作方式选择位M1M0方式说明00013位计数器(TH的高8位和TL的低5位)01116位计数器102自动重装入初值的8位计数器113定时器0:分成两个独立的8位计数器定时器1:
停止计数53定时器工作方式选择M1和M0:工作方式选择位M1M0方式功能选择与门控位C/定时/计数功能选择位。
为“0”,定时模式为“1”,计数模式GATE:门控位,定义T1/T0的启动方式,GATE=0,非门控方式(内部启动):TR0/1=1,启动定时器工作;
TR0/1=0,停止定时器工作。GATE=1,门控方式(外部启动)TR0/1=1且引脚INT0/1
=1才启动。54功能选择与门控位C/定时/计数功能选择位。543.状态控制寄存器TCONSFR寄存器,地址88H即参与定时控制又参与中断控制与定时控制相关的有4位TF1/TF0:当T1/T0的计数器计数溢出时,该位置“1”;TR1/TR0:T1/T0运行控制位。软件将其置“1”时,启动T1/T0工作TF1TR1TF0TR0IE1IT1IE0IT08FH8EH8DH8CH8BH8AH89H88H553.状态控制寄存器TCONSFR寄存器,地址88HTF1M1M0=00;作定时器:TMOD=00000000=00H作计数器:TMOD=00000100=04H13位计数器;
TH:8位
TL:低5位,高3位不用。3.2.2定时器/计数器工作方式
1.工作方式056M1M0=00;3.2.2定时器/计数器工作方式1.方式0的工作原理57方式0的工作原理57方式0的应用计数初值最大计数值为213=8192定时时间:△T=(213-T0的初值)×Tcy
计数个数:S=213-T0的初值
58方式0的应用计数初值58定时器初始化编程(1)向TMOD寄存器中写入工作方式控制字(2)向定时/计数器TH0、TL0(或TH1、TL1)装入初值(3)启动定时/计数器(置位TR0/TR1)(4)如采用中断方式,置位ET0(ET1)、EA、IP等中断寄存器59定时器初始化编程(1)向TMOD寄存器中写入工作方式控制字5实例3-6:已知单片机晶振频率6MHz,利用T0的方式0在P1.0引脚输出周期为500us的方波解:1)方波波形如图所示
2)TMOD初始化00H3)计数初值:计数初值=213-欲计数脉冲数=213-△T/Tcy
=213-250/2=1F83H=00000011B∴TH1=0xFC,TL1=0x034)TCON初始化,TR0=160实例3-6:已知单片机晶振频率6MHz,利用T0的方式0在P查询方式程序清单
#include<reg51.h>sbitp10=P1^0;main(){TMOD=0;TH0=0XFC;TL0=0X03;TR0=1;
while(1){while(TF0==0);p10=~p10;TH0=0XFC;TL0=0X03;TF0=0;}}61查询方式程序清单#incl中断方式程序清单
#include<reg51.h>sbitp10=P1^0;voidisr_t0();main(){TMOD=0;TH0=0XFC;TL0=0X03;TR0=1;EA=1;ET0=1;while(1);}voidisr_t0()interrupt1{p10=~p10;TH0=0XFC;TL0=0X03;}62中断方式程序清单#includ实例3-7单片机晶振频率12MHz,利用T0的方式0实现1s延时,每隔1s钟使P1.0引脚翻转一次。1)TMOD初始化00H2)计数初值:定时时间:tmax=8192×1us=8.192ms;取5ms1秒延时实现:5ms延时200次
T0的初值:
=213-5000μs/1s=3192=0C78H=0000110001111000B∴TH0=63H,TL0=18H63实例3-7单片机晶振频率12MHz,利用T0的方式0实现1源程序清单:#include<reg51.h>voidisr_time0(void);sbitP10=P1^0;unsignedintcounter=200;voidmain(){TMOD=0X00;TH0=0X63;TL0=0X18;TR0=1;EA=1;ET0=1;while(1);}voidisr_time0()interrupt1{counter--;if(!counter){counter=200;P10=~P10;}TH0=0X63;TL0=0X18;}64源程序清单:#include<reg51.h>voidis2.工作方式1M1M0=01作定时器:TMOD=00000000=01H作计数器:TMOD=00000100=05H16位计数器,逻辑结构框图如下:振荡器÷12TF0中断T0C/T=0C/T=1GATEINT0端TR0TH0(8位)TL0(8位)控制l&≥lEAET0&&652.工作方式1M1M0=01振荡器÷12TF0中断T0C/实例3-8利用T0的方式1完成例3-6的功能(即在P1.0引脚输出周期为500us的方波)。1)TMOD初始化01H2)计数初值:计数初值=216-欲计数脉冲数=216-△T/Tcy=216-250/2=65411=FF83H
因此TH1=0xFF,TL1=0x833)TCON初始化,TR0=14)开中断:EA=1;ET0=166实例3-8利用T0的方式1完成例3-6的功能(即在P1.源程序清单//主函数#include<reg51.h>voidisr_time0(void);sbitP10=P1^0;voidmain(){TMOD=0X01;TH0=-125>>8;TL0=-125;TR0=1;EA=1;ET0=1;while(1);}小技巧:实际应用中,在利用C51编程时,计数初值可以直接用如下方法表示:TH0=-125>>8;//取计数初值的高8位(0FFH)TL0=-125;//自动取计数初值的低8位(83H)不需要计算出具体的计数初值。但读者要清楚计算计数初值的原理。//中断服务函数voidisr_time0(void)interrupt1{P10=~P10;TH0=-125>>8;TL0=-125;}67源程序清单//主函数小技巧://中断服务函数673.工作方式2M1M0=10
作定时器:TMOD=02H
作计数器:TMOD=06H自动重置初值的8位计数器,逻辑结构如图:振荡器÷12TF0中断T0GATEINT0TR0TL0(8位)TH0(8位)控制重新装入l≥l&C/T=0C/T=1&&EAET0683.工作方式2M1M0=10振荡器÷12TF0中断T0GA案例5啤酒生产线自动装箱控制某啤酒自动生产线,每生产12瓶执行装箱操作,将生产出的啤酒自动装箱,用单片机实现该控制要求。69案例5啤酒生产线自动装箱控制某啤酒自动生产线,每生产12解:如果啤酒生产线上装有传感装置,每检测一瓶啤酒就向单片机发送一个脉冲信号,使用计数功能就可实现该控制要求。1)TMOD初始化06H2)计数初值:TH0=TL0=28-12=0F4H70解:如果啤酒生产线上装有传感装置,每检测一瓶啤酒就向单片机发程序清单#include<reg51.h>voidisr_time0(void);voidmain(){TMOD=0x06;TL0=0Xf4;TH0=0Xf4;TR0=1;ET0=1;EA=1;while(1);}voidisr_time()interrupt1{inti,time=600;P37=0;//驱动电机转动
while(time--)//假设装箱时间固定
for(i=500;i>0;i--);P37=1;//装箱结束电机停止转动}71程序清单#include<reg51.h>voidisr4.工作方式3振荡器÷12TF1T1中断TH0(8位)TR1控制T0端C/T=0C/T=1GATEINT0端TR0振荡器÷12TF0T0中断TL0(8位)控制l≥l&&&EAET0仅作定时器用!724.工作方式3振荡器÷12TF1T1中断TH0(8位)TR4.工作方式3M1M0=11T0、T1的设置和使用不同T0两个8位的计数器TL0:使用T0原有控制资源,功能与方式0、1相同。TH0:借用T1的TR1、TF1,只能对片内机器周期脉冲计数,作8位定时器。T0初值计算完全同方式2。734.工作方式3M1M0=1173T0工作方式3时T1的工作T1仍然可工作于方式0~2,C/控制位仍可使T1工作在定时器或计数器方式,由于其TR1、TF1被T0的TH0占用,因而计数溢出时只能将输出结果送至串行口,即用作串行口波特率发生器。T1工作于方式2,因定时初值能自动恢复,用作波特率发生器。因定时器1的TR1被占用,其启动和关闭比较特殊:当设置好工作方式时,T1自动开始运行。送入一个设置定时器1为方式3的方式字即可停止T1
。74T0工作方式3时T1的工作T1仍然可工作于方式0~2,C/实例3-9已知系统晶振12MHz,试用定时器0的方式3实现1s的延时(设每秒让P0.0所接的发光二极管闪烁一次)。TMOD初始化07HTH0作为定时器,定时时间250us;初值28-250=06HTL0作为计数器,计数200次;初值28-200=38H因250μs*200=50ms,则需引进一个变量,TL0计数满后该变量加1,直至20则为1s75实例3-9已知系统晶振12MHz,试用定时器0的方式3实主函数#include<reg51.h>sbitP00=P0^0;sbitP34=P3^4;unsignedcharcount;voiddelay();main(){TMOD=7;TH0=0x06;TL0=0x38;TR0=1;TR1=1;while(1){P00=~P00;delay();}}76主函数#include<reg51.h>while(1)76延时函数voiddelay(){count=0;while(count<20){while(TF0==0){while(TF1==0);P34=0;TH0=6;TF1=0;P34=1;}TL0=0x38;TF0=0;count++;}}77延时函数voiddelay()77案例6以定时方式控制简单流水
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医院服务行业客户服务部经理面试技巧
- 少先队入队活动策划方案(3篇)
- 大数据分析硬件设备销售培训手册
- 市场趋势与营销策略调整
- 媒体公司广告销售策略及安排
- 医院客服务代表面试全攻略
- 基金经理年度工作总结报告
- 网络游戏开发工程师面试全解析
- 中邮物流货物运输法规遵从指导书
- 餐饮业IT系统应用与维护面试探讨
- 幼儿园如何制定班级计划培训
- TSG07-2019锅炉安装工艺+焊接专用工艺卡+施工记录表
- 防灾减灾培训(安全行业讲座培训课件)
- 深圳大学《算法设计与分析》2022-2023学年期末试卷
- 男科话术完整版本
- 中国心力衰竭诊断和治疗指南2024解读(完整版)
- 树篦子安装合同模板
- 中华人民共和国税收征收管理法
- 《工程招投标与合同管理》全套教学课件
- 第七人民医院供应商来访接待须知
- 大学《数学史与数学教育》各章节测试题与答案
评论
0/150
提交评论