单片机精确延时计算和中断定时
单片机 延时 计算

单片机延时计算单片机是一种集成电路,具有微处理器、存储器和输入输出接口等功能。
在单片机的应用中,延时计算是一项重要的操作。
延时计算指的是在程序中通过控制单片机的时钟信号来实现一定的时间延迟。
延时计算常用于控制设备的时间间隔、时序控制等方面。
在单片机中,延时计算可以通过软件延时和硬件延时两种方式实现。
软件延时是通过在程序中循环执行一定的指令次数来实现延时,而硬件延时是通过控制单片机的时钟频率来实现延时。
软件延时是一种简单常用的延时计算方法。
在软件延时中,我们可以使用循环来实现延时。
通过控制循环次数,可以实现不同的延时时间。
例如,我们可以使用一个循环来延时1毫秒,使用多个循环来延时更长的时间。
软件延时的精度相对较低,受到单片机的工作频率、指令执行速度等因素的影响。
硬件延时是一种更精确的延时计算方法。
在硬件延时中,我们可以通过改变单片机的时钟频率来控制延时时间。
通过控制时钟频率,可以实现微秒级别的延时。
硬件延时的精度相对较高,但需要对单片机的时钟系统进行配置和调整。
延时计算在单片机的应用中非常重要。
在控制设备的时间间隔方面,延时计算可以实现设备的周期性工作。
例如,可以通过延时计算来控制LED灯的闪烁频率,实现呼吸灯效果。
在时序控制方面,延时计算可以实现不同操作之间的时间间隔。
例如,可以通过延时计算来控制舵机的旋转角度和速度。
延时计算的实现方法有很多种,可以根据具体需求选择合适的方法。
在选择延时计算方法时,需要考虑延时的精度、可靠性和资源占用等因素。
同时,还需要根据单片机的工作频率和指令执行速度等参数进行调整和优化。
延时计算在单片机的应用中起着重要的作用。
通过延时计算,可以实现对设备的精确控制和时序管理。
延时计算的方法和技巧也是单片机程序设计中的重要内容之一。
通过深入了解和研究延时计算,可以提高单片机程序的可靠性和性能。
希望通过本文的介绍,读者对延时计算有更深入的了解和认识。
PIC单片机的定时器精准计时的计算

PIC 单片机的定时器精准计时的计算关于PIC 单片机的定时器精准计时的计算
在此用了16C711 单片机的TMR0 做定时中断,希望实现精准计时,在程
序中,TMR0 用了晶振的32 分频,初值#0FCH,因此POPBEAR 兄弟计算出
每个定时中断的计时时间为(256-X)*32*4/32768=0.015625 秒。
注意,问题就
在这里!实际上这个时间是TMR0 的初值被置入后两个指令周期后(见PIC 单
片机定时器/计数器资料)到下一次中断发生时的时间。
如果要用到定时器的精准定时,必须理解这一概念!
如采用32768Hz 的晶振,每个指令周期为122us,在中断处理程序中,到TMR0 的初值被置入,共有7 条指令,加上TMR0 的初值被置入后两个指令
周期,如果中断处理程序不直接放在0004H 地址而采用GOTO 指令的两个周期,一共为11 个指令周期。
也就是说,每个定时中断发生的间隔为0.015625 秒+11*122us。
程序中64 次中断为1 秒,那幺1 秒误差为
64*11*122us=85.9375ms,1 分钟的误差为5.156s。
那幺怎样得到精准计时呢?这就要在对定时器的初值赋值上和中断处理程序中做文章。
关于如何产生一个大致比较精准的时间中断
使用TMR0 的时候,如果仅TMR0 一个中断,显然,使用。
51 单片机 定时器 延时1s函数

51 单片机定时器延时1s函数1.引言1.1 概述本文介绍了51单片机中的定时器功能以及如何通过定时器实现延时1秒的函数。
在单片机应用中,定时器是一种非常重要且常用的功能模块之一。
它能够精确计时,并可用于实现周期性的任务触发、计时、脉冲输出等功能。
本文首先将对51单片机进行简要介绍,包括其基本概念、结构和特点。
随后,重点讲解了定时器的基本原理和功能。
定时器通常由一个计数器和一组控制寄存器组成,通过预设计数器的初值和控制寄存器的配置来实现不同的计时功能。
接着,本文详细介绍了如何通过编程实现一个延时1秒的函数。
延时函数是单片机开发中常用的功能,通过定时器的计时功能可以实现精确的延时控制。
本文将以C语言为例,介绍延时函数的编写步骤和原理,并给出示例代码和详细的说明。
最后,本文对所述内容进行了总结,并展望了定时器在单片机应用中的广泛应用前景。
通过学习定时器的相关知识和掌握延时函数的编写方法,我们可以更好地应用定时器功能,提高单片机应用的效率和精确性。
综上所述,通过本文的学习,读者可全面了解51单片机中定时器的功能和应用,并能够掌握延时函数的编写方法,为单片机应用开发提供一定的参考和指导。
1.2 文章结构本文以51单片机定时器功能为主题,旨在介绍如何使用定时器进行延时操作。
文章分为引言、正文和结论三个主要部分。
在引言部分,首先会对文章的背景进行概述,介绍单片机的基本概念和应用领域。
然后,给出本文的整体结构,并阐述文章的目的和意义。
正文部分将分为两个小节。
在2.1节中,将对单片机进行详细介绍,包括其构造与工作原理。
这部分的内容将帮助读者全面了解单片机的基本知识,为后续的定时器功能介绍打下基础。
2.2节将重点介绍定时器的功能和特点。
这部分将涵盖定时器的基本原理、工作模式以及在实际应用中的使用方法。
同时,还将详细讲解如何使用定时器进行1秒钟的延时操作,包括具体的代码实现和注意事项。
结论部分将对全文进行总结,并强调定时器的重要性和应用前景。
单片机编写延时函数的简单方法

单片机编写延时函数的简单方法单片机编程中,延时函数是很常用的一种函数。
它用于在程序的执行过程中,暂停一段时间,以实现一些需要时间控制的功能,比如LED灯的闪烁、舵机运动等。
在单片机编写延时函数时,一般有以下几种常见的方法:1. 使用定时器(Timer):定时器是单片机内部的一个功能模块,可以按照设定的时间间隔触发中断或产生脉冲,通过编写中断服务程序来实现延时。
具体步骤如下:-初始化定时器,设置计时器的工作模式、预分频系数等。
-设置计时器的计数值或比较值,根据这个值来确定延时的时间。
-等待定时器中断发生,即延时结束。
使用定时器编写延时函数的优点是精度高,可以实现较长的延时时间。
但是相应地,也需要花费较多的代码来配置和控制定时器的工作。
2.使用循环延时:循环延时是单片机编程中最容易理解和实现的一种延时方法。
通过循环执行一段代码,直到达到预期的延时时间。
具体步骤如下:-计算循环次数,根据CPU的主频和需要延时的时间来确定循环次数。
-进入循环,执行空操作,多次循环达到延时效果。
使用循环延时的优点是简单易用,只需要几行代码就可以实现。
缺点是精度较低,受到CPU主频和其他程序的影响。
3.使用外部晶振:外部晶振是单片机工作的主时钟,也可以用来实现延时操作。
-初始化外部晶振,设置晶振的频率和倍频系数等。
-使用定时器或其他方法,根据晶振频率计算延时时间。
-等待延时结束。
使用外部晶振进行延时的优点是精度较高,可以根据实际的晶振频率来计算延时时间。
缺点是需要额外的硬件电路来连接外部晶振。
以上是几种常见的单片机编写延时函数的方法,相应的选择取决于具体的应用场景和需求。
在实际编写中,可以根据需要进行选择和结合使用,以达到最优的延时效果。
单片机定时器的使用方法

单片机定时器的使用方法在嵌入式系统的开发中,定时器是一种非常重要且常用的功能模块,它能够为我们提供时间计数和计时的功能,对于许多实时应用来说,定时器更是必不可少的。
本文将介绍单片机定时器的使用方法,帮助读者更好地掌握该功能。
一、概述定时器是单片机中的一个计数器,它能够按照一定的时钟源频率进行计时。
单片机中的定时器一般包括一个或多个计数寄存器以及相关的控制寄存器。
通过设置不同的参数,我们可以实现不同的定时功能。
二、定时器的基本操作流程1. 初始化:在使用定时器之前,首先需要对定时器进行初始化设置。
这包括选择时钟源、设置定时器的工作模式、设置计数器初值等。
具体的初始化步骤和寄存器配置会根据不同的单片机型号而有所不同,因此在使用前需要查阅相关的芯片手册。
2. 启动定时器:初始化完成后,我们需要将定时器启动,开始执行计时功能。
启动定时器的方式也会因芯片而异,有的需要设置特定的控制位,有的则是通过特定的命令来启动。
3. 定时中断处理:在定时器工作期间,当计数器的值达到设定的阈值时,定时器会触发中断。
这个中断可以用于执行用户自定义的操作,比如数据处理、状态更新等。
在中断服务程序中,我们需要进行相应的处理,并清除中断标志位,以确保下一次定时正常触发。
4. 停止定时器:当我们不再需要定时器时,可以通过相应的操作将其停止。
这样可以节省系统资源和功耗。
三、定时器的常见应用单片机的定时器功能非常灵活,可以应用于各种实际场景。
以下是一些常见的应用示例:1. 延时函数:通过定时器可以实现精确的延时功能,比如延时100毫秒后再执行某个操作。
这对于需要进行时间控制的任务非常有用。
2. 脉冲宽度调制(PWM):定时器可以通过设置不同的计数值和占空比,生成不同周期和占空比的脉冲信号。
这在控制电机、调光、音频发生器等场景中非常常见。
3. 计时功能:定时器可以用于实现计时功能,比如计算程序执行时间、测量信号的周期等。
这在需要精确时间测量的场景中非常有用。
C51单片机的几种常用延时程序设计2024

引言概述:C51单片机是一种广泛应用于嵌入式系统中的微控制器,它具有高度集成化、易于编程和灵活性强等特点。
在C51单片机的软件开发过程中,延时程序设计是非常重要的一部分。
本文将介绍C51单片机中几种常用的延时程序设计方法,包括循环延时、定时器延时、外部中断延时等。
这些方法不仅可以满足在实际应用中对延时的需求,而且可以提高程序的稳定性和可靠性。
正文内容:一、循环延时1. 使用循环控制语句实现延时功能,例如使用for循环、while循环等。
2. 根据需要设置延时的时间,通过循环次数来控制延时的时长。
3. 循环延时的精度受到指令执行时间的影响,可能存在一定的误差。
4. 循环延时的优点是简单易用,适用于较短的延时时间。
5. 注意在循环延时时要考虑其他任务的处理,避免长时间的等待造成程序卡死或响应延迟。
二、定时器延时1. 使用C51单片机内置的定时器模块来实现延时。
2. 配置定时器的工作模式,如工作方式、定时器精度等。
3. 设置定时器的初值和重装值,控制定时器中断的触发时间。
4. 在定时器中断服务函数中进行延时计数和延时结束标志的设置。
5. 定时器延时的优点是精确可控,适用于需要较高精度的延时要求。
三、外部中断延时1. 在C51单片机上配置一个外部中断引脚。
2. 设置外部中断中断触发条件,如上升沿触发、下降沿触发等。
3. 在外部中断中断服务函数中进行延时计数和延时结束标志的设置。
4. 外部中断延时的优点是能够快速响应外部信号,适用于实时性要求较高的场景。
5. 注意在外部中断延时时要处理好外部中断的抖动问题,确保延时的准确性。
四、内部计时器延时1. 使用C51单片机内部的计时器模块来实现延时。
2. 配置计时器的工作模式,如工作方式、计时器精度等。
3. 设置计时器的初值和重装值,使计时器按照一定的频率进行计数。
4. 根据计时器的计数值进行延时的判断和计数。
5. 内部计时器延时的优点是能够利用单片机内部的硬件资源,提高延时的准确性和稳定性。
单片机程序延时方法详细介绍

实现延时通常有两种方法:一种是硬件延时,要用到定时器/计数器,这种方法可以提高CPU 的工作效率,也能做到精确延时;另一种是软件延时,这种方法主要采用循环体进行。
1 使用定时器/计数器实现精确延时单片机系统一般常选用11.059 2 MHz、12 MHz或6 MHz晶振。
第一种更容易产生各种标准的波特率,后两种的一个机器周期分别为1 μs和2 μs,便于精确延时。
本程序中假设使用频率为12 MHz的晶振。
最长的延时时间可达216=65 536 μs。
若定时器工作在方式2,则可实现极短时间的精确延时;如使用其他定时方式,则要考虑重装定时初值的时间(重装定时器初值占用2个机器周期)。
在实际应用中,定时常采用中断方式,如进行适当的循环可实现几秒甚至更长时间的延时。
使用定时器/计数器延时从程序的执行效率和稳定性两方面考虑都是最佳的方案。
但应该注意,C51编写的中断服务程序编译后会自动加上PUSH ACC、PUSH PSW、POP PSW 和POP ACC语句,执行时占用了4个机器周期;如程序中还有计数值加1语句,则又会占用1个机器周期。
这些语句所消耗的时间在计算定时初值时要考虑进去,从初值中减去以达到最小误差的目的。
2 软件延时与时间计算在很多情况下,定时器/计数器经常被用作其他用途,这时候就只能用软件方法延时。
下面介绍几种软件延时的方法。
2.1 短暂延时可以在C文件中通过使用带_NOP_( )语句的函数实现,定义一系列不同的延时函数,如Delay10us( )、Delay25us( )、Delay40us( )等存放在一个自定义的C文件中,需要时在主程序中直接调用。
如延时10 μs的延时函数可编写如下:void Delay10us( ) {_NOP_( );_NOP_( );_NOP_( );_NOP_( );_NOP_( );_NOP_( );}Delay10us( )函数中共用了6个_NOP_( )语句,每个语句执行时间为1 μs。
单片机中delay延时原理

单片机中delay延时原理延时是指在程序中暂停一段时间来等待一些操作完成或者时间间隔的过程。
在单片机中,常用的延时方法是利用循环来实现。
下面将详细介绍单片机中延时的原理。
1.循环延时循环延时是最简单的延时方法。
单片机中的时钟频率非常高,可以达到几百万或者几千万次每秒。
通过循环执行一定的指令次数,可以实现一定的延时。
每个指令的执行时间是固定的,因此通过控制循环次数可以实现准确的延时。
循环延时的原理非常简单:通过循环执行一段代码,每次循环都进行一个空操作或者简单的循环次数检测,当循环次数达到预设的值时,延时结束。
2.普通延时实现普通延时实现的代码如下:```cunsigned int i, j;for(j=0;j<1000;j++)//空操作,用于延时}}```上述代码中空操作的循环次数是根据实际情况设定的,一般通过试验来确定。
空操作的次数太小会导致延时不准确,次数太大可能会浪费过多的时间。
3.精确延时实现普通延时方法虽然简单,但是有一定的误差,影响了延时的准确性。
为了提高延时的准确性,可以通过精确延时方法来实现。
精确延时方法是使用定时器来实现延时。
利用定时器的计时功能,可以精确地控制延时的时间。
具体步骤如下:3.1设置定时器的工作模式和工作频率。
3.2根据需要延时的时间计算出定时器的初值。
3.3启动定时器。
3.4循环检测定时器的中断标志位,直到定时器计数结束。
3.5关闭定时器。
下面是一个使用定时器实现精确延时的代码示例:```cvoid delay_us(unsigned int n) //精确微秒延时TMOD=0x01;//设置定时器0为工作模式1TL0=0;//设置定时器初值TH0=0;TR0=1;//启动定时器while(n--) //循环检测定时器计时是否结束while(TF0 == 0);TF0=0;//清除定时器中断标志位}TR0=0;//关闭定时器```该代码中使用了定时器0来实现微秒级的延时。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机精确延时计算和定时中断 一.延时 1. 10ms延时程序(for循环嵌套) ********************************************************************* 文件名称:void delay_10ms() 功能:10ms延时 参数:单片机晶振12MHz ********************************************************************* void delay_10ms() { unsigned int i, j; for(i=0;i<10;i++) { for(j=0;j<124;j++) ; } } i 和 j 定义为int整型时,for循环执行时间为8个机器周期,当i 和j 定义为char 字符型时,for 循环执行时间3个机器周期。“;”一个机器周期,每次调用for循环2个机器周期。 则执行本段延时程序是内循环时间t1=8*124+3个机器周期,其中“8”执行for循环指令时间;“124”为for循环次数;“3”为每次调用for循环指令的时间。外循环t2=t1*10+8*10+3其中“10”为for循环次数;“8”为一次for循环指令调用和执行时间;“10”为调用for循环次数,3为调用for循环指令时间。 所以本程序延时t=((8*124)+3)*10+8*10+3=10033=10.033ms≈10ms。 注意:变量为整型时,每次调用for循环需要3个机器周期的调用时间,执行for循环判断需要8个机器周期的执行时间;字符型变量时,每次调用for循环需要2个机器周期的调用时间,执行for循环判断需要3个机器周期的执行时间。 程序运行到第一个断点所用时间0.00038900s,运行到第二个断点所用时间为0.01042800s,则执行delay_10ms()函数所用时间为0.010428-0.000389=0.010039s= 10.039ms≈10ms。由于断点的原因,执行P0=0xff;和P0=0xfe;指令也花费了时间所以这里时间是10.039ms而不是上面计算出的10.033ms。 2. 10μs短暂延时 *********************************************************************
文件名称:void delay10μs() 功能:10μs延时 参数:单片机晶振12MHz,机器周期1μs ********************************************************************* void delay10μs() { _NOP_( ); _NOP_( ); _NOP_( ); _NOP_( ); _NOP_( ); _NOP_( ); }
函数中共用了6个_NOP_( )语句,每个语句执行时间为1μs。主函数调用delay10μs()时,先执行一个LCALL指令(2μs),然后执行个_NOP_( )语句(6μs),最后执行了一个RET指令(2μs),所以执行上述函数时共需要10μs。可以把这一函数当作基本延时函数,在其他函数中调用,即嵌套调用,以实现较长时间的延时;但需要注意,如在delay40μs()中直接调用4次delay10μs()函数,得到的延时时间将是42μs,而不40μs。这是因为执行delay40μs()时,先执行了一次LCALL指令(2μs),然后开始执行第一个delay10μs(),执行完最后一个delay10μs()时,直接返回到主程序。依此类推,如果是两层嵌套调用,如在delay80μs()中两次调用delay40μs(),则也要先执行一次LCALL指令(2μs),然后执行两次delay40μs()函数(84μs),所以,实际延时时间为86μs。简言之,只有最内层的函数执行RET指令。该指令直接返回到上级函数或主函数。如在delay80μs()中直接调用8次delay10μs(),此时的延时时间为82μs。通过修改基本延时函数和适当的组合调用,上述方法可以实现不同时间的延时。 二 . 定时中断:
1. 定时器/计数器: 8051单片机有2个16为定时器/计数器(8052有3个),它可设置为计数方式,对外部事件(脉冲)进行计数;也可以设置为定时方式,对标准时钟脉冲进行定时计时。它有4中工作方式,定时和计数范围可以通过软件编程进行设定。一旦定时或计数到位,就会立即向CPU发送中断请求,CPU根据定时或计数结果对外设实行控制。 单片机具有5~8个中断源,2级中断优先级。它可接收外部中断请求、定时器/计数器中断请求和串行口中断请求。对紧急事件的实时控制、故障自动处理、单片机与外设之间的数据传输、人机对话等。 定时器/计数器的核心是两个16位的加法计数器,T0,T1分别由两个8位的特殊功能寄存器TH0,TL0和TH1,TL1构成。 定时器/计数器工作方式控制器TMOD,字节地址89H:
| 定时器/计数器T1 | 定时器/计数器T0 | GATE :GATE 为0时,定时器/计数器由软件控制位TRx(x为0或1)来控制启动或停止,1启动,0停止;GATE为1时,由外部中断引脚INT0非或INT1非和TRx共同控制,INT非为高电平和TRx为1启动,低电平和0停止。 C/T非: C/T非为0时,定时器/计数器为定时器方式,对晶振脉冲的12分频信号进行计数。为1时,定时器/计数器为计数器方式,对外部引脚T0(P3.4)或T1(P3.5)输入的脉冲进行计数。CPU在每个机器周期的S5P2期间,对T0或T1引脚进行采样,在前一个周期采得值为1,后一个周期采得值为0,则计数器加1。由于确认一次负跳变需要两个机器周期,因此最高计数频率为晶振频率的1/12。
GATE C/T非 M1 M0 GATE C/T非 M1 M0 工作方式: M1 M0 工作方式
0 0 方式0,为13位定时器/计数器,2^13=8192
0 1 方式1,为16位定时器/计数器,2^16=65536
1 0 方式2,为8位自动重装载计数初值定时器/计数器,2^8=256
1 1 方式3,定时器/计数器T0分成两个独立的8位定时器/计数器
定时器/计数器控制寄存器TCON,字节地址88H,可位寻址: TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
TF1/TF0:定时器/计数器溢出标志位,溢出时由硬件置1,向CPU申请中断或查询,CPU响应中断后,由硬件自动清0。 TR1/TR0:定时器/计数器运行控制位,由软件置1或清0,置1时启动定时器/计数器,清0时停止计数。 IT0/IT1:外部中断0/外部中断1触发方式选择位。IT0/IT1=0为电平触发方式,IT0/IT1=1为跳变触发方式。 IE0/IE1:外部中断0/外部中断1中断请求标志位。IE0/IE1=1表示在向CPU申请中断。
2. 中断: 中断是指CPU正在处理某件事情时,外部发生的某一事件(如一个电平的变化,一个脉冲沿的发生或定时器/计数器溢出等)请求CPU迅速去处理。于是,CPU暂时中断当前的工作,转去处理所发生的事件。中断服务处理完成后,再回到原来被中止的地方,继续原来的工作,此过程即为中断。 8051中断系统共有5个中断源,分别为1.外部中断0请求 2.外部中断1请求 3.定时器/计数器T0溢出中断请求 4.定时器/计数器T1溢出中断请求 5.串行口中断请求 1)串行口控制寄存器SCON,字节地址98H,可位寻址。 SM0 SM1 SM2 REN TB8 RB9 TI RI 与中断系统有关的标志位时TI和RI。 TI:串行口的发送中断请求标志位。CPU将一字节的数据写入发送缓冲器SBUF时,就启动一帧串行数据的发送,没发送完一帧串行数据后,硬件自动置TI位为1。(发送完一帧数据,若还要接着发送,则为了下一次发送做准备,需要软件将TI清0) RI:串行口的接收中断请求标志位。在串行口允许接收时,每接收完一帧串行数据,硬件自动置RI位为1。(接收完一帧数据,若还要接着接收,则为了下一次接收做准备,需要软件将RI清0)
2)中断允许控制寄存器IE,字节地址A8H,可位寻址。 EA — — ES ET1 EX1 ET0 EX0
EA:中断允许总控制位。EA=0,CPU关中断。EA=1,CPU开中断。 ES:串行口中断允许控制位。ES=0,禁止中断。ES=1,允许中断。 ET0/ET1:定时器/计数器0/1中断允许控制位。0禁止中断,1允许中断。 EX0/EX1:外部中断0/1中断允许控制位。0禁止中断,1允许中断。
3)中断优先级控制寄存器IP,字节地址B8H,可位寻址。 — — — PS PT1 PX1 PT0 PX0
PS:串行口中断优先级控制位。1为高优先级,0为低优先级。 PT0/PT1:定时器/计数器0/1溢出中断优先级控制位。1为高优先级,0为低优先级。 PX0/PX1:外部中断0/1中断优先级控制位。1为高优先级,0为低优先级。 查询中断方式编程: 用定时器T1查询方式控制单片机发出1KHz音频 #include // 包含51单片机寄存器定义的头文件 sbit sound=P3^7; //将sound位定义为P3.7引脚 void main(void) { EA=1; //开总中断 ET0=1; //定时器T0中断允许 TMOD=0x10; //使用定时器T1的模式1 TH1=(65536-921)/256; //定时器T1的高8位赋初值 TL1=(65536-921)%256; //定时器T1的低8位赋初值 TR1=1; //启动定时器T1 TF1=0; while(1)//无限循环等待查询 { while(TF1==0) ; TF1=0; sound=~sound; //将P3.7引脚输出电平取反 TH1=(65536-921)/256; //定时器T1的高8位赋初值 TL1=(65536-921)%256; //定时器T1的低8位赋初值 } }