文档详情

第6章80C51的中断系统及定时计数器单片机原理及应用(C51编程)-李全利-高教出版社.ppt

发布:2024-05-03约7.37千字共45页下载文档
文本预览下载声明

波特率发生器方式可编程时钟输出方式**定时应用定时时间较小时(小于70ms)。晶振为11.0592MHz时,Tcy为1.085μS。可直接采用方式1完成定时任务。【例6-4】利用定时/计数器T0的方式1,产生10ms的定时,并使P2.7引脚上输出周期为20ms的方波,采用中断方式,设系统的晶振频率为11.0592MHz。确定方式字:T0在定时的方式1时:M1M0=01,GATE=0,C/T=0方式控制字为01H求计数初值X:Tcy为1.085μSN=10ms/1.085μS=9216X=65536-9216=DC00H应将DC送TH0,00H送TL0**voidmain(void){TMOD=0x01;TL0=0xDC;TH0=0x00;IE=0x82;TR0=1;while(1); }主程序中断服务程序voidT0Isr()interrupt1{P27=~P27;TL0=0xDC;TH0=0x00;}**定时时间较大时(大于70ms)。实现方法:一是采用1个定时器定时一定的间隔(如20ms),然后用软件进行计数;二是采用2个定时器级联,其中一个定时器用来产生周期信号(如20ms为周期),然后将该信号送入另一个计数器的外部脉冲输入端进行脉冲计数。【例6-5】编写程序,实现用定时/计数器T0定时,使P2.7引脚输出周期为1s的方波。设系统的晶振频率为11.0592MHz。确定方式字:T0在定时的方式1时:M1M0=01,GATE=0,C/T=0方式控制字为01H求计数初值X:Tcy为1μSN=20ms/12/11.0592=18432X=65536-18432=B800H应将B8送TH0,00H送TL0采用定时20ms,然后再计数25次的方法实现**voidmain(void){TMOD=0x01; TL0=0x00;TH0=0xB8;IE=0x82;TR0=1;while(1); }voidT0Isr()interrupt1{staticucharCounter;Counter++;if(Counter==25){P27=~P27;Counter=0; } TL0=0x00;TH0=0xB8;}主程序中断服务程序**门控位的应用【例6-6】测量INT0引脚上出现的正脉冲宽度,并将结果(以机器周期的形式)存放在30H和31H两个单元中。将T0设置为方式1的定时方式,且GATE=1,计数器初值为0,将TR0置1。INT0引脚上出现高电平时,加1计数器开始对机器周期计数。INT0引脚上信号变为低电平时,停止计数然后读出TH0、TL0的值单定时器产生多定时间隔(略)**while(1){TMOD=0x09;TL0=0;TH0=0;while(P32);TR0=1;while(!P32);while(P32);TR0=0;Low=TL0;High=TH0;} 主程序(部分)6.480C52的定时/计数器T2T2矢量地址002BH;T2还增加了16位自动重装、捕获及加减计数方式;1.0为计数输入(T2),还可输出脉冲;P1.1(EXT2)有捕获/重装方式触发和检测功能。6.4.1T2的相关控制寄存器工作方式寄存器T2MOD76543210T2MODT2OEDCEN字节地址:C9HT2OE:输出允许位。为1时,允许定时时钟从P1.0输出。DCEN:计数方向控制使能位。为1时,计数方向与P1.1有关,P1.1为1时,为减计数,P1.1为0时,为加计数。控制寄存器T2CONTF2:溢出标志位。不自动清0(与TF0和TF1不同)。EXF2:T2外部中断标志位。在捕捉和自动重装方式下,当EXEN2=1时,在T2EX引脚发生负跳变会使EXF2置位(软件清0)。RCLK:串行口接收时钟选择。TCLK:串行口发送时钟选择。EXEN2:外部触发使能位。TR2:T2的运行控制位。C/T2:T2的定时或计数功能选择位。CP/RL2:捕捉或重装选择位。6.4.2T2的工作方式捕捉方式EXEN2=1时,捕捉方式。在引脚T2EX(P1.1)发生有效负跳变时,会把TH2和TL2的内容锁入捕捉寄存器RCAP2H和RCAP2L中。并使EXF2置位,向CPU申

显示全部
相似文档