我给你说说
如果用汇编语言来写一个简单的延时,我不知你会不会,如果不会,那你一定要去看一下,能基本看懂就会,如果一点不看,那对C的运行机理你是不可能理解的。这个学习是要花一点时间的。如果学习也是一个必要的过程,否则你以后还是要不断地回不过头来学。
汇编延时包括一些跳转指令,这个我就不说了,你回头看书去吧。在延时处理的中间,我们相当于加入了nop指令。
这个nop指令的执行速度是一个机器指令周期,一个机器指令周期多长? 你回头看看书。
现在的晶振是12MHz的,那你可以算出一个nop的指令执行时间?
先把for(i = 0; i < 120; i++);简单看成是执行120个nop指令(实际上是这个的3~6倍,我就不计算了)
那样算下来,你要运行多少次才可以足1ms呢? 1s = 1000ms = 1000 000us知道吧?
那需要延时处理再多的时间也就出来了,对么?
你看明白了么?
此后就是C语言的事情了。
unsigned char 代表什么意思,你明白了么?它的数据范围有多大?把一个很大的数放在在一很小的存贮范围内,如同把一桶水倒到一个杯子里一样,而且后果可能还会更加严重。
找本书看下,你很快就会明白的。明白了以上的问题,就可以解决你的问题了。
看过,问过,想过,做过,还不明白的话,再来这个坛子上问吧。 |