在嵌入式C语言中,可以使用定时器来实现精确的时间控制。具体的设置时间的方式取决于使用的定时器硬件。一般来说,设置定时器的时间包括以下几个步骤:1. 配置定时器的寄存器:包括设置定时器的计时单位(微秒、毫秒等)和预分频系数。2. 设置定时器的计数值:通过设置定时器的寄存器来指定定时器的初始计数值。3. 注册中断服务函数(可选):如果需要在定时器溢出时触发中断,可以编写一个中断服务函数,并将其注册到中断向量表中。4. 启动定时器:通过设置定时器的控制位(如使能位)启动定时器。5. 在适当的地方处理定时器溢出中断:例如,在中断服务函数中处理定时器溢出中断,并进行相应的操作,如更新时间、执行特定任务等。需要注意的是,具体的设置方法和寄存器名称可能会因芯片厂商和具体的定时器模块而有所不同,因此你需要查阅芯片的数据手册或参考相关的开发文档来获取详细的配置信息。另外,有些嵌入式操作系统(例如FreeRTOS)也提供了更高层次的定时器接口和任务调度功能,可以更方便地进行时间控制。如果你在使用这样的操作系统,可以参考相应的文档和示例来设置定时器。

首先,单片机的定时器和计数器不构成因果关系。
但是,TMOD(工作方式寄存器)决定着单片机是定时还是计数的工作方式
而我自己的理解是:
定时功能:单片机设定时间到了以后,触发中断程序;当主程序中有数码管、按键、闪烁灯灯的时候,可以开定时器设定定时时间(比如:2ms),因此灯的闪烁既不影响按键,又不影响数码管的扫描显示,能精确地使各模块有序地运行,不影响主程序。
计数功能:可以通过外部事件的脉冲触发中断程序;实则很多时候用来对外部脉冲进行计数,从而达到被占用主程序的同时还能计数。
纯属本人在学习过程中的一些个人总结,表达不专业和有待完善的地方,还望各位电子爱好者提出。
使用定时器实现1秒定时; 初始值要看单片机配置的晶振频率了,若12M晶振,初始值为TH0=0x3c;TL0=0xb0; 这才是50ms,还要一个单元做计数器,计数20次才是1秒 方波?在定时中断里求反一次。