Assembly 8051单片机中延时的计算

Assembly 8051单片机中延时的计算,assembly,microcontroller,8051,Assembly,Microcontroller,8051,我正在准备8051微控制器课程的期末考试,我不懂一些东西,我需要你帮我弄清楚 我知道8051可以有一个内部振荡器和一个外部振荡器 从我所读到的,内部振荡器被设置(默认)为2MHz,外部振荡器可以有4种类型:晶体、电容器、电阻电容器(RC)和CMOS时钟 我的问题是关于初始化系统时钟(到外部晶体振荡器)以及如何计算1毫秒的延迟(让晶体振荡器设置) 当我阅读以下代码(用于系统时钟的初始化)时,我不明白行DJNZ ACC,$如何给出512μs 我想我知道如何用公式计算延迟时间: 但是我得到了278μs

我正在准备8051微控制器课程的期末考试,我不懂一些东西,我需要你帮我弄清楚

我知道8051可以有一个内部振荡器和一个外部振荡器

从我所读到的,内部振荡器被设置(默认)为2MHz,外部振荡器可以有4种类型:晶体、电容器、电阻电容器(RC)和CMOS时钟

我的问题是关于初始化系统时钟(到外部晶体振荡器)以及如何计算1毫秒的延迟(让晶体振荡器设置)

当我阅读以下代码(用于系统时钟的初始化)时,我不明白行
DJNZ ACC,$
如何给出512μs

我想我知道如何用公式计算延迟时间:

但是我得到了278μs的延迟,而不是513μs的延迟

我的延迟公式计算-使用22.1184 MHz

我的延迟公式计算-使用12 MHz

但是当我将fu SysClk更改为12 MHz时。一切顺利,我得到了513μs。但我不明白为什么我需要使用12兆赫而不是22.1184兆赫

你能给我解释一下为什么我要用12MHz吗

这是我的课本上的图像,我有问题


请下次使用正确的拼写。我已经为你修好了。如果可能的话,从你的课本上复制代码,而不是张贴它的图片。你有什么类型的水晶?12兆赫还是22.1184兆赫?我用的是22.1184兆赫的晶体振荡器(如我文章最后一张图片所示)。对不起。第二个方程(12 MHz)的结果是:513 us,而不是513810 us。