已知8051单片机的fosc=12MHz,用T1 定时,试编程由P1.2 和P1.3 引脚分别输出周期为2ms 和500μs 的方波

如题所述

第1个回答  2022-11-16

定时器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毫秒的定时。

参考资料来源:《单片机原理及应用》 曹巧媛 编著 电子工业出版社   第四章 单片机定时功能及应用  第一节 定时器/计数器的结构与工作原理   第二节  定时计数器的操作模式及应用  第三节 定时器综合应用举例

参考资料来源:百度百科--定时器中断