c51单片机晶振为12Mhz怎么算delay(10000)?

作者&投稿:邸趴 (若有异议请与网页底部的电邮联系)
51单片机 晶振为12Mhz,求算精确的延时时间 要是给出详细的计算过程的话可以再加五分财富~

应该是2mS左右
1void delay1(int x){while(--x);}
delay(1)是14us
接下来执行--每个需8us
delay1(50)为406us
2void delay2(int t)
{ int i;
for(i=0;i<t;i++);
}

for(i=0;i<t;i++);这句需要36us ,每个循环需要16us ,
delay2(100);=36+99*16=1620us
delay1(50);
delay2(100);
时间为406+1620=2026us 约为2ms

猜想你问的是1ms.
下面为你写出1ms的程序:
用的是11.0592M的,你如果真的需要是12M的,那自己直接修改成12M就可以了。调用的时候直接把uinsigned int ms改成1就是1ms.

void ConfigTimer0(unsigned int ms)
{
unsigned long tmp;
tmp = 11059200/12;
tmp = (tmp * ms)/1000;
tmp = 65536 - tmp;
tmp = tmp + 18;
T0RH = (unsigned char)(tmp >> 8);
T0RL = (unsigned char)tmp;
TMOD &= 0xF0;
TMOD |= 0x01;
TH0 = T0RH;
TL0 = T0RL;
ET0 =1;
TR0 = 1;
}

很简单,51单片机使用12mhz的晶振,那么机器周期就是1us执行一条延时指令。10000条延时指令估计延时10ms左右,你可以使用仿真软件试一试时间。


51单片机延时1us,12M晶振怎么用c语言写
51单片机12M晶振延时1us,只需要执行一个NOP就是了。C语言中也是如此。include<reg51.h> include<intrins.h> main(){ _nop_(); \/\/延时1us while(1);}

51单片机的机器周期和晶振频率有何关系?当fOSC=8MHz时,机器周期是多少...
机器周期X振荡频率= 12。当fosc=8MHz时,机器周期为1.5微秒。因为规定一个机器周期为12个振荡周期,而振荡周期是振荡频率fosc的倒数,所以一个机器周期=12\/fosc,当fosc=8MHz时,代入公式,机器周期为12\/(8MHz)s,即1.5us。

.已知51单片机系统晶振频率为12MHz,请利用定时器1工作方式1,中断方式...
3,可以真实仿真全部32条IO脚;4,完全兼容keilC51UV2调试环境,可以通过UV2环境进行单步,断点,全速等操作;5,可以使用C51语言或者ASM汇编语言进行调试;6,可以非常方便地进行所有变量观察,包括鼠标取值观察,即鼠标放在某变量上就会立即显示出它此的值;以上内容参考:百度百科-51单片机 ...

51单片机最小系统详解
2、按键按下系统复位,是电容处于一个短路电路中,释放了所有的电能,电阻两端的电压增加引起的。3、51单片机最小系统电路介绍 (1)51单片机最小系统复位电路的极性电容C1的大小直接影响单片机的复位时间,一般采用10~30uF,51单片机最小系统容值越大需要的复位时间越短。(2)51单片机最小系统晶振Y1也...

51单片机定时器方式1,晶振33hz,延时1秒,怎么用c语言编程
\/\/33MHz 一个定时周期延时50ms include <reg51.h> void InitTimer0(void){ TMOD = 0x01;TH0 = 0x0CA;TL0 = 0x4A;EA = 1;ET0 = 1;TR0 = 1;} void main(void){ InitTimer0();} void Timer0Interrupt(void) interrupt 1 { TH0 = 0x0CA;TL0 = 0x4A;\/\/add your code ...

51单片机晶振频率为12MHz,利用中断在P1.1口输出50HZ的方波,C语言,哪...
include <reg51.h>sbit port=P1^1;void Timer0Init(void)\/\/10毫秒@12.000MHz{TMOD &= 0xF0;\/\/设置定时器模式TMOD |= 0x01;\/\/设置定时器模式TL0 = 0xF0;\/\/设置定时初值TH0 = 0xD8;\/\/设置定时初值TF0 = 0;\/\/清除TF0标志TR0 = 1;\/\/定时器0开始计时}void main(){ Timer0Init()...

51单片机一般选用多少的晶振
这个与用途有关,比如说如果你要用到串口,那么就常用11.0592MHz晶振,因为这个频率的晶振分频后可以得到精确的波特率。如果要用到计时,就常用12MHz晶振,这样分频后是个整数,计时更精确。当需要单片机比较快速的处理数据时,通常使用频率更高的晶振,因为单片机的处理速度与晶振频率成正比,晶振频率越高...

51单片机晶振频率为12MHz,定时器1工作方式1中断方式在P2.3输出频率为1...
MOD应该是\/除号,因为是12M晶振,所以定时器一个计数值为1US,所以按这个赋值,定时器1将会50ms中断一次,要想产生10Hz的方波,周期得100ms,也就是说可以在中断服务程序中加条语句:cpl p2.3,就可以了,这样两次中断就是一个周期得方波信号,正好50X2=100ms。

51单片机放置12MHZ的晶振,每一条指今的时间是多少?而11.0592的呢?_百度...
51单片机12M晶振,晶振周期1\/12微妙,一个机器周期包含12个晶振周期,所以12M晶振时机器周期=12x(1\/12)微妙=1微妙 。11.0592就将上文中12换成11.0592即可 追问 为什么别人说11.0592可以方便计算? 追答 11.059M晶振在计算波特率或定时器的时候好计算,好多的波特率的值和110592是可以约掉的,也就是说发送接收每一位时...

51单片机为什么加外部晶振?
标准的51单片机(比如AT89C51)是没有内置振荡器的,只是一些增强型51单片机会内置RC振荡器,比如STC12C2052AD。并且,内置RC振荡器的精度比不上晶振的,在对时钟稳定性要求不是很高的时候比较适合。这个外部晶振为单片机提供时钟信号,在时序逻辑电路中,时钟信号的重要性和电源是一样的。没有时钟信号,...

永吉县19248748767: 单片机中晶振频率为12MHZ的机器周期怎么算? -
宗政甘参七:[答案] 1、机器周期=晶振周期*12. 2、所以单片机中晶振频率为12MHZ的机器周期=12*1/12M=1微秒.

永吉县19248748767: 当80C51单片机晶振频率为12MHz时,时钟周期.机器周期各是多少? -
宗政甘参七:[答案] 1.时钟周期即晶振的单位时间发出的脉冲数,12MHZ=12*10的6次方,即每秒发出12000000个脉冲信号,那么发出一个脉冲的时间就是时钟周期,即1/12微秒. 2.一个机器周期等于12个时钟周期,所以是1微秒.

永吉县19248748767: 单片机计数值问题,注意不是计数初值.已知晶振频率为12MHz,问1ms的计数值应该如何计算,如果换成1μs呢?求详细公式. -
宗政甘参七:[答案] 1 如果是1毫妙 可以采用方式1 公式为:定时时间=(65536-X)微妙可以计算 1毫妙 =1000微妙=65536-X 则X=645362 如果是1微妙 可以采用方式2 公式为:定时时间=(256-X)微妙不过对51单片机 1微妙太短了 不能做什么事...

永吉县19248748767: 51单片机如何用for写一个5ms的延时,晶振是12MHZ的 -
宗政甘参七: 非常简单,先写一个大概的,然后用示波器测量,微调一下.就OK了! 反正我们都是这样调整的. 呵呵,没时间去研究怎么写. 你可以写一个基准定时,1ms的.然后就是入口参数delay_ms(time);的问题了... time=20

永吉县19248748767: 已知51单片机系统的外接晶体震荡器的振荡频率为12MHZ.请计算该单片机的一个机器周期是多少? -
宗政甘参七: 一个机器周期,是 12 个振荡周期. 即 12/12MHz = 1us.

永吉县19248748767: 已经51单片机的晶振频率是12MHZ 要产生4800BPS的波特率 问波特率的计算公式 还有 计算 TH1 TL1的初始值 -
宗政甘参七: 串行口的四种工作方式对应三种波特率.由于输入的移位时钟的来源不同,所以,各种方式的波特率计算公式也不相同. 方式0的波特率 = fosc/12 方式2的波特率 =((2^SMOD)/64)• fosc 方式1的波特率 =((2^SMOD)/32)•(T1溢出率...

永吉县19248748767: 单片机C51延时时间怎样计算? -
宗政甘参七: C程序中可使用不同类型的变量来进行延时设计.经实验测试,使用unsigned char类型具有比unsigned int更优化的代码,在使用时应该使用unsigned char作为延时变量. 以某晶振为12MHz的单片机 为例,晶振为12MHz即一个机器周期为1us....

永吉县19248748767: 单片机c51编程.系统晶振频率为12Mhz,利用定时计数器T0的方式1,并使用p1.0引脚上输出周 -
宗政甘参七: 每隔 250ms 翻转一次,就是输出周期500ms的方波.

永吉县19248748767: C51单片机如何得到2us的时间周期,晶振采用12MHZ.使用T0 方式1,用C语言编写,非诚勿扰 -
宗政甘参七: 123456789101112131415161718192021222324252627 voidmain() { TMOD=0x01; TH0=(65536-2)/256; //计算初值,定时器溢出中断,周期2us; TL0=(65536-2)%256: EA=1; ET0=1; TR0=1; while(1) { if(num==a) //a为2us的倍数,如1ms时a即为...

永吉县19248748767: c51单片机计算一个循环所需时间 -
宗政甘参七: 是的,C语言虽写着简单,但不便于计算运行时间. 如果知道单片机的晶振频率,可以利用定时器,定时1ms或10ms中断一次(频繁中断对运行有影响,但定时时间长,则显示结果粗糙),每次中断计数器变量加1,循环终了用数码管显示出计数器变量的值即可知一个循环所花费的时间 如果不知道晶振频率或定时器被占用,可以设定流水灯循环100次或500次后,蜂鸣器响或某一指示灯亮,然后用秒表计时即可 还可以用软件仿真的方法来获得运行时间

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网