智慧团建网页电脑版登录网站,手机怎么做微信公众号,小程序开发多少钱,贵阳网站设计公司在单片机实验中#xff0c;有一个很重要也是很基本的子程序必须要求我们掌握#xff0c;那就是延时程序。下面我凭记忆来讲解延时程序。课本上讲#xff0c;1个机器周期6个状态周期12个时钟周期#xff0c;而这个时钟周期与晶振频率有关。我们接下来要上的实验基本都是以12…在单片机实验中有一个很重要也是很基本的子程序必须要求我们掌握那就是延时程序。下面我凭记忆来讲解延时程序。课本上讲1个机器周期6个状态周期12个时钟周期而这个时钟周期与晶振频率有关。我们接下来要上的实验基本都是以12MHz的晶振。12M的频率得其周期为1/12乘10的-6方s,那么1个机器周期就是它的12倍即1us,而一般语句需要2个机器周期例如MOV R6#20DNJZ R6$每一次执行时每一个过程就需要2个机器周期为1us乘2。.同样C语言中for循环语句没执行一次也是2个机器周期,即2us。下面我会以每个语句执行一次用时的2us为基本单位不会再细化了。汇编语言最基本延时MOV R6#20D1MOV R7#248DNJZ R7$//循环248次共用248X2us,DNJZ R6D1我开始也是搞不懂怎么算它到底延时多少现在给大家写它表达式:我觉得应该从最后往前算在MOR R7#248执行一次前提下用时1X2us,然后循环减248用时248X2us,故共用时[22X248]us。然而又由于DNJZ R6D1上面的过程又循环20次故上面的循环最终用时20X[22X248]us。接着注意到单纯DNJZ R6D1会用时20X240us。最后注意过执行唯一一次的 MOV R6#20会用时1X2us。所有最终表达式为1X2us20X[22X248]us20X210002us10ms0.01s。同理用c51编的延时程序要了解它必须也要写出它的表达式下面的C51延时程序可以试着自己写出表达式void delay02s(void){unsigned char i,j,k;for(i20;i0;i–)for(j20;j0;j–)for(k248;k0;k–);}我还是把表达式写在这[(248X22)X202]X20199240199.24ms0.2s再给一个我验证过的程序这是个比较典型和基本的延时程序应用例子#includesbit L1P0^0;void delay02s(void){unsigned char i,j,k;for(i20;i0;i–)for(j20;j0;j–)for(k248;k0;k–);}void main(void){while(1){L10;delay02s();L11;delay02s();}}能看出它的功能么他就是让一个灯不停的闪啊闪亮个0.2s,又熄个0.2s如此反复。