打印
[经验分享]

简单算法判断51单片机默认1T还是12T

[复制链接]
1685|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cemaj|  楼主 | 2023-11-25 15:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如果晶振是11.0592MHz,就是11059200Hz,12分频是921600Hz

16位定时器每次只能装65536,11059200/65536=168.75次,将a赋值169后,如果灯珠闪亮的大概是一秒一次,就说明单片机运行的状态是1T.

然后11059200/12=921600,921600/65536=14.0625次,将a赋值14后,如果灯珠闪亮的大概是一秒一次,就说明单片机运行的状态是12T.

代码如下:

#include<reg52.h>
sbit LED=P1^3;//定义LED灯珠端口
unsigned int a;

void Init_Timer0(void)
{
TMOD |=0X01;
TH0=0X00;
TL0=0X00;
EA=1;
ET0=1;
TR0=1;
}

void main()
{
a=0;
Init_Timer0();
while(1);
}

void Timer0_isr(void) interrupt 1 using 1
{
TH0=0X00;
TL0=0X00;
a++;
if(a>=14){a=0;LED=~LED;}
}

使用特权

评论回复
沙发
vivilyly| | 2023-12-2 14:59 | 只看该作者
将定时器0设置为计数模式,并使用外部晶振作为时钟源。
将定时器0的计数值设置为0。
启动定时器0,并等待一段时间(例如:1秒)。
停止定时器0,并读取其计数值。
根据计数值和外部晶振的频率,计算出51单片机的时钟频率。
如果时钟频率大于11000000Hz(约为11MHz),则51单片机的时钟频率为12T;否则,51单片机的时钟频率为1T。

使用特权

评论回复
板凳
hudi008| | 2023-12-2 16:15 | 只看该作者
标准51单片机是12T的,即12个时钟周期完成一个指令周期。

使用特权

评论回复
地板
zerorobert| | 2023-12-2 19:12 | 只看该作者
可以通过检测外部晶振的频率来判断51单片机的时钟频率是1T还是12T。

使用特权

评论回复
5
backlugin| | 2023-12-2 19:57 | 只看该作者
对于12T的单片机,其机器周期等于12倍的晶振周期。例如,如果你的晶振频率是11.0592MHz,那么12T单片机的机器周期就是11.0592MHz / 12 = 0.9216MHz。而对于1T的单片机,其机器周期就等于晶振周期。

使用特权

评论回复
6
cashrwood| | 2023-12-2 21:20 | 只看该作者
要判断某一特定51单片机是1T还是12T,需要查阅该单片机的技术手册或相关资料来获取准确信息。

使用特权

评论回复
7
yeates333| | 2023-12-2 22:50 | 只看该作者
默认时钟周期取决于其型号和制造工艺。

使用特权

评论回复
8
gygp| | 2023-12-3 22:25 | 只看该作者
要准确判断单片机的类型,还需参考单片机的技术手册。

使用特权

评论回复
9
i1mcu| | 2023-12-6 18:16 | 只看该作者
51单片机的默认模式是1T模式,也就是每个系统基本时钟执行一个动作。

使用特权

评论回复
10
macpherson| | 2023-12-9 20:17 | 只看该作者
以通过计算来确定单片机的机器周期。

使用特权

评论回复
11
wengh2016| | 2023-12-9 21:44 | 只看该作者
最直接的方法是查看单片机的数据手册

使用特权

评论回复
12
sanfuzi| | 2023-12-10 16:44 | 只看该作者
首先,通过指令“MOV A,#0x00FF;”将A寄存器赋值为0x00FF。
然后,通过指令“JNB T0,01B;”检测定时器0的中断标志位T0,如果T0为低电平,则说明定时器0工作在1T模式下;如果T0为高电平,则说明定时器0工作在12T模式下。
最后,根据定时器0的工作模式,可以确定51单片机的默认1T还是12T。

使用特权

评论回复
13
abotomson| | 2023-12-10 17:42 | 只看该作者
可以使用一个定时器来计算外部晶振的频率,然后根据频率的大小来判断51单片机的时钟频率是1T还是12T。

使用特权

评论回复
14
jackcat| | 2023-12-12 14:59 | 只看该作者
1T单片机是指执行一个指令只需要1个时钟周期,而12T单片机是指执行一个指令需要12个时钟周期。

使用特权

评论回复
15
sheflynn| | 2023-12-13 13:43 | 只看该作者
对于51单片机,常见指令如NOP(空指令),其执行时间等于一个时钟周期。因此,如果使用12MHz晶振,执行一个NOP指令需要1μs。

使用特权

评论回复
16
sdlls| | 2023-12-14 16:52 | 只看该作者
通常会在其中明确标注出单片机的机器周期。

使用特权

评论回复
17
sesefadou| | 2023-12-14 17:13 | 只看该作者
根据时钟周期和单片机的工作模式,可以判断出单片机的运行状态。如果时钟周期为1/12us,则为12T模式;如果时钟周期为1/1us,则为1T模式。

使用特权

评论回复
18
wilhelmina2| | 2023-12-14 19:18 | 只看该作者
对于1T(1倍速)和12T(12倍速)的单片机,它们的区别主要在于分频系数。

使用特权

评论回复
19
minzisc| | 2023-12-16 10:39 | 只看该作者
如果晶振频率为11.0592MHz,那么单片机的时钟频率为11059200Hz,12分频后得到921600Hz。

16位定时器每次只能装65536个数字,因此需要计算11059200Hz除以65536得到的次数,即168.75次。将a的值赋值为169,如果LED灯珠大约每秒钟闪烁一次,则说明单片机默认模式是1T模式。

另外,还需要计算11059200Hz除以12得到的计数次数,即921600Hz除以65536得到的计数次数,即14.0625次。将a的值赋值为14,如果LED灯珠大约每秒钟闪烁一次,则说明单片机默认模式是12T模式。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

28

主题

3839

帖子

2

粉丝