定时器及应用.ppt
文本预览下载声明
定时器及应用 定时/计数器的基本结构如图所示 : 例1、设单片机晶振频率为6MHZ,使用定时器1以方式0产生周期为500us的等宽正方波连续脉冲,并由P1.0输出,以查询方式完成。 解:1、计算计数初值 要产生500us的等宽正方波脉冲,只需在P1.0端以250us为周期交替输出高低电平即可实现,为此定时时间为250us。使用6MHZ晶振,则一个机器周期为2us,方式0为13位计数结构,设初值为X,则: (213-X)*12*1/6 =250 得:X=8067,二进制数表示为 00011,十六进制表示为,高8位为:0FCH,低5位为:03H。其中高8位装入TH1,即TH1 = 0FCH,低5位装入TL1, 即TL1 = 03H。 2、TMOD寄存器初始化 为把定时器/计数器设定为方式0,则M1M0= 00 ;为实现定时功能,应使C/T=0;为实现定时器/计数器1的运行控制,则GATE =0。定时器/计数器T0不用,有关位设定为0,因此TMOD寄存器初始化为00H。 3、由定时器控制器TCON中的TR1位控制定时的启动和停止,TR1=1启动 ,TR1=0停止。 4、使用查询就禁止中断 IE=00H 5、程序设计: MOV TMOD ,#00H ; 设置T1为工作方式0 MOV TH1 ,#0FCH ;设置计数初值 MOV TL1,#03H MOV IE ,#00H ;禁止中断 SETB TR1 ;启动定时 LOOP: JBC TF1,LOOP1 ;查询计数溢出 AJMP LOOP LOOP1:MOV TH1,#0FCH ;重新设置计数初值 MOV TL1,#03H CPL P1.0 ;输出取反 AJMP LOOP ;重复循环 例3、使用定时器0以工作方式2产生100us定时,在P1.0输出周期为200us的连续方波脉冲,已知晶振频率fosc=6MHZ。 解: 1、计算计数初值 6MHZ晶振下,一个机器周期为2us,以TH0作重装载的预置寄存器,TL0作8位计数器,则: (28-X)*12*1/6=100 ,得X=206=0CEH 把0CEH分别装入TH0和TL0中。 2、TMOD初始化 为把定时器/计数器设定为方式2,则M1M0=10;为实现定时功能,应使C/T=0;为实现定时器/计数器0的运行控制,则GATE=0。定时器/计数器T1不用,有关位设定为0,因此TMOD寄存器初始化为0000 0010,即:02H 3、由定时器控制器TCON中的TR0位控制定时的启动和停止,TR0=1启动 ,TR0=0停止。 4、使用中断方式,应开中断 EA 位和ET0位置“1” 5、程序设计(查询方式) MOV TMOD ,#02H ; 设置T0为工作方式2 MOV TH0 ,#0CEH ;设置计数初值 MOV TL0,#0CEH MOV IE ,#00H ;禁止中断 SETB TR0 ;启动定时 LOOP: JBC TF0,LOOP1 ;查询计数溢出 AJMP LOOP LOOP1:CPL P1.0 ;输出取反 AJMP LOOP ;重复循环 5、程序设计(中断方式) MOV TMOD ,#02H ; 设置T0为工作方式2 MOV TH0 ,#0CEH ;设置计数初值 MOV TL0,#0CEH SETB EA ;开中断 SETB ET0 ; 定时器1允许中断 LOOP: SETB T
显示全部