资源描述:
《单片机中延时算法和nop函数的使用(the delay algorithm and the use of nop function in single chip microcomputer)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、单片机中延时算法和nop函数的使用(ThedelayalgorithmandtheuseofNOPfunctioninsinglechipmicrocomputer)TheuseofNOPfunctionanddelaycalculationinClanguageofsinglechipmicrocomputerThereisnonullstatementinthestandardClanguage.ButintheCprogrammingofthesinglechipmicrocomputer,theeffectofshortdelayisoftenrequiredwithafewempty
2、instructions.Thisiseasytoimplementinassemblylanguage.Justwriteafewnop.InkeilC51,thelibraryfunctioniscalleddirectly:#include//void_nop_(void)statement;(_nop_);//createaNOPinstructionRole:foraveryshortdelay,requiredintheUSlevel,usingthe"_nop_"function,thisfunctionisacompilationofNOPinstruct
3、ions,delayafewmicroseconds.TheNOPinstructionisasinglecyclecommand,thedelaytimecanbecalculatedbythecrystaloscillatorfrequency,andthetimedelayis1uSforthe12Mcrystaloscillator.Forlongerlatency,therequirementisgreaterthan10us,usingC51intheloopstatementtoachieve.WhenyouchoosealoopstatementinC51,youshouldp
4、ayattentiontothefollowingquestionsFirst,definethecyclicvariablesinC51,anduseunsignedcharactervariablesasmuchaspossible.Second,intheFORstatement,howtodoasfaraspossibletheuseofvariablecycle.Third,atdo...While,awhilestatement,thevariableisusedbythebodyoftheloopmethod.ThisisbecauseintheC51compiler,diffe
5、rentloopsareusedwithdifferentinstructions.Herearesomeexamples:UnsignedcharI;For(i=0;i<255;i++);UnsignedcharI;For(i=255;i>0;i--);Ofthese,thesecondloopstatement,C51,iscompiledwiththeDJNZinstruction,whichcorrespondstothefollowinginstructions:MOV,09H,0FFHLOOP:DJNZ,09H,LOOPTheinstructionsarefairlyconcise
6、andwellcalculatedforaccuratetimedelays.Samefordo...ThesameistrueinthewhileandwhileloopstatementsCases:Unsignedcharn;N=255;Do{n--}While(n);orN=255;While(n){n--};ThesetwoloopstatementsarecompiledbyC51toformamethodforDJNZtocomplete,Therefore,thecalculationofitsprecisetimeisalsoveryconvenient.Third:forl
7、ongerprecisionandlongerdelay,nestedloopsareusedThemethodisimplemented,soloopnestingmethodsarecommonlyusedtoachievemsleveldelays.Forloopstatements,youcanalsousefor,do...While,whilestructuretofinishVari