首先,从板hxddr可知,时钟频率为12MHz(=0.08us=0.1us ),板上长方形金属壳体上有标记(或看原理图)
从ISP软件延迟计算机获得循环代码
运行_nop_ ()必须包含库#include INTRINS.H
void Delay500ms ()//@12.000MHz )无符号chari,j,k; _nop_ (); _nop_ (); i=23; j=205; k=120; do{do{while (--k ); (while(-j ); (while(--I ); }百度表示,计算周期数23205120=565,80012 MHz=0.04715 s和500ms不一致,这表明一个for语句占用10T
10计算的0.4715s大致符合500ms=0.5s。 突然原件以do while格式准确延迟了这篇文章【51单片机】的延迟函数计算问题和https://blog.csdn.net/wait _ for _ taht _ day5/article/de eay 5
当for只在一楼循环时,在奔跑的马灯下效果较慢的void delay () ({ unsigned int i; for(I=0; i 50000; I; }本例双重for循环赋值上述公式为0.1s void delay () { unsigned int i,j; for(I=0; i 1000; I ) for ) j=0; j 110; j; 改写do while格式输入如下:首先生产1ms码,参考b站视频51单片机入门教程-2020版程序全程纯手工从头入门
51单片机入门教程-2020版程序全程纯手工从零开始入门
void Delay1ms ()//@12.000MHz )无符号chari,j; i=12; j=169; do{while (--j ); (while(--I ); 1ms程序叠加在xms上,voidDelay1ms(unsignedintXMS )12.000MHz ) unsignedcharI,j; wile(XMS ) ) {i=12; j=169; do{while (--j ); (while(--I ); XMS----; }查看程序代码后,do while应该更有效率,但计算时间应该与for相同