已知8051单片机的fosc=12MHz,用T1 定时,试编程由P1.2 和P1.3 引脚分别输出周期为2ms 和500μs 的方波
定时器T1定时250μs,工作方式设置为方式2,用TL1作为8位定时器,产生250μs的定时,定时初值X为:X=2^8-(12* 10^6* 250 * 10^(-6))/12=6
TH1=TL1=6H,TMOD=20H
源代码如下:
MOV TMOD,#20H
MOV TH1,#06H
MOV TL1,#06H
SETB TR1
DS1_RPTA:
MOV R2,#04H
DS1_RPTB:
JNB TF1,$
CLR TF1
CPL P1.3
DJNZ R2,DS1_RPTB
CPL P1.2
LJMP DS1_RPTA
51单片机中有两个定时器T0和T1,分别是由两个8位的专用寄存器组成,即定时/计数器T0由TH0和TL0组成,T1由TH1和TL1组成。单片机中的定时器溢出时申请的中断,达到计时或计数的目的。并使用定时控制寄存器控制它。其中的:
TF1:定时器1溢出标志。定时/计数器溢出时由硬件置位。中断处理时由硬件清除。或用软件清除。
TF0:定时器0溢出标志。定时/计数器溢出时由硬件置位。中断处理时由硬件清除,或用软件清除。
扩展资料
定时器工作的流程:
以51为例用定时器0方式一产生50毫秒的定时:
1、确定使用哪个定时器,使用哪种方式,通过TMOD设置,TMOD的低四位是设置定时器0的,高四位是用来设置定时器1的,其中的M0,M1是用来设置定时器工作在哪种方式,GATE一般用不要设置,C/T是选择计数模式还是定时模式的,如:TMOD = 0X01,就说明定时器0工作在方式1。
2、设置定时的时间,用定时器定时,如:50毫秒,可以用这种方式TH0 = (65535 - 50000) / 256,TL0 = (65535 - 50000) % 256;可以这样理解:因为这是定时器的初值,也就是说计数脉冲就是在这个数的基础上向上递增,到达65535后就溢出产生中断。
3、打开中断,使用IE寄存器,首先打开总中断EA = 1,这一步是所有中断所必须的,然后打开定时器0中断,ET0 =1。
4、这时准备工作结束,启动定时器,使用TCON寄存器,TR0 = 1,实现了一个50毫秒的定时。
参考资料来源:《单片机原理及应用》 曹巧媛 编著 电子工业出版社 第四章 单片机定时功能及应用 第一节 定时器/计数器的结构与工作原理 第二节 定时计数器的操作模式及应用 第三节 定时器综合应用举例
参考资料来源:百度百科--定时器中断