求大神们。那个定时器初始化子程序中的RCAP2H与RCAP2L表示什么啊,还有他们后面的等式是什么意思啊定时

求大神们。那个定时器初始化子程序中的RCAP2H与RCAP2L表示什么啊,还有他们后面的等式是什么意思啊定时,第1张

RCAP2H和RCAP2L是定时器2的16位捕捉/自动重载寄存器

这个百科会对你特别有帮助

>

本题技术初值计算如下:

X=2^16-2010^(-3)/(12/1210^6)

 =65536-20000=45536=B1E0H

T1INTCOUNT DATA 30H;中断次数累加

ORG 0000H

    LJMP START

    ORG 001BH

    LJMP Timer1Interrupt

START:

    MOV SP,#60H

    LCALL InitTimer1

    MOV T1INTCOUNT,#0;

LOOP:

     LJMP LOOP

InitTimer1:

   MOV TMOD,#10H;控制字

    MOV TH1,#0B1H;初值高位

    MOV TL1,#0E0H;初值低位

    SETB EA

    SETB ET1

    SETB TR1

    RET

Timer1Interrupt:

    PUSH DPH

    PUSH DPL

    PUSH ACC

    MOV TH1,#0B1H

    MOV TL1,#0E0H

    INC T1INTCOUNT

    MOV A,T1INTCOUNT 

    CJNE A,#5, Timer1Interrupt_EXIT

    MOV T1INTCOUNT,#0

    CPL P17;在P17脚上输出周期为02秒的方波(高低电平各100ms)

Timer1Interrupt_EXIT:    

    POP ACC

    POP DPL

    POP DPH

    RETI

END

楼上用的是查询法,我来个中断函数的 呵呵

#include<reg52h>

sbit a0=P1^1;//端口定义

int count=0;//计时变量初始化

/T1中断服务函数/

void T0Int() interrupt 3 using 0 //

{

count++;//200us 加一次

if(count==100)//一百次之后,取反输出端口

{

count=0;//清零计数值

a0=~a0;//端口取反

}

}

void main()

{

TMOD=0X02; //设置T0工作方式与为方式2

TH0=256-200; //设置高位重装的初值

TL0=256-200; //设置低位计数值

TR1=1; //启动定时器0

ET1=1;

EA=1; //开总中断

while(1);//等待中断

}

init()

{

TMOD=0x10;

TH1=(65536-10000)/256;

TL1=(65536-10000)%256;

TR1=1;

ET1=1;

EA=1;

}

51 单片机中定时器,是个 16 位的加法计数器。

其内容是 0000H ~ FFFFH,即:0 ~ 65535。

每隔一个机器周期,加一次一。加到 65536,就会溢出,产生中断。

在外部振荡器频率 = 110592 MHz 时,机器周期=108506944us。

要想定时 1000us,这就有点困难了。

在外部振荡器频率 = 12 MHz 时,机器周期=1us。

要想定时 1000us,就可以设初始值为:65536 - 1000 = 64536。

分成高、低八位后,写入 THx、TLx,即可。

求出:初始值、分成高低八位,可以人工计算,那么,程序就是:

TH1 = 0XFC;

TL0 = 0X67;

也可以由编译软件来算,程序中,写出公式,这就是:

TH0 = (65535 - 1000)/256;

TL0 = (65535 - 1000)%256;

-------

又因为,中断响应,是不会及时发生的,通常,都会迟到 3 ~ 8 个机器周期。

用 C 语言编程,会耽误更多吧。

所以,定时时间,应该缩短一些,定时才准确。

因此,才有+ 28 的算法。

加上这个数之后,初始值,就大了一些,更接近 65536,定时时间,就短了。

这是个经验数据。

以上就是关于求大神们。那个定时器初始化子程序中的RCAP2H与RCAP2L表示什么啊,还有他们后面的等式是什么意思啊定时全部的内容,包括:求大神们。那个定时器初始化子程序中的RCAP2H与RCAP2L表示什么啊,还有他们后面的等式是什么意思啊定时、假设单片机的晶体振荡器的频率是12MHz,利用定时器1采用方式1定时20ms,计算出初值并写出整个、设89C52单片机Fosc=12MHz。试编写一段程序,对定时器T1初始化,使之工作在模式2,产生200us定时,等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9270875.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存