|
利用軟件循環(huán)方法進(jìn)行延時的延時時間計算方法 本計算方法很簡單,特別在做各種時序的延時時,非常方便和準(zhǔn)確。 當(dāng)硬件晶振實際安裝和軟件編程都設(shè)定為24MHz時,適合本計算方法。當(dāng)硬件晶振實際安裝和軟件編程都設(shè)定為12MHz時,延時時間會增大一倍,計算時公式中的us量均增加一倍。 本計算方法在循環(huán)次數(shù)在255以內(nèi),計算沒有誤差,當(dāng)循環(huán)次數(shù)達(dá)到256時將有0.5us誤差,隨著循環(huán)次數(shù)繼續(xù)增大,誤差還將繼續(xù)增加,當(dāng)循環(huán)次數(shù)達(dá)到2560時將有5us誤差,這個誤差量是可以忍受的。 ...... void Delay1us(unsigned int i) { while(i--); } ...... { Delay1us(80); ...... } 當(dāng)晶振為24MHz時的計算公式 設(shè):X=計劃延時時間值 i=循環(huán)次數(shù)值 已知:循環(huán)次數(shù)i=80,求:延時時間X值 解:X=12.5us+4.5us(i-1) X=12.5us+4.5us(80-1) X=12.5us+4.5us*79 X=12.5us+355.5us X=368us 已知:延時時間X=368us,求:循環(huán)次數(shù)i值 解:i=(X-12.5us)/4.5us+1 i=(368us-12.5us)/4.5us+1 i=355.5us/4.5us+1 i=79+1 i=80 當(dāng)晶振為12MHz時的計算公式 設(shè):X=計劃延時時間值 i=循環(huán)次數(shù)值 已知:循環(huán)次數(shù)i=80,求:延時時間X值 解:X=25us+9us(i-1) X=25us+9us(80-1) X=25us+9us*79 X=25us+711us X=736us 已知:延時時間X=368us,求:循環(huán)次數(shù)i值 解:i=(X-25us)/9us+1 i=(736us-25us)/9us+1 i=711us/9us+1 i=79+1 i=80
|