STC单片机的延时程序问题!!!
鄙人学飞思卡尔单片机出身的,半路出家自学51,所以许多问题还不是很清楚,数据手册有些地方看不甚明白,所以请加一下各位大神哈:1、STC单片机的时钟和外部晶振(什么11.0...
鄙人学飞思卡尔单片机出身的,半路出家自学51,所以许多问题还不是很清楚,数据手册有些地方看不甚明白,所以请加一下各位大神哈:
1、STC单片机的时钟和外部晶振(什么11.0592MHZ)有关是吗,最后总线时钟是怎么分频倍频得到的哈?
2、请问下如何精确计算计算for循环的延时?
比如我的是STC12C5A60S2的1T单片机、晶振有22.1184和11.0592两种。
如果我想精确延时1微秒或1毫秒(用for循环累加),根据以上参数如何计算哈?
谢谢各位大神,主要想知道的还是原理和方法哈,这样以后就可以自己随心所欲地编简易延时程序了~ 展开
1、STC单片机的时钟和外部晶振(什么11.0592MHZ)有关是吗,最后总线时钟是怎么分频倍频得到的哈?
2、请问下如何精确计算计算for循环的延时?
比如我的是STC12C5A60S2的1T单片机、晶振有22.1184和11.0592两种。
如果我想精确延时1微秒或1毫秒(用for循环累加),根据以上参数如何计算哈?
谢谢各位大神,主要想知道的还是原理和方法哈,这样以后就可以自己随心所欲地编简易延时程序了~ 展开
4个回答
展开全部
1,只要学过一种单片机,触类旁通,很多概念性的东西都是相通的。STC单片机的时钟、外部晶振与飞思卡尔单片机的时钟、外部晶振并没有本质上的区别,大凡是单片机都需要时钟,没有时钟,芯跳就停止了。STC单片机有内部RC振荡器或外部晶体振荡器为单片机产生时钟。为兼容传统51单片机的某些特性,STC单片机的指令时钟周期数是可选的,可以是1个时钟周期也可以是12个时钟周期的。至于什么11.0592MHZ、22.1184MHZ,这是振荡器的频率,也是单片机的时钟频率,单片机的时钟频率并不是只允许这两种,还可以根据实际需要作其它选择,比如4.000MHZ、3.58MHZ等等。你说的总线时钟就是单片机的时钟,与震荡频率有关。
2,for循环延时是无法直接精确计算的。要获得比较准确的时间,需要参考C平台编译后的汇编文件,按汇编文件的指令周期逐条计算时间,这样得出的结果相对比较精确。
2,for循环延时是无法直接精确计算的。要获得比较准确的时间,需要参考C平台编译后的汇编文件,按汇编文件的指令周期逐条计算时间,这样得出的结果相对比较精确。
追问
谢谢您的详细回答,其实我想问的是:
1、STC单片机的总线时钟和外部晶振是什么关系(具体数值关系),是不是1T单片机的时钟周期就是晶振频率分之一?
2、其实我的“精确延时”并不是那么精确,只要能够实现什么delay1ms,或者delayms()就行了。我的问题是:如何根据我的单片机的参数(比如几T啊、晶振啊)设计延时函数,包括用nop设计。
展开全部
普通51单片机12T,一个机器周期是12个时钟周期。
STC单片机1T,即一个机器周期是1个时钟周期。
一个时钟周期就是晶振频率分之一。
一个 nop 执行时间约为 0.09 uS (11.0592MHz 时)
STC单片机1T,即一个机器周期是1个时钟周期。
一个时钟周期就是晶振频率分之一。
一个 nop 执行时间约为 0.09 uS (11.0592MHz 时)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1. 有关。总线时钟是除以12(默认值,扩展51也可以有其它系数)得到的。标准51内核没有PLL模块。
2. 精确延时要以汇编运行结果为准。
2. 精确延时要以汇编运行结果为准。
追问
谢谢您的详细回答,其实我想问的是:
1、STC单片机的总线时钟和外部晶振是什么关系(具体数值关系),是不是1T单片机的时钟周期就是晶振频率分之一?
2、其实我的“精确延时”并不是那么精确,只要能够实现什么delay1ms,或者delayms()就行了。我的问题是:如何根据我的单片机的参数(比如几T啊、晶振啊)设计延时函数,包括用nop设计。
追答
1. 是的,对于1T单片机来说是如此。
2. 就像我说的那种试探法:先根据你的习惯写好循环,然后根据生成的汇编中每次循环的时间来推算合适的循环次数。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
话说我用了两年了 都不知道怎么用for精确延时
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询