2个回答
展开全部
利用单片机产生时钟信号,一般都是用定时器来完成
先给定时器赋一个初始值,单片机每运行一次周期,则定时器初值改变一次
定时功能,就是利用这种状态来完成的
如果想输出秒信号,那就要计算好单片机的运行周期和定时器初值的关系
具体方法如下:
1 可以按定时时间的计算公式, 计算出定时器的时间常数X:
定时时间T=(2的N次方-X)12/单片机晶振频率
2 N为定时器的工作方式:
方式0时,N=13 方式1时,N=16 方式2时,N=8
3 根据定时时间和工作方式,计算出时间常数X
把X转换成二进制数,高8位送给TH1,低8位送给TL1,就可以启动定时器开始定时了。
例如: 工作在方式1,定时时间为1000微秒 晶振频率=12MHZ
则定时时间T=(2的16次方-X)12/12MHZ 解出 X=64536=FC18
晶振11.0592M
11.0592MHz除12为921600Hz,
就是一秒921600次机器周期, 10ms=9216次机器周期.
65536-9216=56320(dc00) TH0=0xdc,TL0=0x00
测试程序如下
#include<reg51.h>
unsigned int n;
void main(void)
{
TH0=(65536-1000)/256; TL0=(65536-1000)%256;
TMOD=0x01; EA=1; ET0=1; TR0=1;//定时器初始化
while(1);//主循环,不做任何动作
}
void int1() interrupt 1 //定时器中断
{
TH0=(65536-1000)/256; TL0=(65536-1000)%256; n++;
if(n>500)//如果达到半秒,1000为一秒
{
n=0;
P1 = ~P1 ;//半秒位取反一次,达到一秒钟闪烁一次的效果
}
}
先给定时器赋一个初始值,单片机每运行一次周期,则定时器初值改变一次
定时功能,就是利用这种状态来完成的
如果想输出秒信号,那就要计算好单片机的运行周期和定时器初值的关系
具体方法如下:
1 可以按定时时间的计算公式, 计算出定时器的时间常数X:
定时时间T=(2的N次方-X)12/单片机晶振频率
2 N为定时器的工作方式:
方式0时,N=13 方式1时,N=16 方式2时,N=8
3 根据定时时间和工作方式,计算出时间常数X
把X转换成二进制数,高8位送给TH1,低8位送给TL1,就可以启动定时器开始定时了。
例如: 工作在方式1,定时时间为1000微秒 晶振频率=12MHZ
则定时时间T=(2的16次方-X)12/12MHZ 解出 X=64536=FC18
晶振11.0592M
11.0592MHz除12为921600Hz,
就是一秒921600次机器周期, 10ms=9216次机器周期.
65536-9216=56320(dc00) TH0=0xdc,TL0=0x00
测试程序如下
#include<reg51.h>
unsigned int n;
void main(void)
{
TH0=(65536-1000)/256; TL0=(65536-1000)%256;
TMOD=0x01; EA=1; ET0=1; TR0=1;//定时器初始化
while(1);//主循环,不做任何动作
}
void int1() interrupt 1 //定时器中断
{
TH0=(65536-1000)/256; TL0=(65536-1000)%256; n++;
if(n>500)//如果达到半秒,1000为一秒
{
n=0;
P1 = ~P1 ;//半秒位取反一次,达到一秒钟闪烁一次的效果
}
}
深圳市兴威帆电子技术有限公司
2023-06-12 广告
2023-06-12 广告
时钟模块有许多选择,这里为您提供几家广泛应用的模块,并询问一些普遍问题:1. Arduino - 这是一个非常受欢迎的选择,因为它易于使用,价格实惠,且能与多种传感器连接。此外,它也具有可编程功能和Wi-Fi /蓝牙功能。2. Raspbe...
点击进入详情页
本回答由深圳市兴威帆电子技术有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询