还剩16页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
I16-B PWMU PCAMPLEMENTINGIT SINGTHESILICON LABORATORIESThis application note used toregulate theRelevantDevices Backgroundappliesto thetemperature Figure1shows anfollowingdevices:example PWM waveform.The frequency of the PWMsignal of the classused infeedback controlC8051F000,C8051F001,C8051F002,applications islargely unimportant,as longas theC8051F005,C8051F006,C8051F010,C8051F011,waveform isfast enough\such that the stepresponseand C8051F
012.of thecontrol systemis muchslower thanone period ofthe PWMsignal.Signal informationis encodedinsteadin the duty cycle of the waveform,the ratioof the timeIntroductionthe waveform is highover oneperiod of the PWMPulse-width modulatedPWM waveformsare oftensignal.The inputto the PWM implementationis ausedin closed-loop feedbackand controlapplications,number,usually aninteger,that isproportional tothesuch ascontrolling theon/off stateof aheating elementduty cycledesired at the output.of a,laser ina DWDMDense WavelengthDivisionMultiplexingy application.Tn someapplications,Implementationthe built-in8-bit PWM mode of the Programmablewaveform in an8051-based design:software loops,Counter ArrayPCA providesinsufficient resolutionpolledor interrupt-driven timers,etc.The examples infor thetask.Thisapplicationnote describeshow tothis noteusethe ProgrammableCounter ArrayPCA.implement a PWMwaveformachieving16-bitUsing the PCA forthis applicationresults inaresolution usingthe PCAin High-Speed Output9modesubstantial reductionin CPU bandwidth requirementswithminimal softwareoverhead.Software examplesoverany polledscheme softwareor timer-based,andin Cand assemblyare providedat theend ofthis note.eliminates timingjitter causedbyThere aremany methodsfor implementinga PWMtudutycycle tpX二—tpFigure
1.Example PWMWaveform--------------------------------------------------------------------------------------------------------------------------------------------------------////Includes--------------------------------------------------------------------------------------------------------------------------------------------------------//#include c8051f
000.h//SFR declarations////Global CONSTANTS//#define PWM_START0x4000//starting value for thePWM//high timesbit PWM OUT=P0A0;//define PWMoutput port pin////Function PROTOTYPES//void mainvoid;void PCAISR void;//PCA InterruptService Routine////Global VARIABLES//unsigned PWM=PWM START;//Number of PCA clocks for//waveform to be high//duty cycle=PWM/65536//Note:this isa16-bit value////MAIN Routine//void mainvoid{//configure the PCAPCA0MD=0x02;WDTCN=Oxde;//Disable watchdogtimerWDTCN=Oxad;PCA0CPL0=Oxff PWM;OSCICN=0x07;//set SYSCLKto16MHz,//PCA0CPH0=Oxff internal osc.PWM»8;PCA0CPM0=0x4d;XBR0=0x08;//enable CEX0at P
0.0XBR2=0x40;//disable CFinterrupt//enable crossbarand weak////PCA time base=SYSCLK/4pull-ups//initialize PCAcompare valuePRT0CF=0x01;//set P
0.0output stateto//push-pull//CCM0in High SpeedPRT1CF=0x20;//set Pl.6output tooutput mode//push-pull LEDEIEl|=0x08;//enable PCA interruptEA=1;//Enable globalinterruptsPCAOCN=0x40;//enable PCA counterwhile1{PCON|=0x01;//set IDLEmode////PCA_ISR//——////This ISRis calledwhen thePCA CCM0obtains a match//PWM_OUT isthe CEX0port pinthat holds the stateof thecurrent edge://1=rising edge;0=falling edge//On therising edge,the compare registers areloaded withPWM_HIGH.//On the falling edge,the compare registers areloaded withzero.//void PCA_ISR voidinterrupt9—if CCF0{CCF0=0;//clear compareindicatorif PWMOUT{//process rising edgePCA0CPL0=OxffPWM;//set nextmatch to PWMPCA0CPH0=OxffPWM»8;}else{//process falling edgePCA0CPL0=0;//set nextmatch tozeroPCA0CPH0=0;}}else ifCCF1//handle otherPCA interruptCCF1=0;//sources}else ifCCF2CCF2=0;}else ifCCF3CCF3=0;}else ifCCF4CCF4=0;}else ifCF{CF=0;***END OFFILE***PWM16_
1.asmCYGNAL,INC.FILE NAME:pwml6_l.ASMTARGET MCU:C8051F000,F001,F002,F005,F006,F010,F011,or F012DESCRIPTION:Example sourcecode forimplementing16-bit PWM.The PCAis configuredin highspeed output mode usingSYSCLK/4as itstime base.PWM holds the number of PCA cycles for the output waveformto remain high.The waveform is low for65536-PWM cycles.The dutycycle of the output is equal to PWM/
65536.Due tointerrupt service times,the minimumvalue for PWM is7PCAcycles,and the maximum value is
65529.This equatesto aminimum dutycycle of
0.01068%and amaximum duty cycle of
99.9893%.12If thePCA time base ischanged toSYSCLK/fthemin and max valuesfor PWM changeto3and65533respectively,for minandmaxduty cyclesof
0.0046%and
99.9954%respectively.Processing therising edgeinterrupt handlertakes18cycles.Processing thefalling edgeinterrupt handlertakes19cycles.One interrupthandler is called foreach edge,and there are2edgesfor every65536PCA clocks.Using SYSCLK/4as thePCA time base,thatmeans that37cycles areconsumed foredge maintenancefor every65536*4=262,144SYSCLK cycles,not countingvectoring the interrupt.CPU utilizationis37/262,144*100%=
0.0141%Using SYSCLK/12as thePCA timebase,37cycles areconsumed foredgemaintenance forevery65536*12=786,432SYSCLK cycles.CPUutilization is37/786,432=
0.0047%.The period of thewaveformis65536PCA clocks.UsingSYSCLK/4as thePCA time base,the periodis262,144SYSCLK cycles.Using thedefault internal oscillator at2MHz,the periodis131ms
7.6Hz.Using the16MHz internaloscillator asin thisexample,theperiod is
16.4us61Hz.Using SYSCLK/12as thePCA time base,the periodis65536*12=786,432SYSCLK cycles.Using thedefault internaloscillator at2MHz,theperiod is393ms
2.5Hz.Using the16MHz internaloscillator,theperiod is
49.2ms20Hz.In thisexample,the outputis routedtoP
0.0,which isalso labeledPWMOUT.;EQUATES$MOD8FOOOPWM EQU32768;Number of PCA clocksfor waveform;to behigh;duty cycle=PWM/65536;max=
6552999.9893%duty cycle;min=
70.01068%duty cycle;Note:this isa16-bit constantPWMOUT EQUPO.0;RESET ANDINTERRUPT VECTORTABLECSEGorg OOhIjmpMainorg04bhIjmp PCA_ISR;PCA InterruptService Routine;MAIN PROGRAMCODEorg0b3h;start atend ofinterrupthandler;spaceMain:;Disable watchdogtimermov WDTCN,#0dehmov WDTCN,#0adh;Enable theInternal Oscillatorat16MHzmov OSCICN,#07h;Enable theCrossbar,weak pull-ups enabledmov XBRO,#08h;route CEXOto PO.0mov XBR2,#40horl PRTOCF,#01h;Configure Port
0.0as Push-Pull;define PWMoutput port pin;Configure thePCAmov PCAOMD,#02h;disable cfinterrupt,;PCA time base=SYSCLK/4mov PCA0CPL0,#LOWPWM;initialize thePCA comparevaluemov PCA0CPH0,#HIGHPWMmov PCA0CPM0,#4dh;CCMO in High Speedoutputmode;Enable interruptsorlEIE1,#08h;Enable PCAinterruptsetb EA;Enable globalinterruptsmov PCAOCN,#40h;enable PCAcounterjmp$;CCFO InterruptVector;This ISRis calledwhen thePCA CCMOobtains amatch;PWM_OUT isthe CEXOportpinthat holdsthe stateof thecurrent edge:;1=rising edge;0=falling edge;On therising edge,the compare registers areloaded withPWM HIGH.////PCA_ISR://jbc CCFO,CCFO_HNDL;handle CCFOcomparison//jbc CCF1PCA_STUB;stub routines//Zjbc CCF2,PCA_STUB//jbc CCF3,PCA_STUB//jbc CCF4,PCA_STUB////jbc CF,PCA_STUB;On thefalling edge,the compare registers areloaded withzero.////PCA_STUB://PCA_ISR_END://retiCCF0_HNDL:jnb PWM_OUT,CCF0_FALL;handle rising edgeCCF0_RISE:mov PCAOCPLO,#LOWPWMmov PCAOCPHO,#HIGHPWMretiCCF0_FALL:;handle falling edgemov PCAOCPLO,#00mov PCAOCPHO,#00reti;rising edgetakes4+3+11=18cycles;falling edgetakes4+4+11=19cyclesEND;***END OFFILE***PWMn_
1.cII//PWMn_l.c//////AUTH:BW////Target:C8051F000,F001,F002,F005,F006,F010,F011,or F012//Tool chain:KEIL C51////Description://Example sourcecode forimplementing ann-bit PWM.//The PCAis configuredin highspeed outputmode using//SYSCLK/4as itstimebase.PWM_HIGH holdsthe numberof//PCA cycles for the output waveform to remainhigh.//PWM_LOW holdsthe numberofPCA cyclesfor the output//waveform to remain low.The duty cycle of the output//is equalto PWM HIGH/PWMHIGH+PWM LOW.Due tointerrupt servicetimes,there areminimum and maximum valuesforPWM_HIGH and PWM_LOW,and thereforethe duty cycle,depending oninterrupt servicetimes.Regardless oftheefficiency of the compiler,duty cyclesbetweenl%and99%should bevery easyto achieve.With theeval versionof theKeil compiler,the minimumlowcounts are20PCA cycleseach maxfrequency100kHz w/16MHz internalSYSCLK.Thisassumes interruptsbeing serviced,and PCA timebaseis
4.high andisabout//no other//IncludesSYSCLK///////Global CONSTANTS//#define PWM_START0x8000//starting value for the#include c8051f
000.h//SFR declarations//PWM_HIGH timeandPWM_LOW timesbit PWM_OUT=P0A0;//define PWMoutput portpin////Function PROTOTYPES//void mainvoid;void PCAISR void;//PCA InterruptService Routine////Global VARIABLES//unsigned PWM_HIGH==PWM_START;//Number ofPCA clocksfor//waveformto behigh〜unsigned PWM_LOW=PWM_START;//Number ofPCA clocksfor//waveform to be low//duty cycle=//PWM_HIGH/PWM_HIGH+PWM_LOW////MAIN Routine//void mainvoid{WDTCN=Oxde;//Disable watchdogtimerWDTCN=Oxad;OSCICN=0x07;//set SYSCLKto16MHz,//internalosc.//enable CEX0at P
0.0XBR0=0x08;//enable crossbarand weakXBR2=0x40;//pull-upsPRTOCF=OxOl;//set PO.0outputmodeto//push-pullPRT1CF=0x20;//set Pl.6output to//push-pull LED//configure thePCA PCAOMD=0x02;//disable CFinterruptPCAOCPLO=OxffPWM_HIGH;//PCA timebase=SYSCLK/4PCAOCPHO=OxffPWM_HIGH»8;//initialize PCAcompare valuePCAOCPMO=0x4d;//CCMO inHighSpeedoutput modeEIE1|=0x08;//enable PCAinterruptEA=1;//Enable globalinterruptsPCAOCN=0x40;//enable PCAcounterwhile1{PCON|=0x01;//set IDLEmode////PCA_ISR//——////This ISRiscalledwhen thePCA CCMOobtains amatch//PWM_OUT isthe CEXOportpinthat holdsthe stateof thecurrent edge://1=risingedge;0=fallingedge//On therisingedge,the compare registers areupdated totrigger for the//next fallingedge.//On thefallingedge,the compare registers areupdated totrigger for the//next risingedge.//工void PCA_SR voidinterrupt9—unsigned temp;//holding valuefor16-bit mathifCCF0{CCF0=0;//clear compareindicatorif PWMOUT{//process risingedge//update comparematch fornext fallingedgetemp=PCAOCPHO8|PCAOCPLO;//get currentcomparevaluetemp+=PWM_HIGH;//add appropriateoffsetPCAOCPLO=Oxfftemp;//replace comparevaluePCAOCPHO=Oxfftemp»8;}else{//process fallingedge//update comparematch fornext risingedgetemp=PCAOCPHO8|PCAOCPLO;//get currentcompare valuetemp+=PWM_LOW;//add appropriateoffsetPCAOCPLO=Oxfftemp;PCAOCPHO=Oxfftemp»8;//replace comparevalue}else ifCCF1CCF1=0;}else ifCCF2CCF2=0;}else ifCCF3CCF3=0;}else ifCCF4CCF4=0;//handle otherPCAinterrupt//}else ifCF{CF=0;sources//***END OFFILE***Contact InformationSilicon Laboratories Inc.4635Boston LaneAustin,TX78735Tel:1+512416-8500Fax:1+512416-9669loll Free:1+877444-3032Email:Internet:The informationin thisdocument isbelieved tobe accuratein allrespects atthe time of publicationbut issubject tochange withoutnotice.SiliconLaboratories assumes no responsibility for errorsand omissions,and disclaimsresponsibility for any consequencesresulting from the use ofinformation includedherein.Additionally,Silicon Laboratoriesassumesnoresponsibilityforthe functioningof undescribedfeatures orparameters.Silicon Laboratoriesreserves theright tomake changeswithout furthernotice.Silicon Laboratoriesmakes nowarranty,representation orguarantee regardingthe suitabilityof itsproducts for any particularpurpose,nor doesSilicon Laboratoriesassume anyliabilityarising outof theapplication oruseof any productor circuit,and specificallydisclaims anyand allliability,including withoutlimitationconsequential orincidental damages.Silicon Laboratories products arenot designed,intended,or authorizedfor usein applicationsintended tosupportor sustainlife,or forany otherapplication inwhich thefailure of the Silicon Laboratoriesproductcould createa situationwhere personalinjuryor deathmay occur.Should Buyerpurchase oruse SiliconLaboratories productsforanysuch unintendedor unauthorizedapplication,Buyer shallindemnify andhold SiliconLaboratories harmlessagainst allclaims anddamages.SiliconLaboratoriesand SiliconLabs are trademarks ofSiliconLaboratoriesInc.Other productsor brandnamesmentioned hereinaretrademarksor registeredtrademarks oftheir respectiveholders.variable interruptlatency ininterrupt-driven control,for example.Or,because eachmodule has itstimerbased designs.own control and capture/compareregisters,it canoperate independently ofthe othermodules,as longasthe routinesforanymodule donot affectthe sharedAnIntroduction tothe PCAtimebase bystopping orresetting thecounter/timer orThe PCA consistsofasingle16-bit counter/timer andbychanging thecounter/timer clock source.five capture/compare modules,as shown in Figure
2.The counter/timer has a16-bit timer/counter registerThe examplesin this noteconfigure thePCA modulesPCA0H:PCA0L,an associatedmode registerto act independently;the routinesfortheallocatedPCAOMD,which selects thetimebase,and acontrolmodule affectonly theconfiguration registerand theregisterPCAOCN,which containsthe timer/countercapture/compareregisterfor thatmodule.The PCAruncontroland the mod-ules capture/compare flags.Mode RegisterPCAOMD is configured once,thenEach capture/compare modulehasaconfigurationleft alone,andthetimer/counter registerregisterPCAOCPMx whichselectsthe modulesPCA0H:PCA0L isleft free-running.mode Edge-triggered Capture,Software Timer,High-Speed Output,orPWMand a16-bitSelecting thePCA TimeBasecapture/compareregisterPCAOCPHn:PCAOCPLn.The PCAtimebasecan bederived fromone offourBecause the capture/compare modulesshare asources:SYSCLK/12,SYSCLK/4,TimerOcommon timebase,they canoperateinconcert,to overflows,or high-to-low transitionson anexternal pin,provide phase-locked excitationwaveforms formotorCrossbarPort I/OFigure
2.PCA BlockDiagramECL Ablock diagramofthePCAcounter/timer isshown in Figure
3.As willbe shown in thefollowing sections,theselection ofthePCAtimebasedetermines theresultingfrequencyofthePWMwaveform.Asmentioned earlier,the frequencyofthePWMwaveform isgenerally notimportant,so longasitisfast enough\One timingoption thatisnotimmediately obviousisthat thePCA can be clockedattheSYSCLK ratebyselecting TimerOoverflows as thePCA clocksource,and settingTimerO in8-bit auto-reload modewith areloadvalue ofc0xFF\Theexamplesin this note allconfigure thePCA touseSYSCLK/4as thePCA clocksource.IDLEFigure
3.PCA Counter/Timer BlockDiagramPCAOCPHn.The copyingprocess ensuresglitch-free8-Bit PWMUsing thePCAtransitions atthe output.Wfe firstpresent amethod forgenerating aPWMwaveform with8-bit precision,for completeness,andThe duty cycle ofthe output waveformin%is giventointroduce thePWMmodeofthePCA.by:In thismode,thecapture/compare moduleis,--256-PCAOCPHnv dnnconfiguredin PWMmode as shownin Figure
4.The dutycycle=X100periodofthewaveformat CEXnis equalto256PCAclocks.The low-timeofthe signalat CEXnis equaltothe8-bit valuestored in the low-byte ofthe modulesBecausePCAOCPHn cancontain avalue between0capture/compareregister PCAOCPLn.Thisand255,the minimum and maximumprogrammablerelationship isshowninFigure
5.duty cycles are
0.38%PCA0CP0H OxFFto100%二PCA0CP0H=0x
00.The resolutionoftheduty cycleAtevery overflowofthe low-byte ofthe mainPCAselection is:counter PCAOL,the high-byte ofthe modulescompareregister iscopied intothelow-byte ofthe1modules compareregisterPCAOCPLn=resolution----X100=
0.38PCAOCPHn.The dutycycle ischanged byupdating256PCAOCPHn Thekey advantageof8-bit PWMmode isthat no CPUCEXnV----------------Aintervention isrequired tomaintain anoutputwaveform ofa fixed dutycycle.In fact,if theCIDL bit256PCA0MD.7is setto ORESET state,the outputFigure
5.Output Waveformin8-Bitwaveform willbe maintainedeven if the CPUis inPWMModeIDLE mode.Figure
4.PCA Configurationin8-Bit PWMModeChanging thedutycycleis implementedby asingle・16B PWMUsing thePCA8-bit write to PC\0CPHn.lb implementaPWMwaveform with16-bitAn exampleof8-bit PWMmode isincluded in the fileprecision,we configurea PCA module inPWM
81.c9attheend ofthisnote.High-Speed Outputmode,asshowninFigure
6.Inthis mode,the CEXn pin istoggled,and anoptionalAdditional noteson8-bit PWMmode:interrupt isgenerated,each timeamatchoccursbetween themain timer/counter register
1.The outputCEXn canbe heldlow byclearing thePCAOH:PCAOL andthe modulesECOMnbit PCAOCPMn.6in the modulecapture/compare registerconfigurationregister.This allowsa0%dutyPCA0CPHn:PCA0CPLn.cycle waveform tobegenerated.Normal PWMoutputcanberesumed bywriting aT tothis bitIn the example code,the interrupthandler fortheOR bywriting anyvalue toPCAOCPHn.PCA moduleis implementedin twostates:arisingedge stateand afalling-edge state,depending
2.Setting theMATn andECCFn bitsPCA0CPMn.3on whichedge onCEXn initiatedthe interrupt.Noteand PCAOCPMn.O respectivelyto1will causethat the actualCEXnpinis decodedasthestatean interrupttobegenerated onthefallingedge ofvariable.CEXn.During therising-edge state,the modulescapture/compareregisteris updatedwith the compare valueforthe nextfalling-edge thisvalue iscalled PWMinthe attachedexamplecode.During thefallingedgestate,themodulescapture/compareregisterisWritetoFigure
6.PCA ConfigurationinHigh-Speed OutputModeloaded withthecomparevalueforthe nextrisingedge,is minimal.Intheassembly example,processing bothwhichis zero0x
0000.This isshowninFigure
7.edges takesa totalof41SYSCLK cycles,not countingNotethat theperiodofthePWMwaveformis65536theinterruptcall andvector itself.Both edgesmust bePCA clocks.processed every65,536PCA clocks,or65,536*4=262,144SYSCLKs,ifthePCAclockis equaltoThe dutycycle in%is givenby:SYSCLK/
4.CPUbandwidthconsumed in%isequal to41/262,144*100=
0.015%.PWMdutycycle=X10065536Also notethattheCPU canbe leftin IDLEmode,as isdonein theexamples,since thePCAmoduleinterruptwill wakeup thecore whenrequired forprocessing.The minimum andmaximumallowed dutycycles aredeterminedby themaximum timeit takesto updatetheThe dutycycle canbe changedby asingle16-bit writecomparevalue afterCEXn changeswhich triggerstheto thevariable PWMintheexamples.process interrupt,In boththe‘C examplecode andtheassembly examplecode pwml6_
1.c9and pwml6_
1.n-Bit PWMUsing thePCAasm9respectively,the minimumvalueforPWM is7PCA clocks28SYSCLK cyclesin thiscase.This Ageneralized caseof16-bit PWM,we presentn-Bitresults inminimumandmaximum dutycycle valuesof PWMfor applicationsrequiring morethan8-bits of
0.01%and
99.99%respectively.The resolutionof theprecisionbut lessthan16-bits ofprecision.Oneduty cyclein%is:motivation foradopting then-Bit approachis toachievea higheroutput frequencyfromthePWM thancanbe obtainedinthe16-bit implementation.resolution X100=
0.001565536In thisexample cPWMn_l.c9two16-bit variablesare,used:PWM_HIGH,which holdsthe numberof PCAclocksforthe output waveformto remainhigh,andPWM_L0W,which correspondinglyholdsthe numberor about15ppm partsper million.ofPCA clocksfortheoutputwaveformto remain low.The periodof theTheCPU overheadrequired toprocess theseinterruptsinterrupt interruptcalledcalledFigure
7.Capture/Compare RegisterLoading for16-Bit PWMSoftwareExamplesPWM8_
1.cii//PWM8_
1.c//////AUTH:BW////Target:C8051F000,F001,F002,F005,F006F010,F011,or F012z//Tool chain:KEIL C51////Description://Example sourcecode forimplementing8-bit PWM.//The PCAis configuredin8-bit PWMmode using//SYSCLK/4as itstimebase.PWM holdsthenumberof//PCAcyclesfortheoutputwaveformtoremainlow per256-//count period.The waveformis highfor256-PWM cycles.・//The dutycycle oftheoutputis equalto256-PWM/256////Because the8-bit PWMis handledcompletely inhardware,//noCPUcyclesareexpended inmaintaining afixedduty//cycle.Altering thedutycyclerequires asingle8-bit//writetothe highbyte ofthemodule7s compareregister,//PCAOCPOH,inthisexample.////Achievable dutycycle rangesare
0.38%PCA0CP0H=Oxff//to100%PCA0CP0H=0x
00.//////Includes//#include c8051f
000.h//SFR declarations////Global CONSTANTS//#define PWM0x80//Number ofPCAclocksfor//waveformtobe low//dutycycle=256-PWM/256//Note:this isan8-bit value////Function PROTOTYPES//void mainvoid;////MAIN Routine//void mainvoid{//Disable watchdogtimerWDTCN=Oxde;WDTCN=Oxad;//set SYSCLKto16MHz,//internalosc.OSCICN=0x07;//enable CEX0at P
0.0//enable crossbarand weak//pull-upsXBRO=0x08;//set P
0.0output stateto//push-pull6XBR2=0x40;//set Pl.output to//push-pull LEDPRTOCF=0x01;//configure thePCA PCA0MD=0x02;PRT1CF=0x20;PCA0CPL0=PWM;PCA0CPH0=PWM;PCA0CPM0=0x42;PCA0CN=0x40;//disable CFinterruptwhile1{PCON|=0x01;//PCAtimebase=SYSCLK/4//initialize PCAPWM value}//***END OFFILE***//CCM0in8-bitPWMmodePWM16_
1.c//enable PCAcounteru//PWM
161.c//set IDLEmodeAUTH:BWTarget:C8051F000,F001F002,F005,F006,F010,F011,or F012Tool chain:KEIL C51zDescription:Example sourcecode forimplementing16-bitPWM.ThePCAisconfiguredinhighspeed outputmode usingSYSCLK/4as itstimebase.PWM//holdsthenumberofPCAcyclesfortheoutputwaveformtoremainhigh.The waveformis//lowfor65536-PWM cycles.The dutycycleoftheoutputisequaltoPWM/
65536.////Due tointerrupt servicetimes,thereareminimumandmaximum valuesforPWM,and therefore//thedutycycle,depending oninterruptservicetimes.On theKeil C51compiler Eval//version,the minimumPWM valueis7PCAclocks;themaximumvalueis
65530.This equates//toaminimum dutycycleof
0.01%and amaximum dutycycleof
99.99%.This assumesa PCA//timebaseof SYSCLK/4and noother interruptsbeing serviced.//////////////////////////////。