STC单片机比较延时函数
答案:3 悬赏:0
解决时间 2021-02-20 18:13
- 提问者网友:小姐请专情
- 2021-02-20 07:55
A 的取值范围是0-FF,根据一个A的值不同来做不同的延时,应该怎么编。
最佳答案
- 二级知识专家网友:野心和家
- 2021-02-20 09:21
看你说的意思,我的理解是:编写一个延时程序,以A作为输入形参
void delay(unsigned int A)
{
for(unsigned int i=0;i<A;i++)
for(unsigned int j=0;j<num;j++) //注意这边的num是常值,选择合适的num值,使得这个for 的延时大概为1ms,具体看机器周期的计算
nop();
}
希望能帮到你!
void delay(unsigned int A)
{
for(unsigned int i=0;i<A;i++)
for(unsigned int j=0;j<num;j++) //注意这边的num是常值,选择合适的num值,使得这个for 的延时大概为1ms,具体看机器周期的计算
nop();
}
希望能帮到你!
全部回答
- 1楼网友:时光挺欠揍
- 2021-02-20 11:35
假设你用的12M晶振,IT单片机;
参照STC的数据手册“2.6 指令系统分类总结及与普通8051 指令执行时间对比”
可查出: 机器周期
L1:CLR A 1
MOV R6,A 2
L2:INC R6 3
CJNE R6,#0x09,L2 4
DJNZ R7,L1 4
RET 4
你的延时=((1+2+9*(3+4)+4)*n+4)/12000000秒=(70*n+4)/12us;
n取1的话=74/12=6.167us;
- 2楼网友:情战辞言
- 2021-02-20 10:11
1,只要学过一种单片机,触类旁通,很多概念性的东西都是相通的。stc单片机的时钟、外部晶振与飞思卡尔单片机的时钟、外部晶振并没有本质上的区别,大凡是单片机都需要时钟,没有时钟,芯跳就停止了。stc单片机有内部rc振荡器或外部晶体振荡器为单片机产生时钟。为兼容传统51单片机的某些特性,stc单片机的指令时钟周期数是可选的,可以是1个时钟周期也可以是12个时钟周期的。至于什么11.0592mhz、22.1184mhz,这是振荡器的频率,也是单片机的时钟频率,单片机的时钟频率并不是只允许这两种,还可以根据实际需要作其它选择,比如4.000mhz、3.58mhz等等。你说的总线时钟就是单片机的时钟,与震荡频率有关。
2,for循环延时是无法直接精确计算的。要获得比较准确的时间,需要参考c平台编译后的汇编文件,按汇编文件的指令周期逐条计算时间,这样得出的结果相对比较精确。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
• 手机登qq时,显示手机磁盘不足,清理后重新登 |
• 刺客的套装怎么选啊? |