1、单片机中级教程 原理与应用1定时的实现方式:1.软件定时;2.不可编程硬件定时;3.可编程定时。单片机中级教程 原理与应用2 定时/计数器的核心部件是二进制加1计数器(TH0、TL0或TH1、TL1)。1.定时功能计数脉冲信号是内部时钟脉冲,每个机器周期使寄存器的值加1。所以,计数频率是振荡频率的1/12。2.计数功能计数脉冲来自相应的外部输入引脚,T0为P3.4,T1为P3.5。需要2个机器周期。在TMOD中,各有一个控制位(),分别用于控制定时/计数器T0和T1是工作在定时器方式还是计数器方式。/C T单片机中级教程 原理与应用3与定时器计数器有关的控制寄存器有:中断请求标志外部中断触发方
2、式选择启动定时/计数器0 低电平1 下降沿0 停止1 启动定时溢出标志 单片机中级教程 原理与应用4 T1控制T0控制门控位C/T计数/定时选择M1 M0工作方式选择单片机中级教程 原理与应用5 共有四种工作方式(1)方式013位方式TF0T0TR0GATEINT0振荡器1/12C/T=011&C/T=1TL0 TH08位低5位13位计数器定时器计数器申请中断AB计数脉冲输入单片机中级教程 原理与应用6(2)方式116位方式 振荡器1/1211&T0TR0GATEINT0C/T=0C/T=1TL0 TH0TF08位8位16位计数器申请中断单片机中级教程 原理与应用7(3)方式28位可自动重装入
3、时间常数方式 振荡器1/1211&T0TR0GATEINT0C/T=0C/T=1TF0TL0 TH08位计数器申请中断单片机中级教程 原理与应用8(4)方式3T0为2个8位方式,T1工作方式为0、1、2振荡器1/1211&T0TR0GATEINT0C/T=0C/T=1TL0TF08位计数/定时器振荡器1/12TR1TH0TF18位定时器申请中断申请中断工作方式:8位计数/定时工作方式:8位定时单片机中级教程 原理与应用9振荡器1/12T1C/T=0C/T=113或16位计数器串行口振荡器1/12T1C/T=0C/T=1TL1 TH18位计数器串行口TL1 TH1T1方式0,1T1方式2串行口得
4、到的波特率是固定的!串行口得到的波特率可编程的!单片机中级教程 原理与应用10 计算计数器的计数初值:编程时将计数初值送 THi、TLi;可编程器件在使用前需要进行初始化:确定TMOD控制字:编程时将控制字送TMOD;开中断(如果使用中断方式):编程时置位EA、ETi;TRi位置位控制定时器的启动和停止。TMODTCON单片机中级教程 原理与应用11例题1:设晶振频率fOSC=6MHz,使用定时器/计数器T0以方式0产生周期为2ms的方波脉冲,并由P1.0输出。试以中断方式实现。8051P1.0P1.02ms单片机中级教程 原理与应用12 TMOD确定控制字00H 要产生2ms的方波脉冲,只需
5、在P1.0端以1ms为间隔,交替输出高低电平即可实现。为此,定时间应为1ms。使用6z晶振,则一个机器周期为2us,设待求计数初值为,则:计算计数器的计数初值;T1控制T0控制单片机中级教程 原理与应用13100010-6=(213-X)210-6 即 500=213-X X=213-500=2000H-1F4H =1E0CH=11110000 01100B所以,初值为:TH0=0F0H,TL0=0CH12(2)(2)LLCOSCtXtXf111(2)(2)12OSCLLCftXtX溢出率单片机中级教程 原理与应用14程序设计ORG0000HLJMP MAIN ;主程序入口 ORG000BHL
6、JMP INTT0 ;T0中断入口 采用中断方式:编程时打开全局和局部中断。由定时器控制寄存器TCON中的TR0位控制定时 器的启动和停止。TR01,启动;TR00,停止。单片机中级教程 原理与应用15INTT0:MOVTH0,#0F0H;重新设置初值MOVTL0,#0CHCPLP1.0;输出取反RETIORG0030HMAIN:MOVTMOD,#00H;T0为方式0MOVTH0,#0F0H;初值MOVTL0,#0CH SETB TR0;启动T0 SETB ET0;允许T0中断SETB EA;允许中断SJMP$;等待中断主程序:中断处理程序:单片机中级教程 原理与应用16例题2:设晶振频率fO
7、SC=6MHz,使用定时器/计数器T1以方式1产生周期为2ms的方波脉冲,并由P1.0输出。试以中断方式实现。8051P1.0P1.02ms单片机中级教程 原理与应用17 TMOD确定控制字10H 要产生2ms 的方波脉冲,只需在P1.0端以1ms为间隔,交替输出高低电平即可实现。为此,定时间应为1ms。使用6z晶振,则一个机器周期为2us,设待求计数初值为,则:计算计数器的计数初值;T1控制T0控制单片机中级教程 原理与应用18100010-6=(216-X)210-6 即 500=216-X X=216-500=10000H-1F4H =0FE0CH=11111110 00001100B所
8、以,初值为:TH1=0FEH,TL1=0CH12(2)(2)LLCOSCtXtXf单片机中级教程 原理与应用19程序设计ORG 0000HLJMP MAIN ;主程序入口 ORG 001BHLJMP INTT1 ;T1中断入口 采用中断方式:编程时打开全局和局部中断。由定时器控制寄存器TCON中的TR1位控制定时 器的启动和停止。TR11,启动;TR10,停止。单片机中级教程 原理与应用20INTT1:MOVTH1,#0FEH;重新设置初值MOVTL1,#0CHCPLP1.0;输出取反RETIORG 0030HMAIN:MOVTMOD,#10H;T1为方式1MOVTH1,#0FEH;初值MOV
9、TL1,#0CH SETB TR1;启动T1 SETB ET1;允许T1中断SETB EA;允许中断SJMP$;等待中断主程序:中断处理程序:单片机中级教程 原理与应用21例题3:设晶振频率fOSC=6MHz,使用定时器/计数器测定如图所示波形的一个周期长度。1外部计数脉冲INT0(P3.2)(P3.5)T1INT0一个周期启动定时器T1计数器计数单片机中级教程 原理与应用22例题4:设单片机的,要求在脚上输出周期为的方波。周期为的方波要求定时间隔为1ms,每次定时时间到,则P1.0取反。由于fosc=12MHz,机器周期为12/fosc=1us。1ms1000us,即为1000个机器周期。用
10、定时器T0的方式1编程,采用查询方式。单片机中级教程 原理与应用23单片机中级教程 原理与应用24 用定时器T0的方式1编程,采用中断方式。单片机中级教程 原理与应用25单片机中级教程 原理与应用26 扩展的外部中断请求信号接计数脉冲输入端(T0 或T1);TH和TL均置为FFH;置定时计数器为工作方式,即自动加载式 位计数,以便在一次中断响应后,自动为下一次 中断作准备;在计数方式下,如果把计数器预置为全1,则只要在计数输入端(T0或T1输入端)加一脉冲就可以使计数器溢出,产生溢出中断。这就是定时计数器实现外部中断扩展的思想。具体方法是:单片机中级教程 原理与应用27例:以T0 实现一个外部中断扩展。则初始化程序为:MOVTMOD,#06H;00000110 MOVTH0,#0FFH MOVTL0,#0FFH SETBEA;开全局中断 SETBET0;开T0中断 SETBTR0;准备计数将中断子程序放在T0中断入口处(000BH)。T0计数器方式T0方式2 把扩展的外中断服务程序存放在所占用的定时 计数器中断入口地址处(000BH或001BH)。