用软件仿真可以计算出来,写一个简单的程序如下
#include<reg51.h>
sbit d1=P1^0;
void delay(unsigned int i)
{
while(i--);
}
void main()
while(1)
d1=0;
delay(10000);
d1=1;
方法如下
用kell软件编译后,打开软件仿真最好看的哪个,然后在d1=1,这条语句设置断点,点全速运行,观察左边的框中sec后面的数值
比如sec 0.098456.大约为98个毫秒,这种方法不能准确地定时,只能是大概的,如果想要准确定时,可以用定时器。
你好,如果你用的是STC单片机的话可以直接用官方提供的ISP软件计算,其他单片机的话就要自己去摸索了,另外如果确实对时间精度要求比较高,建议还是用定时器去实现:
单片机的程序 在编译器中都会被编译成相应汇编指令 每个汇编指令的执行时间由于 cpu的主频相关 主频又会和晶振有关系
这个问题我也提出过,你可以去单片机板块看看,答案只有看你转成的汇编了,要是你用的老的89系列的单片机可以用keil的时间看看,但是你要是用的stc的最好用官方的提供的延时程序了,SingleYork已经回答你了, 或者你用这种
void delay_ms(unsigned char ms) { unsigned int i; do { i = MAIN_Fosc / 13000; while(--i) ; //14T per loop }while(--ms); } 这用也可以,不过我也没弄明白这个13000怎么来的
void delay_ms(unsigned char ms) { unsigned int i; do { i = MAIN_Fosc / 13000; while(--i) ; //14T per loop }while(--ms); }