延時子程式計算方法

2022-03-01 20:09:53 字數 980 閱讀 2672

學習mcs-51微控制器,如果用軟體延時實現時鐘,會接觸到如下形式的延時子程式:

delay:mov r5,#data1

d1:mov r6,#data2

d2:mov r7,#data3

d3:djnz r7,d3

djnz r6,d2

djnz r5,d1

ret其精確延時時間公式:t=(2*r5*r6*r7+3*r5*r6+3*r5+3)*t

表示乘法,t表示乙個機器週期的時間)

近似延時時間公式:t=2*r5*r6*r7 *t

假如data1,data2,data3分別為50,40,248,並假定微控制器晶振為12m,乙個機器週期為10-6s,則10分鐘後,時鐘超前量超過1.11秒,24小時後時鐘超前159.876秒(約2分40秒)。

這都是data1,data2,data3三個數字造成的,精度比較差,建議c描述。

上表中e=-1的行(共11行)滿足(2*r5*r6*r7+3*r5*r6+3*r5+3)=999,999

e=1的行(共2行)滿足(2*r5*r6*r7+3*r5*r6+3*r5+3)=1,000,001

假如微控制器晶振為12m,乙個機器週期為10-6s,若要得到精確的延時一秒的子程式,則可以在之程式的ret返回指令之前加乙個機器週期為1的指令(比如nop指令),data1,data2,data3選擇e=-1的行。比如選擇第乙個e=-1行,則精確的延時一秒的子程式可以寫成:

delay:mov r5,#167

d1:mov r6,#171

d2:mov r7,#16

d3:djnz r7,d3

djnz r6,d2

djnz r5,d1

nop注意不要遺漏這一句

ret附:

#include""

#include""

int x=1,y=1,z=1,a,b,c,d,e(999989),f(0),g(0),i,j,k;

void main()

儲量計算方法和程式

一 工業指標 1 阿舍勒銅礦床一般工業指標 2 阿舍勒銅礦伴生組份綜合評價最低指標 3 阿舍勒銅礦銅礦石品級分類指標 二 計算方法 使用垂直縱投影法 圖上標明平均水平厚度和平均品位。三 引數確定 計算程式常採用三個基本公式 v sxm q vxd p qxc 式中 v 體積 m 平均厚度 q 礦石量...

明渠均勻流計算方法及程式

明渠均勻流水力計算方法及basic程式使用說明 明渠均勻流水力計算的主要內容包括如下兩個方面 一是校核已成渠道的過水能力 或者由實測流量資料確定已成渠道的糙率 二是設計新的渠道即確定底寬 b 或水深 h 或底坡 i 為了應用方便,這兩類問題可以彙編成乙個電算程式來解決。一 明渠均勻流水力計算的數學公...

工程量計算方法及程式

工程量計算方法及程式 1 第一節關於核量工長工作程式 1 第二節工程量計算 4 第三節三方核量 擴充套件到整個工程核量問題 11 第四節工程量計算總原則 13 第五節辦理洽商應注意事項 13 第六節實際工程舉例 15 招標檔案重點是看招標範圍 答疑檔案 合同形式 總價合同還是單價合同 清單編制說明 ...