目前为止,我还没有用过没有定时器的单片机
对于一个单片机程序,延时时间达1秒的,肯定是不能用软件延时的,难道你要让程序什么都不做,就在那干等1秒吗?
像18b20p 这种需要那么长时间的时序,肯定是要通标志位或者全局变量来处理时序的嘛
如果非得执着于软件延时1秒,那仿真肯定不行,就像说的一样,STM32有仿真,那别的单片机不一定能仿真
那肯定是示波器了
先随便写一个延时函数,大概是1mS左右,然后用示波器看一下这1mS的真正延时,不断的调整,直到最接近1mS然后把这个延时循环放到另一个循环中,参数调用就行了
假设,我已经调节好了一个1mS延时,它是这样的
i = 32;
j = 40;
do
{
while (--j);
} while (--i);
那就把这循环放到另一个循环中,做成一个函数就可以了,
这样的函数调用参数会用到一定的时间,整个延时的时间可能会有误差,再通过微调就差不多了
void Delay_ms(unsigned int a)
{
unsigned char i, j;
for(a;a>0;a--)
{
i = 32;
j = 40;
do
{
while (--j);
} while (--i);
}
}
|