單片機查表程序的自動生成技術(shù)
利用以上程序,計算時輸入文件名為A.ASM,Vmax=3,得至的A.ASM的內(nèi)容如下(共90行表格,略去其中的大部分表格):
;A.ASM
SUB1 MOVWF BUF
SUBLW .90
BTFSS STATUS,C
RETLW .0
MOVLW HIGH($+4)
MOVWF PCLATH
MOVF BUF,W
ADDWF PCL,F(xiàn)
RETLW .0;0
RETLW .5;1
……
RETLW .90;72
RETLW .86;73
RETLW .81;74
……
RETLW .11;88
RETLW .5;89
RETLW .0;90
把以下程序插入單片機程序的適當(dāng)?shù)胤剑?a class="contentlabel" href="http://www.ex-cimer.com/news/listbylabel/label/查表">查表時中要賦以W相應(yīng)的值,再CALL
SUB1就可以得到sin(x)第W點上的值。整個計算約10個指令周期(如采用4MHz晶振,為10μs左右)。如果采用乘除的方法計算,至少要花幾百甚至上千個指令周期,而且得到的結(jié)果精度也差。
2.2 非線性插值
在單片機應(yīng)用中會遇到非線性元件,例如熱敏電阻的電阻-溫度特性、斷路器的保護特性等都是非線性關(guān)系。這里以斷路器的保護特性為例,說明自動編程的應(yīng)用。假設(shè)現(xiàn)在要仿真的斷路器的特性為雙曲線,如圖1所示。
據(jù)此,可以設(shè)延時時間與電流的關(guān)系為
(I+I0)(t+t0)=K
(1)
由圖1的三個點可以得到以下聯(lián)立方程組:
(I+20)(t+33)=K
(I+40)(t+20)=K (2)
(I+90)(t+10)=K
采用迭代法解得I0=11.111 1,t0=0.222
2,K=1 033.58,代入式(1)得
t=[1 033.58/(I+11.111 1)]-0.222
2 (3)
現(xiàn)在假設(shè)在硬件線路中,電流信號是轉(zhuǎn)換為電壓信號經(jīng)A/D后得到的,其相應(yīng)點的關(guān)系為:0A→0V,100A→3V,A/D為8位,A/D參考電壓為5V。轉(zhuǎn)換計算首先將A/D值轉(zhuǎn)換為對應(yīng)的電壓值,再將電壓值轉(zhuǎn)換為對應(yīng)的電流值I,再根據(jù)式(3)求相應(yīng)的延時時間T,最后將延時時間T再轉(zhuǎn)換為延時的間常數(shù)T0。T0按式(4)計算:
(256-t0)·Tcy·K=T (4)
t0=256-t/(Tcy·K) (5)
其中,Tcy為指令周期,在4MHz晶振時,Tcy=1μs;K為預(yù)分頻系數(shù);t為欲延時的時間,單位為μs。
晶振相關(guān)文章:晶振原理
評論