您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 第5章定时器计数器和中断系统
第五章定时器/计数器和中断系统5.1定时/计数的结构及工作原理一、定时/计数器的结构和原理1.定时/计数器的结构内部总线工作方式工作方式TH1TL1TH0TL0TCONTMODT1T0微处理器2.定时/计数器的原理控制信号振荡器÷12加1计数器TFX中断TX端C/T=0C/T=1二、定时/计数器方式寄存器TMOD表格5-1方式选择位意义M1M0工作方式功能说明00方式013位计数器01方式116位计数器10方式2自动再装入8位计数器11方式3定时器0:分成两个8位计数器定时器1:停止计数TMOD格式如下:TMODD7D6D5D4D3D2D1D0TCTCGATEM1M0GATEM1M0(98H)三、定时控制寄存器TCON定时器控制字TCON的格式如下:8FH8EH8DH8CH8BH8AH89H88HTF1TR1TF0TR0IE1IT1IE0IT0TCON88H5.2定时/计数器的工作方式一、方式0当M1M0两位为00时,定时/计数器被选为工作方式0,其逻辑结构如图5-1所示。图5-1T0(或T1)方式0结构二、方式1三、方式2图5-3T0(或T1)方式2结构四、方式35.1.3定时器初始化1.通过对方式寄存器TMOD进行设置,选择工作方式。(2)给定时器赋初值[例5.1]T0初值3CB0H,T1初值00FFH。利用字节传送指令装入初值:MOVTH0,#3CHMOVTL0,#0B0HMOVTH1,#00HMOVTL1,#0FFH(3)启动定时器[例5.2]SETBTR0;启动T0SETBTR1;启动T1设定时器T1为方式1,初值3CB0H,若未用中断,初始化程序下:MOVTMOD,#10HMOVTH1,#3CHMOVTL1,#0B0HSETBTR12.定时器初值设定方法(1)根据时间长短,选择工作方式设用M表示最大计数值,则各种方式计数最大值如下:方式0M=213=8192方式1M=216=65536方式2M=28=256方式3M=28=256原则上,定时时间长选用16位或13位计数器,即方式0或方式1。若时间短选8位计数器即方式2和方式3,如果需要自动装入初值,只能选择方式2。(2)定时初值计算设初值为X,最大计数值为M。初值X与机器周期TM、定时时间T的关系如下:(M-X)TM=T其中,TM=12个时钟周期=12/fosc,X=M-T/TM[例5.3]采用定时器T1,方式1,定时50ms,计算定时初值。已知晶振频率fosc=12MHZ解:fosc=12MHZTM=1μs定时方式1时M=216=65536所以X=M-T/TM=65536-50000/1=15536=3CB0H5.1.4应用程序设计[例5.4]编写用定时器延时50ms的子程序。MOVTMOD,#01HMOVTH0,#3CHMOVTL0,#0B0HSETBTR0LP:JBCTF0LP1SJMPLPLP1:MOVTH0,#3CHMOVTL0,#0B0HSJMPLP5.2中断系统5.2.1输入/输出传送方式1.无条件传送方式采用这种传送方式不需要交换状态信息,只需在程序中加入访问外设的指令,数据传送便可以实现。2.查询传送方式3.直接存储器存取(DMA)方式CPU让出数据总线(悬浮状态),使外部设备和存储器之间直接传送。下面两种情况时可考虑使用DMA方式:(1)外设和存储器直接有大量的数据需要传送.(2)外部设备的工作速度很快的情况4.中断传送方式5.2.28051中断系统结构一、中断源及中断入口中断源入口地址外部中断00003H定时器T0中断000BH外部中断10013H定时器T1中断001BH串行口中断0023H二、外部中断请求标志2.SCON的中断标志1.TCON中的中断标志TCON8FH8DH8BH8AH89H88HSCON99H98HTIRI(98H)TF1TF0IE1IT1IE0IT0(88H)三、中断允许控制IEAFHACHABHAAHA9HA8H(A8H)EAESET1EX1ET0EX0[例5.5]假设允许外部中断0中断,禁止其它中断。试设置IE的相应值。解:(a)用字节操作指令MOVIE,#81H(b)用位操作指令SETBEASETBEX0四、中断源优先级的设定BCHBBHBAHB9HB8HPSPT1PX1PT0PX0(B8H)IP若同时收到几个同一优先级的中断请求时,相应哪一个中断源优先取决于内部硬件查询顺序中断源同级内的中断优先级外部中断0定时器/计数器0溢出中断最高外部中断1定时器/计数器1溢出中断串行中断最低五、中断响应处理过程1.中断响应条件2.中断响应的过程3.中断处理4.中断返回5.外部中断响应时间(1)中断响应过程关中断保护现场开中断中断返回恢复现场关中断中断处理开中断(2)中断应用程序设计举例例1使用定时器T0定时,每隔10s使与P1.0口连接的发光二极管闪烁10次。设P1.0高电平亮,反之灯灭。分析:置循环次数等待中断T0初始值闪烁常数启动T0开中断图5-9主程序框图重装常数中断返回灯闪10s?10次?NYYN图5-10中断程序框图程序如下:;主程序ORG0000HLJMPMAINORG000BHLJMPINTORG0100HMAIN:MOVR0,#200MOVTMOD,#01HMOVTH0,#3CHMOVTL0,#0B0HMOVR1,#10SETBEASETBET0SETBTR0LP:SJMPLP;中断子程序INT:MOVTH0,#3CHMOVTL0,#0B0HDJNZR0,DDDDL:SETBP1.0LCALLDELAYCLRP1.0LCALLDELAYDJNZR1,DDLDD:RETIDELAY:MOVR5,#0FFHLL2:MOVR6,#0FFHLL1:NOPDJNZR6,LL1DJNZR5,LL2RET例2图5-11为多个故障显示电路,当系统无故障时,4个故障源输入端x1一x4全为低电平,显示灯全灭,当某部分出现故障,其对应的输入由低电平变为高电平,从而引起8051单片机中断,中断服务程序的任务是判定故障源,并用对应的发光二极管LED1—LED4进行显示。编程如下:ORG0000HSJMPMAINORG0003HSJMPINTMAIN:ORLP1,#0FFHSETBIT0SETBEX0SETBEALL:AJMPLLINT:JNBP1.3,L1CLRP1.4LCALLDELAYL1:JNBP1.2,L2CLRP1.5LCALLDELAYL2:JNBP1.1,L3CLRP1.6LCALLDELAYL3:JNBP1.0,L4CLRP1.7LCALLDELAYL4:RETIDELAY:…六扩充外部中断源1.利用定时器进行扩充8051INT0INT1P1.3P1.2P1.1P1.0XI0XI1XI2XI3XI4R5.1KVCC图5.11多外部中断源连接方法2、采用中断和查询相结合的方法扩充外部中断源EXINT:PUSHPSWPUSHACCJBP10,SAV1JBP11,SAV2JBP12,SAV3JBP13,SAV4DISUB:POPACCPOPPSWRETISAV1:…;XI1中断服务程序AJMPDISUBSAV2:…;XI2中断服务程序AJMPDISUBSAV3:…;XI3中断服务程序AJMPDISUBSAV4:…;XI1中断服务程序AJMPDISUB
本文标题:第5章定时器计数器和中断系统
链接地址:https://www.777doc.com/doc-6242385 .html