51单片机延时问题 (STC12C5A60S2 晶振频率11.059MHz)实验书上的程序与实际或者计算的结果都不同 新人求教两个关于单片机的问题。 stc12c5a60s2与s...

stc12c5a60s2\u5355\u7247\u673a\uff0c11.0592MHz\u6676\u632f\u30025us\u548c5ms\u7cbe\u786e\u5ef6\u65f6\u51fd\u6570

\u54e5\u4eec\u4f60\u60f3\u591a\u4e86\u5427\uff01
11.059200MHz\u6676\u632f\u4e0b\uff0c\u4e00\u4e2a\u673a\u5668\u6307\u4ee4\u5468\u671f t=((1*12)/11059200) = 1.0850694us\uff0c\u4e5f\u5c31\u662f\u4e00\u4e2a\u7a7a\u6307\u4ee4\u4e5f\u89811.0850694us\uff0c\u6240\u4ee55us\u7684\u5ef6\u65f6\u53ea\u80fd\u662f5\u4e2a\u7a7a\u6307\u4ee4\u5468\u671f\uff0c\u5e76\u4e14\u8bef\u5dee\u5f88\u5927\uff0c\u5199\u6210\u5ef6\u8fdf\u51fd\u6570\u8bef\u5dee\u66f4\u5927\u3002
\u5728\u7a0b\u5e8f\u4e2d\u76f4\u63a5\uff1a
_NOP_();_NOP_();_NOP_();_NOP_();_NOP_();
\u8fd9\u5c31\u5ef6\u65f6\u4e86 5*1.0850694us\u3002
\u81f3\u4e8e5ms\u7684\u8bdd\u53ef\u4ee5\u4f7f\u7528\u5b9a\u65f6\u5668\uff0c\u4f46\u662f\u8bef\u5dee\u8f83\u5927\uff1a
void delay_5ms(void)
{
TMOD = 0x01;

TH0 = 0x12;

TL0 = 0x00;

TR0 = 1;

while(TF0 == 0);

TF0 = 0;

TR0 = 0;

}
\u6267\u884c\u8be5\u51fd\u6570\u65f6\u95f4\u4f1a\u7565\u5927\u4e8e5ms\uff0c\u7565\u5927\u4e8e\u7684\u90e8\u5206\u4e3b\u8981\u662f\uff1a
1\u3001\u8fdb\u5165\u548c\u9000\u51fa\u51fd\u6570\u7684\u5165\u6808\u548c\u51fa\u6808\u64cd\u4f5c\u4f1a\u5360\u7528\u51e0\u4e2a\u673a\u5668\u5468\u671f\uff0c\u5177\u4f53\u7684\u81ea\u5df1\u53ef\u4ee5\u7b97\u3002
2\u3001\u521d\u59cb\u5316\u5b9a\u65f6\u5668\u548c\u505c\u6b62\u5b9a\u65f6\u5668\u4e5f\u9700\u8981\u51e0\u5230\u5341\u51e0\u4e2a\u673a\u5668\u5468\u671f\u90a3\u6837\uff0c\u5177\u4f53\u81ea\u5df1\u8c03\u8bd5\u7b97\u4e00\u4e0b\u3002
\u6574\u4f53\u6765\u8bf4\uff0c\u8fd9\u6837\u8bef\u5dee\u4f1a\u57280.1%--1%\u90a3\u6837\uff0c\u4f60\u53ef\u4ee5\u6839\u636e\u60c5\u51b5\u6765\u9002\u5f53\u7684\u7f29\u5c0fTH0\u548cTL0\u91cc\u9762\u7684\u503c\u3002


\u8fd9\u662f\u5b98\u65b9\u7684\u6570\u636e\u624b\u518c\uff0c\u4e0a\u9762\u6307\u51fa\uff0c\u9ed8\u8ba4\u60c5\u51b5\u4e0b\u662f\u7ecf\u8fc712\u5206\u9891\u7684\uff0cSTC12C5A60S2\u7684\u5b9a\u65f6\u5668\u548c89C52\u662f\u4e00\u6837\u7684

STC12C5A60S2单片机 是 1T 单片机,一个机器周期=1/11.059=0.09微秒
DJNZ Rn, rel 是 4 个机器周期,

调用 6
Dalay100MS: MOV R7, DalayTimes_100MS ;2
Dalay100MS_1: MOV R6,#10 ;2*DalayTimes_100MS
Dalay100MS_2: MOV R5,#100 ;2*10*DalayTimes_100MS
Dalay100MS_3: MOV R4,#200 ;2*10*100*DalayTimes_100MS
Dalay100MS_4: DJNZ R4,Dalay100MS_4 ;4*10*100*200*DalayTimes_100MS
DJNZ R5,Dalay100MS_3 ;4*10*100*DalayTimes_100MS
DJNZ R6,Dalay100MS_2 ;4*10*DalayTimes_100MS
DJNZ R7,Dalay100MS_1 ;4*DalayTimes_100MS
RET ;3

Total=6+2+3+6*DalayTimes_100MS+6*10*DalayTimes_100MS+6*10*100*DalayTimes_100MS+4*10*100*200*DalayTimes_100MS)
=9+6*111+60*111+6000*111+4000*200*111=89473335T
约为:8.09s

你忽略了 mov 指令执行的时间

扩展阅读:delay延时10秒 ... 延时1ms的延时子程序 ... 51延时30秒 ... 51单片机delay延时1ms ... 宏晶stc单片机官网 ... 单片机延时1s方法 ... 51单片机精确延时1秒 ... stc单片机属于51系列吗 ... 51单片机1分钟延时程序 ...

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网