本帖最后由 kevinstar888 于 2012-5-11 09:11 编辑
我接触单片机也有一段时间,那时候用的是C语言,延时函数直接照搬就行了,根本就没想过这个问题,
现在来到新的公司,公司用的单片机资源很少,就必须用汇编,这段时间都在学汇编(其实我的C语言也不怎么样,呵呵)。
刚开始的时候,也是没注意延时问题。照着例子搬就是了。后来看到一个例子,需要几个不同的延时,例子上是先搞个这几个延时的基数,然后需要多久就乘以倍数就能得到需要的延时。
现在问题来了,我看了下延时部分,可是我不管怎么算,也对不上号,特来寻求指点。
延时部分程序如下:
D200:MOV R4,#81H; //1个指令周期
D200B:MOV A,#0FFH;//1个指令周期
D200A: DEC A; //1个指令周期
JNZ D200A; //2个指令周期
DEC R4; //1个指令周期
CJNE R4,#00H,D200B; //2个指令周期
RET;
延时T=2*2*FFH*81H=201FC=131580 uS
例子上说这个延时是200mS ,不知道我那里算错了,望指出。
--------------------------------------------------------------------------------------------------------------------------
PS:编辑原因,修改错别字
-----------------------------------------------------------------------------------------------------------------------
到此,问题已经得到完美解决,
感谢y574924080 的回答,同时也感谢其他的好心人
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
抱歉,我说C语言不怎么样,让你生气了,其实我少打了几个字,我没注意,现在改过来了。
我忘说了,晶振是12M,一个指令周期为1uS.
还有200ms的时间很长吗,我反正不觉得,我相信凡是接触单片机的人,都不会不知道流水灯吧!
流水灯的时间延时,一般都是1s,难道200ms比1s多?
一周热门 更多>